Fix: edition de formations migrées (non affichages de certains modules)
This commit is contained in:
parent
0c57aa83ca
commit
f2e9fbb8cd
@ -97,14 +97,18 @@ class Formation(db.Model):
|
||||
for sem in self.formsemestres:
|
||||
sco_cache.invalidate_formsemestre(formsemestre_id=sem.id)
|
||||
|
||||
def force_semestre_modules_aux_ues(self) -> None:
|
||||
def sanitize_old_formation(self) -> None:
|
||||
"""
|
||||
Affecte à chaque module de cette formation le semestre de son UE de rattachement,
|
||||
Corrige si nécessaire certains champs issus d'anciennes versions de ScoDoc:
|
||||
- affecte à chaque module de cette formation le semestre de son UE de rattachement,
|
||||
si elle en a une.
|
||||
- si le module_type n'est pas renseigné, le met à STANDARD.
|
||||
|
||||
Devrait être appelé lorsqu'on change le type de formation vers le BUT, et aussi
|
||||
lorsqu'on change le semestre d'une UE BUT.
|
||||
Utile pour la migration des anciennes formations vers le BUT.
|
||||
Invalide les caches coefs/poids.
|
||||
|
||||
En cas de changement, invalide les caches coefs/poids.
|
||||
"""
|
||||
if not self.is_apc():
|
||||
return
|
||||
@ -118,6 +122,10 @@ class Formation(db.Model):
|
||||
mod.semestre_id = mod.ue.semestre_idx
|
||||
db.session.add(mod)
|
||||
change = True
|
||||
if mod.module_type is None:
|
||||
mod.module_type = scu.ModuleType.STANDARD
|
||||
db.session.add(mod)
|
||||
change = True
|
||||
db.session.commit()
|
||||
if change:
|
||||
self.invalidate_module_coefs()
|
||||
|
@ -46,7 +46,10 @@ class UniteEns(db.Model):
|
||||
modules = db.relationship("Module", lazy="dynamic", backref="ue")
|
||||
|
||||
def __repr__(self):
|
||||
return f"<{self.__class__.__name__}(id={self.id}, formation_id={self.formation_id}, acronyme='{self.acronyme}')>"
|
||||
return f"""<{self.__class__.__name__}(id={self.id}, formation_id={
|
||||
self.formation_id}, acronyme='{self.acronyme}', semestre_idx={
|
||||
self.semestre_idx} {
|
||||
'EXTERNE' if self.is_external else ''})>"""
|
||||
|
||||
def to_dict(self):
|
||||
"""as a dict, with the same conversions as in ScoDoc7"""
|
||||
|
@ -62,7 +62,8 @@ def html_edit_formation_apc(
|
||||
else:
|
||||
semestre_ids = [semestre_idx]
|
||||
other_modules = formation.modules.filter(
|
||||
Module.module_type != ModuleType.SAE, Module.module_type != ModuleType.RESSOURCE
|
||||
Module.module_type.is_distinct_from(ModuleType.SAE),
|
||||
Module.module_type.is_distinct_from(ModuleType.RESSOURCE),
|
||||
).order_by(
|
||||
Module.semestre_id, Module.module_type.desc(), Module.numero, Module.code
|
||||
)
|
||||
|
@ -304,9 +304,9 @@ def do_formation_edit(args):
|
||||
|
||||
cnx = ndb.GetDBConnexion()
|
||||
sco_formations._formationEditor.edit(cnx, args)
|
||||
formation = Formation.query.get(args["formation_id"])
|
||||
formation: Formation = Formation.query.get(args["formation_id"])
|
||||
formation.invalidate_cached_sems()
|
||||
formation.force_semestre_modules_aux_ues()
|
||||
formation.sanitize_old_formation()
|
||||
|
||||
|
||||
def module_move(module_id, after=0, redirect=True):
|
||||
|
@ -504,12 +504,12 @@ def ue_table(formation_id=None, semestre_idx=1, msg=""): # was ue_list
|
||||
"""Liste des matières et modules d'une formation, avec liens pour
|
||||
éditer (si non verrouillée).
|
||||
"""
|
||||
from app.scodoc import sco_formations
|
||||
from app.scodoc import sco_formsemestre_validation
|
||||
|
||||
formation = Formation.query.get(formation_id)
|
||||
formation: Formation = Formation.query.get(formation_id)
|
||||
if not formation:
|
||||
raise ScoValueError("invalid formation_id")
|
||||
formation.sanitize_old_formation()
|
||||
parcours = formation.get_parcours()
|
||||
is_apc = parcours.APC_SAE
|
||||
locked = formation.has_locked_sems()
|
||||
@ -1205,7 +1205,7 @@ def do_ue_edit(args, bypass_lock=False, dont_invalidate_cache=False):
|
||||
if not dont_invalidate_cache:
|
||||
# Invalide les semestres utilisant cette formation:
|
||||
formation.invalidate_cached_sems()
|
||||
formation.force_semestre_modules_aux_ues()
|
||||
formation.sanitize_old_formation()
|
||||
|
||||
|
||||
# essai edition en ligne:
|
||||
|
Loading…
Reference in New Issue
Block a user