forked from ScoDoc/ScoDoc
New-Style Classes
This commit is contained in:
parent
510e6dc9c7
commit
8d8b8a3ae9
@ -113,7 +113,7 @@ def TrivialFormulator(
|
||||
return res, form, t.result
|
||||
|
||||
|
||||
class TF:
|
||||
class TF(object):
|
||||
def __init__(
|
||||
self,
|
||||
form_url,
|
||||
|
@ -92,7 +92,7 @@ def go_dept(app, dept, verbose=True):
|
||||
raise ValueError("dep %s not found" % dept)
|
||||
|
||||
|
||||
class FakeUser:
|
||||
class FakeUser(object):
|
||||
def __init__(self, name):
|
||||
self.name = name
|
||||
|
||||
@ -106,7 +106,7 @@ class FakeUser:
|
||||
return True
|
||||
|
||||
|
||||
class DummyResponse:
|
||||
class DummyResponse(object):
|
||||
"""Emulation vide de Reponse http Zope"""
|
||||
|
||||
def __init__(self):
|
||||
@ -120,7 +120,7 @@ class DummyResponse:
|
||||
self.redirected = url
|
||||
|
||||
|
||||
class DummyRequest:
|
||||
class DummyRequest(object):
|
||||
"""Emulation vide de Request Zope"""
|
||||
|
||||
def __init__(self):
|
||||
|
@ -72,7 +72,7 @@ def mark_paras(L, tags):
|
||||
return L
|
||||
|
||||
|
||||
class DEFAULT_TABLE_PREFERENCES:
|
||||
class DEFAULT_TABLE_PREFERENCES(object):
|
||||
"""Default preferences for tables created without preferences argument"""
|
||||
|
||||
values = {
|
||||
@ -85,7 +85,7 @@ class DEFAULT_TABLE_PREFERENCES:
|
||||
return self.values[k]
|
||||
|
||||
|
||||
class GenTable:
|
||||
class GenTable(object):
|
||||
"""Simple 2D tables with export to HTML, PDF, Excel, CSV.
|
||||
Can be sub-classed to generate fancy formats.
|
||||
"""
|
||||
@ -679,7 +679,7 @@ class GenTable:
|
||||
|
||||
|
||||
# -----
|
||||
class SeqGenTable:
|
||||
class SeqGenTable(object):
|
||||
"""Sequence de GenTable: permet de générer un classeur excel avec un tab par table.
|
||||
L'ordre des tabs est conservé (1er tab == 1ere table ajoutée)
|
||||
"""
|
||||
|
@ -20,7 +20,7 @@ DEFAULT_LOG_DIR = "/tmp" # clients should call set_log_directory to change this
|
||||
ALARM_DESTINATION = "emmanuel.viennet@univ-paris13.fr" # XXX a mettre en preference
|
||||
|
||||
|
||||
class _logguer:
|
||||
class _logguer(object):
|
||||
def __init__(self):
|
||||
self.file = None
|
||||
self.directory = None
|
||||
|
@ -153,7 +153,7 @@ def comp_etud_sum_coef_modules_ue(context, formsemestre_id, etudid, ue_id):
|
||||
return s
|
||||
|
||||
|
||||
class NotesTable:
|
||||
class NotesTable(object):
|
||||
"""Une NotesTable représente un tableau de notes pour un semestre de formation.
|
||||
Les colonnes sont des modules.
|
||||
Les lignes des étudiants.
|
||||
|
@ -253,7 +253,7 @@ def DBDelete(cnx, table, colid, val, commit=False):
|
||||
# REQN = 0
|
||||
|
||||
|
||||
class EditableTable:
|
||||
class EditableTable(object):
|
||||
"""--- generic class: SQL table with create/edit/list/delete"""
|
||||
|
||||
def __init__(
|
||||
|
@ -85,7 +85,7 @@ def comp_nom_semestre_dans_parcours(context, sem):
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------------------------
|
||||
class JuryPE:
|
||||
class JuryPE(object):
|
||||
"""Classe memorisant toutes les informations necessaires pour etablir un jury de PE. Modele
|
||||
base sur NotesTable
|
||||
|
||||
|
@ -42,7 +42,7 @@ import datetime
|
||||
from app.scodoc import notes_table
|
||||
|
||||
|
||||
class TableTag:
|
||||
class TableTag(object):
|
||||
"""
|
||||
Classe mémorisant les moyennes des étudiants à différents tag et permettant de calculer les rangs et les statistiques :
|
||||
- nom : Nom représentatif des données de la Table
|
||||
|
@ -84,7 +84,7 @@ def MonthNbDays(month, year):
|
||||
return 30
|
||||
|
||||
|
||||
class ddmmyyyy:
|
||||
class ddmmyyyy(object):
|
||||
"""immutable dates"""
|
||||
|
||||
def __init__(self, date=None, fmt="ddmmyyyy", work_saturday=False):
|
||||
@ -987,7 +987,7 @@ def MonthTableBody(
|
||||
# absences à une date donnée).
|
||||
#
|
||||
# --------------------------------------------------------------------
|
||||
class CAbsSemEtud:
|
||||
class CAbsSemEtud(object):
|
||||
"""Comptes d'absences d'un etudiant dans un semestre"""
|
||||
|
||||
def __init__(self, context, sem, etudid):
|
||||
|
@ -220,7 +220,7 @@ class DictCol(dict):
|
||||
pass
|
||||
|
||||
|
||||
class ApoElt:
|
||||
class ApoElt(object):
|
||||
"""Definition d'un Element Apogee
|
||||
sur plusieurs colonnes du fichier CSV
|
||||
"""
|
||||
@ -248,7 +248,7 @@ class ApoElt:
|
||||
return "ApoElt(code='%s', cols=%s)" % (self.code, pprint.pformat(self.cols))
|
||||
|
||||
|
||||
class EtuCol:
|
||||
class EtuCol(object):
|
||||
"""Valeurs colonnes d'un element pour un etudiant"""
|
||||
|
||||
def __init__(self, nip, apo_elt, init_vals):
|
||||
@ -669,7 +669,7 @@ class ApoEtud(dict):
|
||||
return cur_sem, autre_sem
|
||||
|
||||
|
||||
class ApoData:
|
||||
class ApoData(object):
|
||||
def __init__(
|
||||
self,
|
||||
data,
|
||||
|
@ -70,7 +70,7 @@ from app.scodoc import sco_pvjury
|
||||
from app.scodoc import sco_pvpdf
|
||||
|
||||
|
||||
class BaseArchiver:
|
||||
class BaseArchiver(object):
|
||||
def __init__(self, archive_type=""):
|
||||
dirs = [Config.INSTANCE_HOME, "var", "scodoc", "archives"]
|
||||
if archive_type:
|
||||
|
@ -130,7 +130,7 @@ BACS_SSP = {(t[0], t[1]): t[2:] for t in _BACS}
|
||||
BACS_S = {t[0]: t[2:] for t in _BACS}
|
||||
|
||||
|
||||
class Baccalaureat:
|
||||
class Baccalaureat(object):
|
||||
def __init__(self, bac, specialite=""):
|
||||
self.bac = bac
|
||||
self.specialite = specialite
|
||||
|
@ -97,7 +97,7 @@ def bulletin_get_class_name_displayed(context, formsemestre_id):
|
||||
return "invalide ! (voir paramètres)"
|
||||
|
||||
|
||||
class BulletinGenerator:
|
||||
class BulletinGenerator(object):
|
||||
"Virtual superclass for PDF bulletin generators" ""
|
||||
# Here some helper methods
|
||||
# see sco_bulletins_standard.BulletinGeneratorStandard subclass for real methods
|
||||
|
@ -387,7 +387,7 @@ class BulletinGeneratorLegacy(sco_bulletins_generator.BulletinGenerator):
|
||||
sco_bulletins_generator.register_bulletin_class(BulletinGeneratorLegacy)
|
||||
|
||||
|
||||
class BulTableStyle:
|
||||
class BulTableStyle(object):
|
||||
"""Construction du style de tables reportlab platypus pour les bulletins "classiques" """
|
||||
|
||||
LINEWIDTH = 0.5
|
||||
|
@ -32,7 +32,7 @@
|
||||
import time
|
||||
|
||||
# Cache data
|
||||
class simpleCache:
|
||||
class simpleCache(object):
|
||||
def __init__(self):
|
||||
self.cache = {}
|
||||
self.inval_cache() # >
|
||||
|
@ -171,7 +171,7 @@ DEVENIRS_NEXT2 = {NEXT_OR_NEXT2: 1, NEXT2: 1}
|
||||
NO_SEMESTRE_ID = -1 # code semestre si pas de semestres
|
||||
|
||||
# Regles gestion parcours
|
||||
class DUTRule:
|
||||
class DUTRule(object):
|
||||
def __init__(self, rule_id, premise, conclusion):
|
||||
self.rule_id = rule_id
|
||||
self.premise = premise
|
||||
@ -196,7 +196,7 @@ class DUTRule:
|
||||
DEFAULT_TYPE_PARCOURS = 100 # pour le menu de creation nouvelle formation
|
||||
|
||||
|
||||
class TypeParcours:
|
||||
class TypeParcours(object):
|
||||
TYPE_PARCOURS = None # id, utilisé par notes_formation.type_parcours
|
||||
NAME = None # required
|
||||
NB_SEM = 1 # Nombre de semestres
|
||||
@ -213,7 +213,9 @@ class TypeParcours:
|
||||
UNUSED_CODES = set() # Ensemble des codes jury non autorisés dans ce parcours
|
||||
UE_IS_MODULE = False # 1 seul module par UE (si plusieurs modules, etudiants censéments inscrits à un seul d'entre eux)
|
||||
ECTS_ONLY = False # Parcours avec progression basée uniquement sur les ECTS
|
||||
ALLOWED_UE_TYPES = list(UE_TYPE_NAME.keys()) # par defaut, autorise tous les types d'UE
|
||||
ALLOWED_UE_TYPES = list(
|
||||
UE_TYPE_NAME.keys()
|
||||
) # par defaut, autorise tous les types d'UE
|
||||
|
||||
def check(self, formation=None):
|
||||
return True, "" # status, diagnostic_message
|
||||
|
@ -35,7 +35,7 @@ def get_evaluations_cache(context):
|
||||
return CACHE_evaluations[u]
|
||||
|
||||
|
||||
class CacheNotesTable:
|
||||
class CacheNotesTable(object):
|
||||
"""gestion rudimentaire de cache pour les NotesTables"""
|
||||
|
||||
def __init__(self):
|
||||
@ -191,7 +191,12 @@ class CacheNotesTable:
|
||||
if r:
|
||||
log(
|
||||
"get_bulletins_pdf(%s): cache hit %s (id=%s, thread=%s)"
|
||||
% (version, formsemestre_id, id(self), six.moves._thread.get_ident())
|
||||
% (
|
||||
version,
|
||||
formsemestre_id,
|
||||
id(self),
|
||||
six.moves._thread.get_ident(),
|
||||
)
|
||||
)
|
||||
return r
|
||||
finally:
|
||||
|
@ -125,7 +125,7 @@ FLAG = {
|
||||
}
|
||||
|
||||
|
||||
class DataEtudiant:
|
||||
class DataEtudiant(object):
|
||||
"""
|
||||
Structure de donnée des informations pour un étudiant
|
||||
"""
|
||||
@ -230,7 +230,7 @@ def entete_liste_etudiant():
|
||||
"""
|
||||
|
||||
|
||||
class EtapeBilan:
|
||||
class EtapeBilan(object):
|
||||
"""
|
||||
Structure de donnée représentation l'état global de la comparaison ScoDoc/Apogée
|
||||
"""
|
||||
|
@ -576,7 +576,7 @@ admission_list = _admissionEditor.list
|
||||
admission_edit = _admissionEditor.edit
|
||||
|
||||
# Edition simultanee de identite et admission
|
||||
class EtudIdentEditor:
|
||||
class EtudIdentEditor(object):
|
||||
def create(self, cnx, args, context=None, REQUEST=None):
|
||||
etudid = identite_create(cnx, args, context, REQUEST)
|
||||
args["etudid"] = etudid
|
||||
|
@ -179,7 +179,7 @@ def Excel_MakeStyle(
|
||||
return style
|
||||
|
||||
|
||||
class ScoExcelSheet:
|
||||
class ScoExcelSheet(object):
|
||||
def __init__(self, sheet_name="feuille", default_style=None):
|
||||
self.sheet_name = sheet_name
|
||||
self.cells = [] # list of list
|
||||
|
@ -386,7 +386,7 @@ def _write_formsemestre_aux(context, sem, fieldname, valuename):
|
||||
|
||||
|
||||
# ------ Utilisé pour stocker le VDI avec le code étape (noms de fichiers maquettes et code semestres)
|
||||
class ApoEtapeVDI:
|
||||
class ApoEtapeVDI(object):
|
||||
_ETAPE_VDI_SEP = "!"
|
||||
|
||||
def __init__(self, etape_vdi=None, etape="", vdi=""):
|
||||
|
@ -1517,7 +1517,7 @@ def make_query_groups(group_ids):
|
||||
return ""
|
||||
|
||||
|
||||
class GroupIdInferer:
|
||||
class GroupIdInferer(object):
|
||||
"""Sert à retrouver l'id d'un groupe dans un semestre donné
|
||||
à partir de son nom.
|
||||
Attention: il peut y avoir plusieurs groupes de même nom
|
||||
|
@ -295,7 +295,7 @@ if (group_id) {
|
||||
return "\n".join(H)
|
||||
|
||||
|
||||
class DisplayedGroupsInfos:
|
||||
class DisplayedGroupsInfos(object):
|
||||
"""Container with attributes describing groups to display in the page
|
||||
.groups_query_args : 'group_ids=xxx&group_ids=yyy'
|
||||
.base_url : url de la requete, avec les groupes, sans les autres paramètres
|
||||
|
@ -130,7 +130,7 @@ def scolar_news_summary(context, n=5):
|
||||
|
||||
news = list(selected_news.values())
|
||||
# sort by date, descending
|
||||
news.sort(itemgetter("date"), reverse=True)
|
||||
news.sort(key=itemgetter("date"), reverse=True)
|
||||
news = news[:n]
|
||||
# mimic EditableTable.list output formatting:
|
||||
for n in news:
|
||||
|
@ -63,7 +63,7 @@ from app.scodoc.dutrules import DUTRules # regles generees a partir du CSV
|
||||
from app.scodoc.sco_exceptions import ScoValueError
|
||||
|
||||
|
||||
class DecisionSem:
|
||||
class DecisionSem(object):
|
||||
"Decision prenable pour un semestre"
|
||||
|
||||
def __init__(
|
||||
@ -116,7 +116,7 @@ def SituationEtudParcours(context, etud, formsemestre_id):
|
||||
return SituationEtudParcoursGeneric(context, etud, formsemestre_id, nt)
|
||||
|
||||
|
||||
class SituationEtudParcoursGeneric:
|
||||
class SituationEtudParcoursGeneric(object):
|
||||
"Semestre dans un parcours"
|
||||
|
||||
def __init__(self, context, etud, formsemestre_id, nt):
|
||||
|
@ -334,7 +334,7 @@ def pdf_basic_page(
|
||||
import threading, time, six.moves.queue, six.moves._thread
|
||||
|
||||
|
||||
class PDFLock:
|
||||
class PDFLock(object):
|
||||
def __init__(self, timeout=15):
|
||||
self.Q = six.moves.queue.Queue(1)
|
||||
self.timeout = timeout
|
||||
|
@ -40,7 +40,7 @@ _SCO_PERMISSIONS = (
|
||||
)
|
||||
|
||||
|
||||
class Permission:
|
||||
class Permission(object):
|
||||
"Permissions for ScoDoc"
|
||||
NBITS = 1 # maximum bits used (for formatting)
|
||||
ALL_PERMISSIONS = [-1]
|
||||
|
@ -50,7 +50,7 @@ def has_portal(context):
|
||||
return get_portal_url(context)
|
||||
|
||||
|
||||
class PortalInterface:
|
||||
class PortalInterface(object):
|
||||
def __init__(self):
|
||||
self.warning = False
|
||||
|
||||
@ -157,10 +157,14 @@ def get_inscrits_etape(context, code_etape, anneeapogee=None, ntrials=2):
|
||||
req = (
|
||||
etud_url
|
||||
+ "?"
|
||||
+ six.moves.urllib.parse.urlencode((("etape", code_etape), ("annee", anneeapogee)))
|
||||
+ six.moves.urllib.parse.urlencode(
|
||||
(("etape", code_etape), ("annee", anneeapogee))
|
||||
)
|
||||
)
|
||||
else:
|
||||
req = etud_url + "?" + six.moves.urllib.parse.urlencode((("etape", code_etape),))
|
||||
req = (
|
||||
etud_url + "?" + six.moves.urllib.parse.urlencode((("etape", code_etape),))
|
||||
)
|
||||
actual_timeout = float(portal_timeout) / ntrials
|
||||
if portal_timeout > 0:
|
||||
actual_timeout = max(1, actual_timeout)
|
||||
@ -565,7 +569,9 @@ def get_maquette_apogee(context, etape="", annee_scolaire=""):
|
||||
req = (
|
||||
maquette_url
|
||||
+ "?"
|
||||
+ six.moves.urllib.parse.urlencode((("etape", etape), ("annee", annee_scolaire)))
|
||||
+ six.moves.urllib.parse.urlencode(
|
||||
(("etape", etape), ("annee", annee_scolaire))
|
||||
)
|
||||
)
|
||||
doc = scu.query_portal(req, timeout=portal_timeout)
|
||||
return doc
|
||||
|
@ -479,7 +479,7 @@ def table_suivi_cohorte(
|
||||
# 3-- Regroupe les semestres par date de debut
|
||||
P = [] # liste de periodsem
|
||||
|
||||
class periodsem:
|
||||
class periodsem(object):
|
||||
pass
|
||||
|
||||
# semestre de depart:
|
||||
|
@ -59,7 +59,7 @@ from app.scodoc.sco_permissions import Permission
|
||||
# module_tag_set( module_id, taglist ) -> modifie les tags
|
||||
|
||||
|
||||
class ScoTag:
|
||||
class ScoTag(object):
|
||||
"""Generic tags for ScoDoc"""
|
||||
|
||||
# must be overloaded:
|
||||
|
@ -204,7 +204,7 @@ class DictDefault(dict): # obsolete, use collections.defaultdict
|
||||
return value
|
||||
|
||||
|
||||
class WrapDict:
|
||||
class WrapDict(object):
|
||||
"""Wrap a dict so that getitem returns '' when values are None"""
|
||||
|
||||
def __init__(self, adict, NoneValue=""):
|
||||
|
@ -15,7 +15,7 @@
|
||||
# souvent de comprendre le code qui les utilise pour ne pas faire d'erreur: attention.
|
||||
|
||||
|
||||
class CFG:
|
||||
class CFG(object):
|
||||
pass
|
||||
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
# souvent de comprendre le code qui les utilise pour ne pas faire d'erreur: attention.
|
||||
|
||||
|
||||
class CFG:
|
||||
class CFG(object):
|
||||
pass
|
||||
|
||||
|
||||
|
@ -23,7 +23,12 @@ from config import Config
|
||||
from app.scodoc.sco_exceptions import ScoConfigurationError
|
||||
|
||||
|
||||
class ScoDeptDescription:
|
||||
class ScoDeptDescription(object):
|
||||
"""Description d'un département
|
||||
.dept_id : eg "RT"
|
||||
.db_uri : dept database URI
|
||||
"""
|
||||
|
||||
def __init__(self, filename):
|
||||
"""Read dept description from dept file"""
|
||||
if os.path.split(filename)[1][-4:] != ".cfg":
|
||||
|
@ -63,7 +63,7 @@ def logging_meth(func):
|
||||
return wrapper_logging_meth
|
||||
|
||||
|
||||
class ScoFake:
|
||||
class ScoFake(object):
|
||||
def __init__(self, context, verbose=True):
|
||||
self.context = context
|
||||
self.verbose = verbose
|
||||
|
Loading…
Reference in New Issue
Block a user