Tri parcours par numero et code; améliore table description semestre.

This commit is contained in:
Emmanuel Viennet 2023-06-03 23:18:54 +02:00
parent fb4cabee3b
commit 0322603a22
3 changed files with 19 additions and 5 deletions

View File

@ -55,7 +55,7 @@ class Module(db.Model):
secondary=parcours_modules, secondary=parcours_modules,
lazy="subquery", lazy="subquery",
backref=db.backref("modules", lazy=True), backref=db.backref("modules", lazy=True),
order_by="ApcParcours.numero", order_by="ApcParcours.numero, ApcParcours.code",
) )
app_critiques = db.relationship( app_critiques = db.relationship(

View File

@ -58,7 +58,10 @@ class UniteEns(db.Model):
# Une UE appartient soit à tous les parcours (tronc commun), soit à un sous-ensemble # Une UE appartient soit à tous les parcours (tronc commun), soit à un sous-ensemble
parcours = db.relationship( parcours = db.relationship(
ApcParcours, secondary="ue_parcours", backref=db.backref("ues", lazy=True) ApcParcours,
secondary="ue_parcours",
backref=db.backref("ues", lazy=True),
order_by="ApcParcours.numero, ApcParcours.code",
) )
# relations # relations

View File

@ -594,6 +594,7 @@ def formsemestre_description_table(
formsemestre: FormSemestre = FormSemestre.query.filter_by( formsemestre: FormSemestre = FormSemestre.query.filter_by(
id=formsemestre_id, dept_id=g.scodoc_dept_id id=formsemestre_id, dept_id=g.scodoc_dept_id
).first_or_404() ).first_or_404()
is_apc = formsemestre.formation.is_apc()
nt: NotesTableCompat = res_sem.load_formsemestre_results(formsemestre) nt: NotesTableCompat = res_sem.load_formsemestre_results(formsemestre)
use_ue_coefs = sco_preferences.get_preference("use_ue_coefs", formsemestre_id) use_ue_coefs = sco_preferences.get_preference("use_ue_coefs", formsemestre_id)
parcours = codes_cursus.get_cursus_from_code(formsemestre.formation.type_parcours) parcours = codes_cursus.get_cursus_from_code(formsemestre.formation.type_parcours)
@ -607,7 +608,7 @@ def formsemestre_description_table(
else: else:
ues = formsemestre.get_ues() ues = formsemestre.get_ues()
columns_ids += [f"ue_{ue.id}" for ue in ues] columns_ids += [f"ue_{ue.id}" for ue in ues]
if sco_preferences.get_preference("bul_show_ects", formsemestre_id): if sco_preferences.get_preference("bul_show_ects", formsemestre_id) and not is_apc:
columns_ids += ["ects"] columns_ids += ["ects"]
columns_ids += ["Inscrits", "Responsable", "Enseignants"] columns_ids += ["Inscrits", "Responsable", "Enseignants"]
if with_evals: if with_evals:
@ -634,6 +635,7 @@ def formsemestre_description_table(
sum_coef = 0 sum_coef = 0
sum_ects = 0 sum_ects = 0
last_ue_id = None last_ue_id = None
formsemestre_parcours_ids = {p.id for p in formsemestre.parcours}
for modimpl in formsemestre.modimpls_sorted: for modimpl in formsemestre.modimpls_sorted:
# Ligne UE avec ECTS: # Ligne UE avec ECTS:
ue = modimpl.module.ue ue = modimpl.module.ue
@ -660,7 +662,7 @@ def formsemestre_description_table(
ue_info[ ue_info[
f"_{k}_td_attrs" f"_{k}_td_attrs"
] = f'style="background-color: {ue.color} !important;"' ] = f'style="background-color: {ue.color} !important;"'
if not formsemestre.formation.is_apc(): if not is_apc:
# n'affiche la ligne UE qu'en formation classique # n'affiche la ligne UE qu'en formation classique
# car l'UE de rattachement n'a pas d'intérêt en BUT # car l'UE de rattachement n'a pas d'intérêt en BUT
rows.append(ue_info) rows.append(ue_info)
@ -701,8 +703,17 @@ def formsemestre_description_table(
for ue in ues: for ue in ues:
row[f"ue_{ue.id}"] = coef_dict.get(ue.id, 0.0) or "" row[f"ue_{ue.id}"] = coef_dict.get(ue.id, 0.0) or ""
if with_parcours: if with_parcours:
# Intersection des parcours du module avec ceux du formsemestre
row["parcours"] = ", ".join( row["parcours"] = ", ".join(
sorted([pa.code for pa in modimpl.module.parcours]) [
pa.code
for pa in (
modimpl.module.parcours
if modimpl.module.parcours
else modimpl.formsemestre.parcours
)
if pa.id in formsemestre_parcours_ids
]
) )
rows.append(row) rows.append(row)