Facilie l'ajout de modules de malus sur les UE BUT

This commit is contained in:
Emmanuel Viennet 2022-06-26 22:45:53 +02:00
parent 4ae831c3ac
commit 8dd3f6396d
5 changed files with 37 additions and 11 deletions

View File

@ -29,7 +29,7 @@
(portage from DTML) (portage from DTML)
""" """
import flask import flask
from flask import url_for, render_template from flask import flash, url_for, render_template
from flask import g, request from flask import g, request
from flask_login import current_user from flask_login import current_user
@ -915,13 +915,23 @@ def module_count_moduleimpls(module_id):
return len(mods) return len(mods)
def formation_add_malus_modules(formation_id, titre=None, redirect=True): def formation_add_malus_modules(
formation_id: int, semestre_id: int = None, titre=None, redirect=True
):
"""Création d'un module de "malus" dans chaque UE d'une formation""" """Création d'un module de "malus" dans chaque UE d'une formation"""
formation = Formation.query.get_or_404(formation_id) formation = Formation.query.get_or_404(formation_id)
for ue in formation.ues: nb = 0
ue_add_malus_module(ue, titre=titre) ues = formation.ues
if semestre_id is not None:
ues = ues.filter_by(semestre_idx=semestre_id)
for ue in ues:
if ue.type == sco_codes_parcours.UE_STANDARD:
if ue_add_malus_module(ue, titre=titre) != None:
nb += 1
flash(f"Modules de malus ajoutés dans {nb} UEs du S{semestre_id}")
formation.invalidate_cached_sems() formation.invalidate_cached_sems()
@ -940,9 +950,9 @@ def ue_add_malus_module(ue: UniteEns, titre=None, code=None) -> int:
""" """
modules_malus = [m for m in ue.modules if m.module_type == scu.ModuleType.MALUS] modules_malus = [m for m in ue.modules if m.module_type == scu.ModuleType.MALUS]
if len(modules_malus) > 0: if len(modules_malus) > 0:
return modules_malus[0].id # déjà existant return None # déjà existant
titre = titre or "" titre = titre or f"Malus {ue.acronyme}"
code = code or f"MALUS{ue.numero}" code = code or f"MALUS{ue.numero}"
# Tout module doit avoir un semestre_id (indice 1, 2, ...) # Tout module doit avoir un semestre_id (indice 1, 2, ...)
@ -954,7 +964,7 @@ def ue_add_malus_module(ue: UniteEns, titre=None, code=None) -> int:
# c'est ennuyeux: dans ce cas, on pourrait demander à indiquer explicitement # c'est ennuyeux: dans ce cas, on pourrait demander à indiquer explicitement
# le semestre ? ou affecter le malus au semestre 1 ??? # le semestre ? ou affecter le malus au semestre 1 ???
raise ScoValueError( raise ScoValueError(
"Impossible d'ajouter un malus s'il n'y a pas d'autres modules" "Impossible d'ajouter un malus si l'UE n'a pas de numéro de semestre et ne comporte pas d'autres modules"
) )
else: else:
semestre_id = ue.semestre_idx semestre_id = ue.semestre_idx

View File

@ -739,7 +739,8 @@ du programme" (menu "Semestre") si vous avez un semestre en cours);
else: else:
descr_refcomp = f"""Référentiel de compétences: descr_refcomp = f"""Référentiel de compétences:
<a href="{url_for('notes.refcomp_show', <a href="{url_for('notes.refcomp_show',
scodoc_dept=g.scodoc_dept, refcomp_id=formation.referentiel_competence.id)}"> scodoc_dept=g.scodoc_dept, refcomp_id=formation.referentiel_competence.id)}"
class="stdlink">
{formation.referentiel_competence.type_titre} {formation.referentiel_competence.specialite_long} {formation.referentiel_competence.type_titre} {formation.referentiel_competence.specialite_long}
</a>&nbsp;""" </a>&nbsp;"""
msg_refcomp = "changer" msg_refcomp = "changer"
@ -755,7 +756,7 @@ du programme" (menu "Semestre") si vous avez un semestre en cours);
f"""</li> f"""</li>
<li> <a class="stdlink" href="{ <li> <a class="stdlink" href="{
url_for('notes.edit_modules_ue_coefs', scodoc_dept=g.scodoc_dept, formation_id=formation_id, semestre_idx=semestre_idx) url_for('notes.edit_modules_ue_coefs', scodoc_dept=g.scodoc_dept, formation_id=formation_id, semestre_idx=semestre_idx)
}">éditer les coefficients des ressources et SAÉs</a> }">Éditer les coefficients des ressources et SAÉs</a>
</li> </li>
</ul> </ul>
""" """
@ -844,6 +845,7 @@ du programme" (menu "Semestre") si vous avez un semestre en cours);
) )
}">Créer une nouvelle version (non verrouillée)</a> }">Créer une nouvelle version (non verrouillée)</a>
</li> </li>
""" """
) )
H.append( H.append(

View File

@ -2066,6 +2066,10 @@ span.notes_module_list_buts {
margin-right: 5px; margin-right: 5px;
} }
.formation_apc_infos ul li:not(:last-child) {
margin-bottom: 6px;
}
div.ue_list_tit { div.ue_list_tit {
font-weight: bold; font-weight: bold;
margin-top: 5px; margin-top: 5px;

View File

@ -97,6 +97,16 @@
{% endif %} {% endif %}
>{{create_element_msg}}</a> >{{create_element_msg}}</a>
</li> </li>
{% if module_type==scu.ModuleType.STANDARD %}
<li><a href="{{
url_for('notes.formation_add_malus_modules',
scodoc_dept=g.scodoc_dept,
formation_id=formation.id,
semestre_id=semestre_id)
}}" class="stdlink">ajouter un module de malus dans chaque UE du S{{semestre_id}}</a>
</li>
{% endif %}
{% endif %} {% endif %}
{% endif %} {% endif %}
</ul> </ul>

View File

@ -1,7 +1,7 @@
# -*- mode: python -*- # -*- mode: python -*-
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
SCOVERSION = "9.3.2" SCOVERSION = "9.3.3"
SCONAME = "ScoDoc" SCONAME = "ScoDoc"