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:
|
for sem in self.formsemestres:
|
||||||
sco_cache.invalidate_formsemestre(formsemestre_id=sem.id)
|
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 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
|
Devrait être appelé lorsqu'on change le type de formation vers le BUT, et aussi
|
||||||
lorsqu'on change le semestre d'une UE BUT.
|
lorsqu'on change le semestre d'une UE BUT.
|
||||||
Utile pour la migration des anciennes formations vers le 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():
|
if not self.is_apc():
|
||||||
return
|
return
|
||||||
@ -118,6 +122,10 @@ class Formation(db.Model):
|
|||||||
mod.semestre_id = mod.ue.semestre_idx
|
mod.semestre_id = mod.ue.semestre_idx
|
||||||
db.session.add(mod)
|
db.session.add(mod)
|
||||||
change = True
|
change = True
|
||||||
|
if mod.module_type is None:
|
||||||
|
mod.module_type = scu.ModuleType.STANDARD
|
||||||
|
db.session.add(mod)
|
||||||
|
change = True
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
if change:
|
if change:
|
||||||
self.invalidate_module_coefs()
|
self.invalidate_module_coefs()
|
||||||
|
@ -46,7 +46,10 @@ class UniteEns(db.Model):
|
|||||||
modules = db.relationship("Module", lazy="dynamic", backref="ue")
|
modules = db.relationship("Module", lazy="dynamic", backref="ue")
|
||||||
|
|
||||||
def __repr__(self):
|
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):
|
def to_dict(self):
|
||||||
"""as a dict, with the same conversions as in ScoDoc7"""
|
"""as a dict, with the same conversions as in ScoDoc7"""
|
||||||
|
@ -62,7 +62,8 @@ def html_edit_formation_apc(
|
|||||||
else:
|
else:
|
||||||
semestre_ids = [semestre_idx]
|
semestre_ids = [semestre_idx]
|
||||||
other_modules = formation.modules.filter(
|
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(
|
).order_by(
|
||||||
Module.semestre_id, Module.module_type.desc(), Module.numero, Module.code
|
Module.semestre_id, Module.module_type.desc(), Module.numero, Module.code
|
||||||
)
|
)
|
||||||
|
@ -304,9 +304,9 @@ def do_formation_edit(args):
|
|||||||
|
|
||||||
cnx = ndb.GetDBConnexion()
|
cnx = ndb.GetDBConnexion()
|
||||||
sco_formations._formationEditor.edit(cnx, args)
|
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.invalidate_cached_sems()
|
||||||
formation.force_semestre_modules_aux_ues()
|
formation.sanitize_old_formation()
|
||||||
|
|
||||||
|
|
||||||
def module_move(module_id, after=0, redirect=True):
|
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
|
"""Liste des matières et modules d'une formation, avec liens pour
|
||||||
éditer (si non verrouillée).
|
éditer (si non verrouillée).
|
||||||
"""
|
"""
|
||||||
from app.scodoc import sco_formations
|
|
||||||
from app.scodoc import sco_formsemestre_validation
|
from app.scodoc import sco_formsemestre_validation
|
||||||
|
|
||||||
formation = Formation.query.get(formation_id)
|
formation: Formation = Formation.query.get(formation_id)
|
||||||
if not formation:
|
if not formation:
|
||||||
raise ScoValueError("invalid formation_id")
|
raise ScoValueError("invalid formation_id")
|
||||||
|
formation.sanitize_old_formation()
|
||||||
parcours = formation.get_parcours()
|
parcours = formation.get_parcours()
|
||||||
is_apc = parcours.APC_SAE
|
is_apc = parcours.APC_SAE
|
||||||
locked = formation.has_locked_sems()
|
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:
|
if not dont_invalidate_cache:
|
||||||
# Invalide les semestres utilisant cette formation:
|
# Invalide les semestres utilisant cette formation:
|
||||||
formation.invalidate_cached_sems()
|
formation.invalidate_cached_sems()
|
||||||
formation.force_semestre_modules_aux_ues()
|
formation.sanitize_old_formation()
|
||||||
|
|
||||||
|
|
||||||
# essai edition en ligne:
|
# essai edition en ligne:
|
||||||
|
Loading…
Reference in New Issue
Block a user