forked from ScoDoc/DocScoDoc
Couleurs par défaut des UEs
This commit is contained in:
parent
4469d61221
commit
a780b1e78a
@ -254,7 +254,10 @@ def ue_edit(ue_id=None, create=False, formation_id=None, default_semestre_idx=No
|
||||
else:
|
||||
ue = None
|
||||
title = "Création d'une UE"
|
||||
initvalues = {"semestre_idx": default_semestre_idx}
|
||||
initvalues = {
|
||||
"semestre_idx": default_semestre_idx,
|
||||
"color": ue_guess_color_default(formation_id, default_semestre_idx),
|
||||
}
|
||||
submitlabel = "Créer cette UE"
|
||||
can_change_semestre_id = True
|
||||
formation = Formation.query.get(formation_id)
|
||||
@ -577,14 +580,15 @@ def ue_table(formation_id=None, semestre_idx=1, msg=""): # was ue_list
|
||||
formation_id=formation_id, is_external=True
|
||||
)
|
||||
if is_apc:
|
||||
# pour faciliter la transition des anciens programmes non APC
|
||||
# Pour faciliter la transition des anciens programmes non APC
|
||||
for ue in ues_obj:
|
||||
ue.guess_semestre_idx()
|
||||
# vérifie qu'on a bien au moins une matière dans chaque UE
|
||||
for ue in ues_obj:
|
||||
# vérifie qu'on a bien au moins une matière dans chaque UE
|
||||
if ue.matieres.count() < 1:
|
||||
mat = Matiere(ue_id=ue.id)
|
||||
db.session.add(mat)
|
||||
# donne des couleurs aux UEs crées avant
|
||||
colorie_anciennes_ues(ues_obj)
|
||||
db.session.commit()
|
||||
ues = [ue.to_dict() for ue in ues_obj]
|
||||
ues_externes = [ue.to_dict() for ue in ues_externes_obj]
|
||||
@ -1400,7 +1404,7 @@ def formation_table_recap(formation_id, format="html"):
|
||||
return tab.make_page(format=format)
|
||||
|
||||
|
||||
def ue_list_semestre_ids(ue):
|
||||
def ue_list_semestre_ids(ue: dict):
|
||||
"""Liste triée des numeros de semestres des modules dans cette UE
|
||||
Il est recommandable que tous les modules d'une UE aient le même indice de semestre.
|
||||
Mais cela n'a pas toujours été le cas dans les programmes pédagogiques officiels,
|
||||
@ -1408,3 +1412,45 @@ def ue_list_semestre_ids(ue):
|
||||
"""
|
||||
modules = sco_edit_module.module_list(args={"ue_id": ue["ue_id"]})
|
||||
return sorted(list(set([mod["semestre_id"] for mod in modules])))
|
||||
|
||||
|
||||
UE_PALETTE = [
|
||||
"#EFA00B",
|
||||
"#99C24D",
|
||||
"#EC9192",
|
||||
"#0075C4",
|
||||
"#D65108",
|
||||
"#DEC0F1",
|
||||
"#B02E0C",
|
||||
"#151E3F",
|
||||
"#FB3640",
|
||||
]
|
||||
|
||||
|
||||
def colorie_anciennes_ues(ues: list[UniteEns]) -> None:
|
||||
"""Avant ScoDoc 9.2, les ue n'avaient pas de couleurs
|
||||
Met des défauts raisonnables
|
||||
"""
|
||||
nb_colors = len(UE_PALETTE)
|
||||
index = 0
|
||||
last_sem_idx = 0
|
||||
for ue in ues:
|
||||
if ue.semestre_idx != last_sem_idx:
|
||||
last_sem_idx = ue.semestre_idx
|
||||
index = 0
|
||||
if ue.color is None:
|
||||
ue.color = UE_PALETTE[index % nb_colors]
|
||||
index += 1
|
||||
db.session.add(ue)
|
||||
|
||||
|
||||
def ue_guess_color_default(formation_id: int, default_semestre_idx: int) -> str:
|
||||
"""Un code couleur pour une nouvelle UE dans ce semestre"""
|
||||
nb_colors = len(UE_PALETTE)
|
||||
# UE existantes dans ce semestre:
|
||||
nb_ues = UniteEns.query.filter(
|
||||
UniteEns.formation_id == formation_id,
|
||||
UniteEns.semestre_idx == default_semestre_idx,
|
||||
).count()
|
||||
index = nb_ues
|
||||
return UE_PALETTE[index % nb_colors]
|
||||
|
Loading…
Reference in New Issue
Block a user