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(
|
def ue_associee_au_niveau_du_parcours(
|
||||||
ues_possibles: list[UniteEns], niveau: ApcNiveau, sem_name: str = "S"
|
ues_possibles: list[UniteEns], niveau: ApcNiveau, sem_name: str = "S"
|
||||||
) -> UniteEns:
|
) -> tuple[UniteEns, str]:
|
||||||
"L'UE associée à ce niveau, ou None"
|
"""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]
|
ues = [ue for ue in ues_possibles if ue.niveau_competence_id == niveau.id]
|
||||||
|
msg = ""
|
||||||
if len(ues) > 1:
|
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
|
# plusieurs UEs associées à ce niveau: élimine celles sans parcours
|
||||||
ues_pair_avec_parcours = [ue for ue in ues if ue.parcours]
|
ues_avec_parcours = [ue for ue in ues if ue.parcours]
|
||||||
if ues_pair_avec_parcours:
|
if ues_avec_parcours:
|
||||||
ues = ues_pair_avec_parcours
|
ues = ues_avec_parcours
|
||||||
if len(ues) > 1:
|
if len(ues) > 1:
|
||||||
log(f"_niveau_ues: {len(ues)} associées au niveau {niveau} / {sem_name}")
|
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(
|
def parcour_formation_competences(
|
||||||
@ -700,6 +705,7 @@ def parcour_formation_competences(
|
|||||||
"ue_impair": None,
|
"ue_impair": None,
|
||||||
"ues_pair": [],
|
"ues_pair": [],
|
||||||
"ues_impair": [],
|
"ues_impair": [],
|
||||||
|
"warning": "",
|
||||||
}
|
}
|
||||||
# Toutes les UEs de la formation dans ce parcours ou tronc commun
|
# Toutes les UEs de la formation dans ce parcours ou tronc commun
|
||||||
ues = [
|
ues = [
|
||||||
@ -715,10 +721,10 @@ def parcour_formation_competences(
|
|||||||
ues_impair_possibles = [ue for ue in ues if ue.semestre_idx == (2 * annee - 1)]
|
ues_impair_possibles = [ue for ue in ues if ue.semestre_idx == (2 * annee - 1)]
|
||||||
|
|
||||||
# UE associée au niveau dans ce parcours
|
# 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}"
|
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}"
|
ues_impair_possibles, niveau, f"S{2*annee-1}"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -736,6 +742,7 @@ def parcour_formation_competences(
|
|||||||
for ue in ues_impair_possibles
|
for ue in ues_impair_possibles
|
||||||
if (not ue.niveau_competence) or ue.niveau_competence.id == niveau.id
|
if (not ue.niveau_competence) or ue.niveau_competence.id == niveau.id
|
||||||
],
|
],
|
||||||
|
"warning": ", ".join(filter(None, [warning_pair, warning_impair])),
|
||||||
}
|
}
|
||||||
|
|
||||||
competences = [
|
competences = [
|
||||||
|
@ -162,25 +162,35 @@ option.non_associe {
|
|||||||
div.ue_validation_code {
|
div.ue_validation_code {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.ue_validation_code div.code {
|
div.ue_validation_code div.code {
|
||||||
margin-left: 12px;
|
margin-left: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
select.validation_rcue {
|
select.validation_rcue {
|
||||||
color: black;
|
color: black;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin-left: 32px;
|
margin-left: 32px;
|
||||||
}
|
}
|
||||||
div.recap_ects, div.link_edit {
|
|
||||||
|
div.recap_ects,
|
||||||
|
div.link_edit {
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
margin-left: 16px;
|
margin-left: 16px;
|
||||||
margin-right: 16px;
|
margin-right: 16px;
|
||||||
margin-bottom: 16px;
|
margin-bottom: 16px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.recap_ects {
|
div.recap_ects {
|
||||||
background-color: var(--col-c3-2);
|
background-color: var(--col-c3-2);
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.link_edit a {
|
.link_edit a {
|
||||||
padding-right: 48px;
|
padding-right: 48px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.niveau-warning {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
@ -99,6 +99,9 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</span>
|
</span>
|
||||||
{{niv['niveau'].libelle if niv['niveau'] else ''}}
|
{{niv['niveau'].libelle if niv['niveau'] else ''}}
|
||||||
|
{% if niv["warning"] %}
|
||||||
|
<div class="niveau-warning">{{scu.EMO_WARNING|safe}} {{niv["warning"]}}</div>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<div class="ue impair u{{annee}}1">
|
<div class="ue impair u{{annee}}1">
|
||||||
{{ menu_ue(niv, "impair", 2*annee-1) }}
|
{{ menu_ue(niv, "impair", 2*annee-1) }}
|
||||||
|
Loading…
Reference in New Issue
Block a user