forked from ScoDoc/ScoDoc
BUT: Ajout warning si niveau comp. associé à plusieurs UEs
This commit is contained in:
parent
cb0c9d8f53
commit
17d9b8daa9
@ -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;
|
||||
}
|
@ -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) }}
|
||||
|
Loading…
Reference in New Issue
Block a user