Skip to content
Snippets Groups Projects
Commit 17d9b8da authored by Emmanuel Viennet's avatar Emmanuel Viennet
Browse files

BUT: Ajout warning si niveau comp. associé à plusieurs UEs

parent cb0c9d8f
Branches
No related tags found
No related merge requests found
......@@ -632,17 +632,22 @@ def formation_semestre_niveaux_warning(formation: Formation, semestre_idx: int)
def ue_associee_au_niveau_du_parcours(
ues_possibles: list[UniteEns], niveau: ApcNiveau, sem_name: str = "S"
) -> UniteEns:
"L'UE associée à ce niveau, ou None"
) -> tuple[UniteEns, str]:
"""L'UE associée à ce niveau, ou None.
Renvoie aussi un message d'avertissement en cas d'associations multiples
(en principe un niveau ne doit être associé qu'à une seule UE)
"""
ues = [ue for ue in ues_possibles if ue.niveau_competence_id == niveau.id]
msg = ""
if len(ues) > 1:
msg = f"""{' et '.join(ue.acronyme for ue in ues)} associées au niveau {niveau} / {sem_name}. Utilisez le cas échéant l'item "Déassocier"."""
# plusieurs UEs associées à ce niveau: élimine celles sans parcours
ues_pair_avec_parcours = [ue for ue in ues if ue.parcours]
if ues_pair_avec_parcours:
ues = ues_pair_avec_parcours
ues_avec_parcours = [ue for ue in ues if ue.parcours]
if ues_avec_parcours:
ues = ues_avec_parcours
if len(ues) > 1:
log(f"_niveau_ues: {len(ues)} associées au niveau {niveau} / {sem_name}")
return ues[0] if ues else None
return ues[0] if ues else None, msg
def parcour_formation_competences(
......@@ -700,6 +705,7 @@ def parcour_formation_competences(
"ue_impair": None,
"ues_pair": [],
"ues_impair": [],
"warning": "",
}
# Toutes les UEs de la formation dans ce parcours ou tronc commun
ues = [
......@@ -715,10 +721,10 @@ def parcour_formation_competences(
ues_impair_possibles = [ue for ue in ues if ue.semestre_idx == (2 * annee - 1)]
# UE associée au niveau dans ce parcours
ue_pair = ue_associee_au_niveau_du_parcours(
ue_pair, warning_pair = ue_associee_au_niveau_du_parcours(
ues_pair_possibles, niveau, f"S{2*annee}"
)
ue_impair = ue_associee_au_niveau_du_parcours(
ue_impair, warning_impair = ue_associee_au_niveau_du_parcours(
ues_impair_possibles, niveau, f"S{2*annee-1}"
)
......@@ -736,6 +742,7 @@ def parcour_formation_competences(
for ue in ues_impair_possibles
if (not ue.niveau_competence) or ue.niveau_competence.id == niveau.id
],
"warning": ", ".join(filter(None, [warning_pair, warning_impair])),
}
competences = [
......
......@@ -162,25 +162,35 @@ option.non_associe {
div.ue_validation_code {
display: inline-block;
}
div.ue_validation_code div.code {
margin-left: 12px;
}
select.validation_rcue {
color: black;
display: inline-block;
margin-left: 32px;
}
div.recap_ects, div.link_edit {
div.recap_ects,
div.link_edit {
margin-top: 8px;
margin-left: 16px;
margin-right: 16px;
margin-bottom: 16px;
font-weight: bold;
}
div.recap_ects {
background-color: var(--col-c3-2);
padding: 4px;
}
.link_edit a {
padding-right: 48px;
}
.niveau-warning {
font-weight: bold;
}
\ No newline at end of file
......@@ -99,6 +99,9 @@
{% endif %}
</span>
{{niv['niveau'].libelle if niv['niveau'] else ''}}
{% if niv["warning"] %}
<div class="niveau-warning">{{scu.EMO_WARNING|safe}} {{niv["warning"]}}</div>
{% endif %}
</div>
<div class="ue impair u{{annee}}1">
{{ menu_ue(niv, "impair", 2*annee-1) }}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment