From 7194dee09f19b12f60895b22225eb9bed99f02ce Mon Sep 17 00:00:00 2001 From: viennet Date: Wed, 16 Dec 2020 00:47:38 +0100 Subject: [PATCH 1/2] Regression bug fix: Set --- sco_parcours_dut.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/sco_parcours_dut.py b/sco_parcours_dut.py index d45309c5..680f9be2 100644 --- a/sco_parcours_dut.py +++ b/sco_parcours_dut.py @@ -27,13 +27,9 @@ """Semestres: gestion parcours DUT (Arreté du 13 août 2005) """ -import urllib, time, datetime - from notesdb import * -from sco_utils import * from notes_log import log from scolog import logdb -from notes_table import * import sco_formsemestre from sco_codes_parcours import * from dutrules import DUTRules # regles generees a partir du CSV @@ -264,7 +260,7 @@ class SituationEtudParcoursGeneric: return False # pas de semestre décalés if n == NO_SEMESTRE_ID or n > self.parcours.NB_SEM - 2: return False # n+2 en dehors du parcours - if self._sem_list_validated(Set(range(1, n))): + if self._sem_list_validated(set(range(1, n))): # antérieurs validé, teste suivant n1 = n + 1 for sem in self.get_semestres(): @@ -426,7 +422,7 @@ class SituationEtudParcoursGeneric: if not cur or cur["formsemestre_id"] != self.formsemestre_id: log( "*** SituationEtudParcours: search_prev: cur not found (formsemestre_id=%s, etudid=%s)" - % (formsemestre_id, etudid) + % (self.formsemestre_id, self.etudid) ) return None # pas de semestre courant !!! # Cherche semestre antérieur de même formation (code) et semestre_id precedent @@ -602,7 +598,7 @@ class SituationEtudParcoursGeneric: self.prev["formsemestre_id"], self.etudid, decision.new_code_prev, - decision.assiduite, # XXX attention: en toute rigueur il faudrait utiliser une indication de l'assiduite au sem. precedent, que nous n'avons pas... + decision.assiduite, # attention: en toute rigueur il faudrait utiliser une indication de l'assiduite au sem. precedent, que nous n'avons pas... REQUEST=REQUEST, ) From 99d5d2efd73a37fe1296beb7157e8f9f8244e921 Mon Sep 17 00:00:00 2001 From: viennet Date: Wed, 16 Dec 2020 01:34:08 +0100 Subject: [PATCH 2/2] Fix: ignore obsolete preferences when cloning a formsemestre --- sco_formsemestre_edit.py | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/sco_formsemestre_edit.py b/sco_formsemestre_edit.py index f1796cfb..467d1159 100644 --- a/sco_formsemestre_edit.py +++ b/sco_formsemestre_edit.py @@ -101,8 +101,7 @@ def formsemestre_editwithmodules(context, REQUEST, formsemestre_id): def can_edit_sem(context, REQUEST, formsemestre_id="", sem=None): - """Return sem if user can edit it, False otherwise - """ + """Return sem if user can edit it, False otherwise""" sem = sem or sco_formsemestre.get_formsemestre(context, formsemestre_id) authuser = REQUEST.AUTHENTICATED_USER if not authuser.has_permission(ScoImplement, context): # pas chef @@ -643,7 +642,7 @@ def do_formsemestre_createwithmodules(context, REQUEST=None, edit=False): [tf[2]["etape_apo" + str(n)] for n in range(0, EDIT_NB_ETAPES + 1)] ): msg = '' - + if tf[0] == 0 or msg: return ( '

Formation %(titre)s (%(acronyme)s), version %(version)d, code %(formation_code)s

' @@ -808,9 +807,9 @@ def do_formsemestre_createwithmodules(context, REQUEST=None, edit=False): def formsemestre_delete_moduleimpls(context, formsemestre_id, module_ids_to_del): """Delete moduleimpls - module_ids_to_del: list of module_id (warning: not moduleimpl) - Moduleimpls must have no associated evaluations. - """ + module_ids_to_del: list of module_id (warning: not moduleimpl) + Moduleimpls must have no associated evaluations. + """ ok = True msg = [] for module_id in module_ids_to_del: @@ -970,7 +969,7 @@ def do_formsemestre_clone( REQUEST=None, ): """Clone a semestre: make copy, same modules, same options, same resps, same partitions. - New dates, responsable_id + New dates, responsable_id """ log("cloning %s" % orig_formsemestre_id) orig_sem = sco_formsemestre.get_formsemestre(context, orig_formsemestre_id) @@ -1023,7 +1022,10 @@ def do_formsemestre_clone( for pname in prefs.base_prefs.prefs[orig_formsemestre_id]: if not prefs.is_global(pname): pvalue = prefs[pname] - prefs.base_prefs.set(formsemestre_id, pname, pvalue) + try: + prefs.base_prefs.set(formsemestre_id, pname, pvalue) + except: + log("do_formsemestre_clone: ignoring old preference %s" % pname) # 5- Copy formules utilisateur objs = sco_compute_moy.formsemestre_ue_computation_expr_list( @@ -1136,7 +1138,7 @@ def formsemestre_associate_new_version( def do_formsemestres_associate_new_version(context, formsemestre_ids, REQUEST=None): """Cree une nouvelle version de la formation du semestre, et y rattache les semestres. - Tous les moduleimpl sont ré-associés à la nouvelle formation, ainsi que les decisions de jury + Tous les moduleimpl sont ré-associés à la nouvelle formation, ainsi que les decisions de jury si elles existent (codes d'UE validées). Les semestre doivent tous appartenir à la meme version de la formation """ @@ -1426,8 +1428,7 @@ def formsemestre_change_lock( def formsemestre_change_publication_bul( context, formsemestre_id, REQUEST=None, dialog_confirmed=False ): - """Change etat publication bulletins sur portail - """ + """Change etat publication bulletins sur portail""" ok, err = context._check_access_diretud(formsemestre_id, REQUEST) if not ok: return err @@ -1479,8 +1480,7 @@ formsemestre_uecoef_delete = _formsemestre_uecoef_editor.delete def formsemestre_edit_uecoefs(context, formsemestre_id, err_ue_id=None, REQUEST=None): - """Changement manuel des coefficients des UE capitalisées. - """ + """Changement manuel des coefficients des UE capitalisées.""" context = context.Notes # si appele d'en haut, eg par exception ScoValueError ok, err = context._check_access_diretud(formsemestre_id, REQUEST) if not ok: @@ -1669,14 +1669,14 @@ def get_formsemestre_session_id(context, sem, F, parcours): Exemple: RT-DUT-FI-S1-ANNEE DEPT-TYPE-MODALITE+-S?|SPECIALITE - + TYPE=DUT|LP*|M* MODALITE=FC|FI|FA (si plusieurs, en inverse alpha) - + SPECIALITE=[A-Z]+ EON,ASSUR, ... (si pas Sn ou SnD) ANNEE=annee universitaire de debut (exemple: un S2 de 2013-2014 sera S2-2013) - + """ # sem = sco_formsemestre.get_formsemestre(context, formsemestre_id) # F = context.formation_list( args={ 'formation_id' : sem['formation_id'] } )[0]