1
0
forked from ScoDoc/ScoDoc

Fix regression on ue_list

This commit is contained in:
Emmanuel Viennet 2021-10-21 06:32:03 +02:00
parent 0f67ee33ae
commit c49aecaa2f
3 changed files with 39 additions and 25 deletions

View File

@ -588,9 +588,9 @@ def formation_add_malus_modules(formation_id, 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"""
from app.scodoc import sco_edit_ue from app.scodoc import sco_edit_ue
ue_list = sco_edit_ue.ue_list(args={"formation_id": formation_id}) ues = sco_edit_ue.ue_list(args={"formation_id": formation_id})
for ue in ue_list: for ue in ues:
# Un seul module de malus par UE: # Un seul module de malus par UE:
nb_mod_malus = len( nb_mod_malus = len(
[ [
@ -603,7 +603,11 @@ def formation_add_malus_modules(formation_id, titre=None, redirect=True):
ue_add_malus_module(ue["ue_id"], titre=titre) ue_add_malus_module(ue["ue_id"], titre=titre)
if redirect: if redirect:
return flask.redirect("ue_list?formation_id=" + str(formation_id)) return flask.redirect(
url_for(
"notes.ue_table", scodoc_dept=g.scodoc_dept, formation_id=formation_id
)
)
def ue_add_malus_module(ue_id, titre=None, code=None): def ue_add_malus_module(ue_id, titre=None, code=None):

View File

@ -374,12 +374,12 @@ def ue_edit(ue_id=None, create=False, formation_id=None):
) )
def _add_ue_semestre_id(ue_list): def _add_ue_semestre_id(ues):
"""ajoute semestre_id dans les ue, en regardant le premier module de chacune. """ajoute semestre_id dans les ue, en regardant le premier module de chacune.
Les UE sans modules se voient attribuer le numero UE_SEM_DEFAULT (1000000), Les UE sans modules se voient attribuer le numero UE_SEM_DEFAULT (1000000),
qui les place à la fin de la liste. qui les place à la fin de la liste.
""" """
for ue in ue_list: for ue in ues:
Modlist = sco_edit_module.module_list(args={"ue_id": ue["ue_id"]}) Modlist = sco_edit_module.module_list(args={"ue_id": ue["ue_id"]})
if Modlist: if Modlist:
ue["semestre_id"] = Modlist[0]["semestre_id"] ue["semestre_id"] = Modlist[0]["semestre_id"]
@ -391,27 +391,27 @@ def next_ue_numero(formation_id, semestre_id=None):
"""Numero d'une nouvelle UE dans cette formation. """Numero d'une nouvelle UE dans cette formation.
Si le semestre est specifie, cherche les UE ayant des modules de ce semestre Si le semestre est specifie, cherche les UE ayant des modules de ce semestre
""" """
ue_list = ue_list(args={"formation_id": formation_id}) ues = ue_list(args={"formation_id": formation_id})
if not ue_list: if not ues:
return 0 return 0
if semestre_id is None: if semestre_id is None:
return ue_list[-1]["numero"] + 1000 return ues[-1]["numero"] + 1000
else: else:
# Avec semestre: (prend le semestre du 1er module de l'UE) # Avec semestre: (prend le semestre du 1er module de l'UE)
_add_ue_semestre_id(ue_list) _add_ue_semestre_id(ues)
ue_list_semestre = [ue for ue in ue_list if ue["semestre_id"] == semestre_id] ue_list_semestre = [ue for ue in ues if ue["semestre_id"] == semestre_id]
if ue_list_semestre: if ue_list_semestre:
return ue_list_semestre[-1]["numero"] + 10 return ue_list_semestre[-1]["numero"] + 10
else: else:
return ue_list[-1]["numero"] + 1000 return ues[-1]["numero"] + 1000
def ue_delete(ue_id=None, delete_validations=False, dialog_confirmed=False): def ue_delete(ue_id=None, delete_validations=False, dialog_confirmed=False):
"""Delete an UE""" """Delete an UE"""
ue = ue_list(args={"ue_id": ue_id}) ues = ue_list(args={"ue_id": ue_id})
if not ue: if not ues:
raise ScoValueError("UE inexistante !") raise ScoValueError("UE inexistante !")
ue = ue[0] ue = ues[0]
if not dialog_confirmed: if not dialog_confirmed:
return scu.confirm_dialog( return scu.confirm_dialog(
@ -438,11 +438,11 @@ def ue_table(formation_id=None, msg=""): # was ue_list
parcours = sco_codes_parcours.get_parcours_from_code(F["type_parcours"]) parcours = sco_codes_parcours.get_parcours_from_code(F["type_parcours"])
locked = sco_formations.formation_has_locked_sems(formation_id) locked = sco_formations.formation_has_locked_sems(formation_id)
ue_list = ue_list(args={"formation_id": formation_id}) ues = ue_list(args={"formation_id": formation_id})
# tri par semestre et numero: # tri par semestre et numero:
_add_ue_semestre_id(ue_list) _add_ue_semestre_id(ues)
ue_list.sort(key=lambda u: (u["semestre_id"], u["numero"])) ues.sort(key=lambda u: (u["semestre_id"], u["numero"]))
has_duplicate_ue_codes = len(set([ue["ue_code"] for ue in ue_list])) != len(ue_list) has_duplicate_ue_codes = len(set([ue["ue_code"] for ue in ues])) != len(ues)
perm_change = current_user.has_permission(Permission.ScoChangeFormation) perm_change = current_user.has_permission(Permission.ScoChangeFormation)
# editable = (not locked) and perm_change # editable = (not locked) and perm_change
@ -559,7 +559,7 @@ du programme" (menu "Semestre") si vous avez un semestre en cours);
cur_ue_semestre_id = None cur_ue_semestre_id = None
iue = 0 iue = 0
for UE in ue_list: for UE in ues:
if UE["ects"]: if UE["ects"]:
UE["ects_str"] = ", %g ECTS" % UE["ects"] UE["ects_str"] = ", %g ECTS" % UE["ects"]
else: else:
@ -593,7 +593,7 @@ du programme" (menu "Semestre") si vous avez un semestre en cours);
) )
else: else:
H.append(arrow_none) H.append(arrow_none)
if iue < len(ue_list) - 1 and editable: if iue < len(ues) - 1 and editable:
H.append( H.append(
'<a href="ue_move?ue_id=%s&after=1" class="aud">%s</a>' '<a href="ue_move?ue_id=%s&after=1" class="aud">%s</a>'
% (UE["ue_id"], arrow_down) % (UE["ue_id"], arrow_down)
@ -964,9 +964,9 @@ def formation_table_recap(formation_id, format="html"):
raise ScoValueError("invalid formation_id") raise ScoValueError("invalid formation_id")
F = F[0] F = F[0]
T = [] T = []
ue_list = ue_list(args={"formation_id": formation_id}) ues = ue_list(args={"formation_id": formation_id})
for UE in ue_list: for ue in ues:
Matlist = sco_edit_matiere.matiere_list(args={"ue_id": UE["ue_id"]}) Matlist = sco_edit_matiere.matiere_list(args={"ue_id": ue["ue_id"]})
for Mat in Matlist: for Mat in Matlist:
Modlist = sco_edit_module.module_list( Modlist = sco_edit_module.module_list(
args={"matiere_id": Mat["matiere_id"]} args={"matiere_id": Mat["matiere_id"]}
@ -978,7 +978,7 @@ def formation_table_recap(formation_id, format="html"):
# #
T.append( T.append(
{ {
"UE_acro": UE["acronyme"], "UE_acro": ue["acronyme"],
"Mat_tit": Mat["titre"], "Mat_tit": Mat["titre"],
"Mod_tit": Mod["abbrev"] or Mod["titre"], "Mod_tit": Mod["abbrev"] or Mod["titre"],
"Mod_code": Mod["code"], "Mod_code": Mod["code"],

View File

@ -334,7 +334,17 @@ sco_publish(
Permission.ScoChangeFormation, Permission.ScoChangeFormation,
methods=["GET", "POST"], methods=["GET", "POST"],
) )
sco_publish("/ue_list", sco_edit_ue.ue_table, Permission.ScoView)
@bp.route("/ue_table")
@bp.route("/ue_list") # backward compat
@scodoc
@permission_required(Permission.ScoView)
@scodoc7func
def ue_table(formation_id=None, msg=""):
return sco_edit_ue.ue_table(formation_id=formation_id, msg=msg)
sco_publish("/ue_sharing_code", sco_edit_ue.ue_sharing_code, Permission.ScoView) sco_publish("/ue_sharing_code", sco_edit_ue.ue_sharing_code, Permission.ScoView)
sco_publish( sco_publish(
"/edit_ue_set_code_apogee", "/edit_ue_set_code_apogee",