renomme: ue_list, matiere_list

This commit is contained in:
Emmanuel Viennet 2021-10-17 23:19:26 +02:00
parent 565055b4e5
commit 54ed09ed08
21 changed files with 91 additions and 94 deletions

View File

@ -194,7 +194,8 @@ def bonus_tours(notes_sport, coefs, infos=None):
def bonus_iutr(notes_sport, coefs, infos=None): def bonus_iutr(notes_sport, coefs, infos=None):
"""Calcul du bonus , regle de l'IUT de Roanne (contribuée par Raphael C., nov 2012) """Calcul du bonus , règle de l'IUT de Roanne
(contribuée par Raphael C., nov 2012)
Le bonus est compris entre 0 et 0.35 point. Le bonus est compris entre 0 et 0.35 point.
cette procédure modifie la moyenne de chaque UE capitalisable. cette procédure modifie la moyenne de chaque UE capitalisable.

View File

@ -108,7 +108,7 @@ def get_sem_ues_modimpls(formsemestre_id, modimpls=None):
mod = sco_edit_module.module_list(args={"module_id": modimpl["module_id"]})[0] mod = sco_edit_module.module_list(args={"module_id": modimpl["module_id"]})[0]
modimpl["module"] = mod modimpl["module"] = mod
if not mod["ue_id"] in uedict: if not mod["ue_id"] in uedict:
ue = sco_edit_ue.do_ue_list(args={"ue_id": mod["ue_id"]})[0] ue = sco_edit_ue.ue_list(args={"ue_id": mod["ue_id"]})[0]
uedict[ue["ue_id"]] = ue uedict[ue["ue_id"]] = ue
ues = list(uedict.values()) ues = list(uedict.values())
ues.sort(key=lambda u: u["numero"]) ues.sort(key=lambda u: u["numero"])
@ -224,15 +224,15 @@ class NotesTable(object):
# module has been added by formsemestre_compute_modimpls_moyennes # module has been added by formsemestre_compute_modimpls_moyennes
mod = modimpl["module"] mod = modimpl["module"]
if not mod["ue_id"] in uedict: if not mod["ue_id"] in uedict:
ue = sco_edit_ue.do_ue_list(args={"ue_id": mod["ue_id"]})[0] ue = sco_edit_ue.ue_list(args={"ue_id": mod["ue_id"]})[0]
uedict[ue["ue_id"]] = ue uedict[ue["ue_id"]] = ue
else: else:
ue = uedict[mod["ue_id"]] ue = uedict[mod["ue_id"]]
modimpl["ue"] = ue # add ue dict to moduleimpl modimpl["ue"] = ue # add ue dict to moduleimpl
self._matmoys[mod["matiere_id"]] = {} self._matmoys[mod["matiere_id"]] = {}
mat = sco_edit_matiere.do_matiere_list( mat = sco_edit_matiere.matiere_list(args={"matiere_id": mod["matiere_id"]})[
args={"matiere_id": mod["matiere_id"]} 0
)[0] ]
modimpl["mat"] = mat # add matiere dict to moduleimpl modimpl["mat"] = mat # add matiere dict to moduleimpl
# calcul moyennes du module et stocke dans le module # calcul moyennes du module et stocke dans le module
# nb_inscrits, nb_notes, nb_abs, nb_neutre, moy, median, last_modif= # nb_inscrits, nb_notes, nb_abs, nb_neutre, moy, median, last_modif=
@ -1053,7 +1053,7 @@ class NotesTable(object):
"Warning: %s capitalized an UE %s which is not part of current sem %s" "Warning: %s capitalized an UE %s which is not part of current sem %s"
% (etudid, ue_id, self.formsemestre_id) % (etudid, ue_id, self.formsemestre_id)
) )
ue = sco_edit_ue.do_ue_list(args={"ue_id": ue_id})[0] ue = sco_edit_ue.ue_list(args={"ue_id": ue_id})[0]
self.uedict[ue_id] = ue # record this UE self.uedict[ue_id] = ue # record this UE
if ue_id not in self._uecoef: if ue_id not in self._uecoef:
cl = formsemestre_uecoef_list( cl = formsemestre_uecoef_list(

View File

@ -360,7 +360,7 @@ def formsemestre_bulletinetud_published_dict(
"decisions_ue" "decisions_ue"
]: # and sco_preferences.get_preference( 'bul_show_uevalid', formsemestre_id): always publish (car utile pour export Apogee) ]: # and sco_preferences.get_preference( 'bul_show_uevalid', formsemestre_id): always publish (car utile pour export Apogee)
for ue_id in decision["decisions_ue"].keys(): for ue_id in decision["decisions_ue"].keys():
ue = sco_edit_ue.do_ue_list({"ue_id": ue_id})[0] ue = sco_edit_ue.ue_list({"ue_id": ue_id})[0]
d["decision_ue"].append( d["decision_ue"].append(
dict( dict(
ue_id=ue["ue_id"], ue_id=ue["ue_id"],

View File

@ -385,7 +385,7 @@ def make_xml_formsemestre_bulletinetud(
"decisions_ue" "decisions_ue"
]: # and sco_preferences.get_preference( 'bul_show_uevalid', formsemestre_id): always publish (car utile pour export Apogee) ]: # and sco_preferences.get_preference( 'bul_show_uevalid', formsemestre_id): always publish (car utile pour export Apogee)
for ue_id in decision["decisions_ue"].keys(): for ue_id in decision["decisions_ue"].keys():
ue = sco_edit_ue.do_ue_list({"ue_id": ue_id})[0] ue = sco_edit_ue.ue_list({"ue_id": ue_id})[0]
doc.append( doc.append(
Element( Element(
"decision_ue", "decision_ue",

View File

@ -104,7 +104,7 @@ def do_formation_delete(oid):
raise ScoLockedFormError() raise ScoLockedFormError()
cnx = ndb.GetDBConnexion() cnx = ndb.GetDBConnexion()
# delete all UE in this formation # delete all UE in this formation
ues = sco_edit_ue.do_ue_list({"formation_id": oid}) ues = sco_edit_ue.ue_list({"formation_id": oid})
for ue in ues: for ue in ues:
sco_edit_ue.do_ue_delete(ue["ue_id"], force=True) sco_edit_ue.do_ue_delete(ue["ue_id"], force=True)
@ -252,7 +252,7 @@ def formation_edit(formation_id=None, create=False):
do_formation_edit(tf[2]) do_formation_edit(tf[2])
return flask.redirect( return flask.redirect(
url_for( url_for(
"notes.ue_list", scodoc_dept=g.scodoc_dept, formation_id=formation_id "notes.ue_table", scodoc_dept=g.scodoc_dept, formation_id=formation_id
) )
) )
@ -343,21 +343,21 @@ def module_move(module_id, after=0, redirect=1):
if redirect: if redirect:
return flask.redirect( return flask.redirect(
url_for( url_for(
"notes.ue_list", scodoc_dept=g.scodoc_dept, formation_id=formation_id "notes.ue_table", scodoc_dept=g.scodoc_dept, formation_id=formation_id
) )
) )
def ue_move(ue_id, after=0, redirect=1): def ue_move(ue_id, after=0, redirect=1):
"""Move UE before/after previous one (decrement/increment numero)""" """Move UE before/after previous one (decrement/increment numero)"""
o = sco_edit_ue.do_ue_list({"ue_id": ue_id})[0] o = sco_edit_ue.ue_list({"ue_id": ue_id})[0]
# log('ue_move %s (#%s) after=%s' % (ue_id, o['numero'], after)) # log('ue_move %s (#%s) after=%s' % (ue_id, o['numero'], after))
redirect = int(redirect) redirect = int(redirect)
after = int(after) # 0: deplace avant, 1 deplace apres after = int(after) # 0: deplace avant, 1 deplace apres
if after not in (0, 1): if after not in (0, 1):
raise ValueError('invalid value for "after"') raise ValueError('invalid value for "after"')
formation_id = o["formation_id"] formation_id = o["formation_id"]
others = sco_edit_ue.do_ue_list({"formation_id": formation_id}) others = sco_edit_ue.ue_list({"formation_id": formation_id})
if len(others) > 1: if len(others) > 1:
idx = [p["ue_id"] for p in others].index(ue_id) idx = [p["ue_id"] for p in others].index(ue_id)
neigh = None # object to swap with neigh = None # object to swap with
@ -378,7 +378,7 @@ def ue_move(ue_id, after=0, redirect=1):
if redirect: if redirect:
return flask.redirect( return flask.redirect(
url_for( url_for(
"notes.ue_list", "notes.ue_table",
scodoc_dept=g.scodoc_dept, scodoc_dept=g.scodoc_dept,
formation_id=o["formation_id"], formation_id=o["formation_id"],
) )

View File

@ -47,7 +47,7 @@ _matiereEditor = ndb.EditableTable(
) )
def do_matiere_list(*args, **kw): def matiere_list(*args, **kw):
"list matieres" "list matieres"
cnx = ndb.GetDBConnexion() cnx = ndb.GetDBConnexion()
return _matiereEditor.list(cnx, *args, **kw) return _matiereEditor.list(cnx, *args, **kw)
@ -60,12 +60,12 @@ def do_matiere_edit(*args, **kw):
cnx = ndb.GetDBConnexion() cnx = ndb.GetDBConnexion()
# check # check
mat = do_matiere_list({"matiere_id": args[0]["matiere_id"]})[0] mat = matiere_list({"matiere_id": args[0]["matiere_id"]})[0]
if matiere_is_locked(mat["matiere_id"]): if matiere_is_locked(mat["matiere_id"]):
raise ScoLockedFormError() raise ScoLockedFormError()
# edit # edit
_matiereEditor.edit(cnx, *args, **kw) _matiereEditor.edit(cnx, *args, **kw)
formation_id = sco_edit_ue.do_ue_list({"ue_id": mat["ue_id"]})[0]["formation_id"] formation_id = sco_edit_ue.ue_list({"ue_id": mat["ue_id"]})[0]["formation_id"]
sco_edit_formation.invalidate_sems_in_formation(formation_id) sco_edit_formation.invalidate_sems_in_formation(formation_id)
@ -77,7 +77,7 @@ def do_matiere_create(args):
cnx = ndb.GetDBConnexion() cnx = ndb.GetDBConnexion()
# check # check
ue = sco_edit_ue.do_ue_list({"ue_id": args["ue_id"]})[0] ue = sco_edit_ue.ue_list({"ue_id": args["ue_id"]})[0]
# create matiere # create matiere
r = _matiereEditor.create(cnx, args) r = _matiereEditor.create(cnx, args)
@ -96,7 +96,7 @@ def matiere_create(ue_id=None):
"""Creation d'une matiere""" """Creation d'une matiere"""
from app.scodoc import sco_edit_ue from app.scodoc import sco_edit_ue
UE = sco_edit_ue.do_ue_list(args={"ue_id": ue_id})[0] UE = sco_edit_ue.ue_list(args={"ue_id": ue_id})[0]
H = [ H = [
html_sco_header.sco_header(page_title="Création d'une matière"), html_sco_header.sco_header(page_title="Création d'une matière"),
"""<h2>Création d'une matière dans l'UE %(titre)s (%(acronyme)s)</h2>""" % UE, """<h2>Création d'une matière dans l'UE %(titre)s (%(acronyme)s)</h2>""" % UE,
@ -134,7 +134,7 @@ associé.
) )
dest_url = url_for( dest_url = url_for(
"notes.ue_list", scodoc_dept=g.scodoc_dept, formation_id=UE["formation_id"] "notes.ue_table", scodoc_dept=g.scodoc_dept, formation_id=UE["formation_id"]
) )
if tf[0] == 0: if tf[0] == 0:
@ -143,7 +143,7 @@ associé.
return flask.redirect(dest_url) return flask.redirect(dest_url)
else: else:
# check unicity # check unicity
mats = do_matiere_list(args={"ue_id": ue_id, "titre": tf[2]["titre"]}) mats = matiere_list(args={"ue_id": ue_id, "titre": tf[2]["titre"]})
if mats: if mats:
return ( return (
"\n".join(H) "\n".join(H)
@ -164,8 +164,8 @@ def do_matiere_delete(oid):
cnx = ndb.GetDBConnexion() cnx = ndb.GetDBConnexion()
# check # check
mat = do_matiere_list({"matiere_id": oid})[0] mat = matiere_list({"matiere_id": oid})[0]
ue = sco_edit_ue.do_ue_list({"ue_id": mat["ue_id"]})[0] ue = sco_edit_ue.ue_list({"ue_id": mat["ue_id"]})[0]
locked = matiere_is_locked(mat["matiere_id"]) locked = matiere_is_locked(mat["matiere_id"])
if locked: if locked:
log("do_matiere_delete: mat=%s" % mat) log("do_matiere_delete: mat=%s" % mat)
@ -193,8 +193,8 @@ def matiere_delete(matiere_id=None):
"""Delete an UE""" """Delete an UE"""
from app.scodoc import sco_edit_ue from app.scodoc import sco_edit_ue
M = do_matiere_list(args={"matiere_id": matiere_id})[0] M = matiere_list(args={"matiere_id": matiere_id})[0]
UE = sco_edit_ue.do_ue_list(args={"ue_id": M["ue_id"]})[0] UE = sco_edit_ue.ue_list(args={"ue_id": M["ue_id"]})[0]
H = [ H = [
html_sco_header.sco_header(page_title="Suppression d'une matière"), html_sco_header.sco_header(page_title="Suppression d'une matière"),
"<h2>Suppression de la matière %(titre)s" % M, "<h2>Suppression de la matière %(titre)s" % M,
@ -223,17 +223,17 @@ def matiere_edit(matiere_id=None):
from app.scodoc import sco_formations from app.scodoc import sco_formations
from app.scodoc import sco_edit_ue from app.scodoc import sco_edit_ue
F = do_matiere_list(args={"matiere_id": matiere_id}) F = matiere_list(args={"matiere_id": matiere_id})
if not F: if not F:
raise ScoValueError("Matière inexistante !") raise ScoValueError("Matière inexistante !")
F = F[0] F = F[0]
U = sco_edit_ue.do_ue_list(args={"ue_id": F["ue_id"]}) U = sco_edit_ue.ue_list(args={"ue_id": F["ue_id"]})
if not F: if not F:
raise ScoValueError("UE inexistante !") raise ScoValueError("UE inexistante !")
U = U[0] U = U[0]
Fo = sco_formations.formation_list(args={"formation_id": U["formation_id"]})[0] Fo = sco_formations.formation_list(args={"formation_id": U["formation_id"]})[0]
ues = sco_edit_ue.do_ue_list(args={"formation_id": U["formation_id"]}) ues = sco_edit_ue.ue_list(args={"formation_id": U["formation_id"]})
ue_names = ["%(acronyme)s (%(titre)s)" % u for u in ues] ue_names = ["%(acronyme)s (%(titre)s)" % u for u in ues]
ue_ids = [u["ue_id"] for u in ues] ue_ids = [u["ue_id"] for u in ues]
H = [ H = [
@ -286,7 +286,7 @@ associé.
return flask.redirect(dest_url) return flask.redirect(dest_url)
else: else:
# check unicity # check unicity
mats = do_matiere_list(args={"ue_id": tf[2]["ue_id"], "titre": tf[2]["titre"]}) mats = matiere_list(args={"ue_id": tf[2]["ue_id"], "titre": tf[2]["titre"]})
if len(mats) > 1 or (len(mats) == 1 and mats[0]["matiere_id"] != matiere_id): if len(mats) > 1 or (len(mats) == 1 and mats[0]["matiere_id"] != matiere_id):
return ( return (
"\n".join(H) "\n".join(H)

View File

@ -126,8 +126,8 @@ def module_create(matiere_id=None):
if matiere_id is None: if matiere_id is None:
raise ScoValueError("invalid matiere !") raise ScoValueError("invalid matiere !")
M = sco_edit_matiere.do_matiere_list(args={"matiere_id": matiere_id})[0] M = sco_edit_matiere.matiere_list(args={"matiere_id": matiere_id})[0]
UE = sco_edit_ue.do_ue_list(args={"ue_id": M["ue_id"]})[0] UE = sco_edit_ue.ue_list(args={"ue_id": M["ue_id"]})[0]
Fo = sco_formations.formation_list(args={"formation_id": UE["formation_id"]})[0] Fo = sco_formations.formation_list(args={"formation_id": UE["formation_id"]})[0]
parcours = sco_codes_parcours.get_parcours_from_code(Fo["type_parcours"]) parcours = sco_codes_parcours.get_parcours_from_code(Fo["type_parcours"])
semestres_indices = list(range(1, parcours.NB_SEM + 1)) semestres_indices = list(range(1, parcours.NB_SEM + 1))
@ -241,7 +241,7 @@ def module_create(matiere_id=None):
do_module_create(tf[2]) do_module_create(tf[2])
return flask.redirect( return flask.redirect(
url_for( url_for(
"notes.ue_list", "notes.ue_table",
scodoc_dept=g.scodoc_dept, scodoc_dept=g.scodoc_dept,
formation_id=UE["formation_id"], formation_id=UE["formation_id"],
) )
@ -263,7 +263,7 @@ def do_module_delete(oid):
<p class="help">Il faut d'abord supprimer le semestre. Mais il est peut être préférable de <p class="help">Il faut d'abord supprimer le semestre. Mais il est peut être préférable de
laisser ce programme intact et d'en créer une nouvelle version pour la modifier. laisser ce programme intact et d'en créer une nouvelle version pour la modifier.
</p> </p>
<a href="{url_for('notes.ue_list', scodoc_dept=g.scodoc_dept, <a href="{url_for('notes.ue_table', scodoc_dept=g.scodoc_dept,
formation_id=mod["formation_id"])}">reprendre</a> formation_id=mod["formation_id"])}">reprendre</a>
""" """
raise ScoGenError(err_page) raise ScoGenError(err_page)
@ -588,7 +588,7 @@ 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.do_ue_list(args={"formation_id": formation_id}) ue_list = sco_edit_ue.ue_list(args={"formation_id": formation_id})
for ue in ue_list: for ue in ue_list:
# Un seul module de malus par UE: # Un seul module de malus par UE:
@ -610,7 +610,7 @@ def ue_add_malus_module(ue_id, titre=None, code=None):
"""Add a malus module in this ue""" """Add a malus module in this ue"""
from app.scodoc import sco_edit_ue from app.scodoc import sco_edit_ue
ue = sco_edit_ue.do_ue_list(args={"ue_id": ue_id})[0] ue = sco_edit_ue.ue_list(args={"ue_id": ue_id})[0]
if titre is None: if titre is None:
titre = "" titre = ""
@ -629,7 +629,7 @@ def ue_add_malus_module(ue_id, titre=None, code=None):
) )
# Matiere pour placer le module malus # Matiere pour placer le module malus
Matlist = sco_edit_matiere.do_matiere_list(args={"ue_id": ue_id}) Matlist = sco_edit_matiere.matiere_list(args={"ue_id": ue_id})
numero = max([mat["numero"] for mat in Matlist]) + 10 numero = max([mat["numero"] for mat in Matlist]) + 10
matiere_id = sco_edit_matiere.do_matiere_create( matiere_id = sco_edit_matiere.do_matiere_create(
{"ue_id": ue_id, "titre": "Malus", "numero": numero} {"ue_id": ue_id, "titre": "Malus", "numero": numero}

View File

@ -85,7 +85,7 @@ _ueEditor = ndb.EditableTable(
) )
def do_ue_list(*args, **kw): def ue_list(*args, **kw):
"list UEs" "list UEs"
cnx = ndb.GetDBConnexion() cnx = ndb.GetDBConnexion()
return _ueEditor.list(cnx, *args, **kw) return _ueEditor.list(cnx, *args, **kw)
@ -97,9 +97,7 @@ def do_ue_create(args):
cnx = ndb.GetDBConnexion() cnx = ndb.GetDBConnexion()
# check duplicates # check duplicates
ues = do_ue_list( ues = ue_list({"formation_id": args["formation_id"], "acronyme": args["acronyme"]})
{"formation_id": args["formation_id"], "acronyme": args["acronyme"]}
)
if ues: if ues:
raise ScoValueError('Acronyme d\'UE "%s" déjà utilisé !' % args["acronyme"]) raise ScoValueError('Acronyme d\'UE "%s" déjà utilisé !' % args["acronyme"])
# create # create
@ -124,7 +122,7 @@ def do_ue_delete(ue_id, delete_validations=False, force=False):
cnx = ndb.GetDBConnexion() cnx = ndb.GetDBConnexion()
log("do_ue_delete: ue_id=%s, delete_validations=%s" % (ue_id, delete_validations)) log("do_ue_delete: ue_id=%s, delete_validations=%s" % (ue_id, delete_validations))
# check # check
ue = do_ue_list({"ue_id": ue_id}) ue = ue_list({"ue_id": ue_id})
if not ue: if not ue:
raise ScoValueError("UE inexistante !") raise ScoValueError("UE inexistante !")
ue = ue[0] ue = ue[0]
@ -152,7 +150,7 @@ def do_ue_delete(ue_id, delete_validations=False, force=False):
) )
# delete all matiere in this UE # delete all matiere in this UE
mats = sco_edit_matiere.do_matiere_list({"ue_id": ue_id}) mats = sco_edit_matiere.matiere_list({"ue_id": ue_id})
for mat in mats: for mat in mats:
sco_edit_matiere.do_matiere_delete(mat["matiere_id"]) sco_edit_matiere.do_matiere_delete(mat["matiere_id"])
# delete uecoef and events # delete uecoef and events
@ -177,7 +175,7 @@ def do_ue_delete(ue_id, delete_validations=False, force=False):
if not force: if not force:
return flask.redirect( return flask.redirect(
url_for( url_for(
"notes.ue_list", "notes.ue_table",
scodoc_dept=g.scodoc_dept, scodoc_dept=g.scodoc_dept,
formation_id=ue["formation_id"], formation_id=ue["formation_id"],
) )
@ -197,7 +195,7 @@ def ue_edit(ue_id=None, create=False, formation_id=None):
create = int(create) create = int(create)
if not create: if not create:
U = do_ue_list(args={"ue_id": ue_id}) U = ue_list(args={"ue_id": ue_id})
if not U: if not U:
raise ScoValueError("UE inexistante !") raise ScoValueError("UE inexistante !")
U = U[0] U = U[0]
@ -371,7 +369,7 @@ def ue_edit(ue_id=None, create=False, formation_id=None):
do_ue_edit(tf[2]) do_ue_edit(tf[2])
return flask.redirect( return flask.redirect(
url_for( url_for(
"notes.ue_list", scodoc_dept=g.scodoc_dept, formation_id=formation_id "notes.ue_table", scodoc_dept=g.scodoc_dept, formation_id=formation_id
) )
) )
@ -393,7 +391,7 @@ 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 = do_ue_list(args={"formation_id": formation_id}) ue_list = ue_list(args={"formation_id": formation_id})
if not ue_list: if not ue_list:
return 0 return 0
if semestre_id is None: if semestre_id is None:
@ -410,7 +408,7 @@ def next_ue_numero(formation_id, semestre_id=None):
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 = do_ue_list(args={"ue_id": ue_id}) ue = ue_list(args={"ue_id": ue_id})
if not ue: if not ue:
raise ScoValueError("UE inexistante !") raise ScoValueError("UE inexistante !")
ue = ue[0] ue = ue[0]
@ -426,9 +424,9 @@ def ue_delete(ue_id=None, delete_validations=False, dialog_confirmed=False):
return do_ue_delete(ue_id, delete_validations=delete_validations) return do_ue_delete(ue_id, delete_validations=delete_validations)
def ue_list(formation_id=None, msg=""): def ue_table(formation_id=None, msg=""): # was ue_list
"""Liste des matières et modules d'une formation, avec liens pour """Liste des matières et modules d'une formation, avec liens pour
editer (si non verrouillée). éditer (si non verrouillée).
""" """
from app.scodoc import sco_formations from app.scodoc import sco_formations
from app.scodoc import sco_formsemestre_validation from app.scodoc import sco_formsemestre_validation
@ -440,7 +438,7 @@ def ue_list(formation_id=None, msg=""):
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 = do_ue_list(args={"formation_id": formation_id}) ue_list = 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(ue_list)
ue_list.sort(key=lambda u: (u["semestre_id"], u["numero"])) ue_list.sort(key=lambda u: (u["semestre_id"], u["numero"]))
@ -627,7 +625,7 @@ du programme" (menu "Semestre") si vous avez un semestre en cours);
H.append('<span class="locked">[verrouillé]</span>') H.append('<span class="locked">[verrouillé]</span>')
if not parcours.UE_IS_MODULE: if not parcours.UE_IS_MODULE:
H.append('<ul class="notes_matiere_list">') H.append('<ul class="notes_matiere_list">')
Matlist = sco_edit_matiere.do_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:
if not parcours.UE_IS_MODULE: if not parcours.UE_IS_MODULE:
H.append('<li class="notes_matiere_list">') H.append('<li class="notes_matiere_list">')
@ -847,7 +845,7 @@ def ue_sharing_code(ue_code=None, ue_id=None, hide_ue_id=None):
ue_code = str(ue_code) ue_code = str(ue_code)
if ue_id: if ue_id:
ue = do_ue_list(args={"ue_id": ue_id})[0] ue = ue_list(args={"ue_id": ue_id})[0]
if not ue_code: if not ue_code:
ue_code = ue["ue_code"] ue_code = ue["ue_code"]
F = sco_formations.formation_list(args={"formation_id": ue["formation_id"]})[0] F = sco_formations.formation_list(args={"formation_id": ue["formation_id"]})[0]
@ -884,7 +882,7 @@ def ue_sharing_code(ue_code=None, ue_id=None, hide_ue_id=None):
for ue in ues: for ue in ues:
H.append( H.append(
f"""<li>{ue.acronyme} ({ue.titre}) dans <a class="stdlink" f"""<li>{ue.acronyme} ({ue.titre}) dans <a class="stdlink"
href="{url_for("notes.ue_list", scodoc_dept=g.scodoc_dept, formation_id=ue.formation.id)}" href="{url_for("notes.ue_table", scodoc_dept=g.scodoc_dept, formation_id=ue.formation.id)}"
>{ue.formation.acronyme} ({ue.formation.titre})</a>, version {ue.formation.version} >{ue.formation.acronyme} ({ue.formation.titre})</a>, version {ue.formation.version}
</li> </li>
""" """
@ -897,13 +895,13 @@ def do_ue_edit(args, bypass_lock=False, dont_invalidate_cache=False):
"edit an UE" "edit an UE"
# check # check
ue_id = args["ue_id"] ue_id = args["ue_id"]
ue = do_ue_list({"ue_id": ue_id})[0] ue = ue_list({"ue_id": ue_id})[0]
if (not bypass_lock) and ue_is_locked(ue["ue_id"]): if (not bypass_lock) and ue_is_locked(ue["ue_id"]):
raise ScoLockedFormError() raise ScoLockedFormError()
# check: acronyme unique dans cette formation # check: acronyme unique dans cette formation
if "acronyme" in args: if "acronyme" in args:
new_acro = args["acronyme"] new_acro = args["acronyme"]
ues = do_ue_list({"formation_id": ue["formation_id"], "acronyme": new_acro}) ues = ue_list({"formation_id": ue["formation_id"], "acronyme": new_acro})
if ues and ues[0]["ue_id"] != ue_id: if ues and ues[0]["ue_id"] != ue_id:
raise ScoValueError('Acronyme d\'UE "%s" déjà utilisé !' % args["acronyme"]) raise ScoValueError('Acronyme d\'UE "%s" déjà utilisé !' % args["acronyme"])
@ -926,7 +924,7 @@ def edit_ue_set_code_apogee(id=None, value=None):
value = value.strip("-_ \t") value = value.strip("-_ \t")
log("edit_ue_set_code_apogee: ue_id=%s code_apogee=%s" % (ue_id, value)) log("edit_ue_set_code_apogee: ue_id=%s code_apogee=%s" % (ue_id, value))
ues = do_ue_list(args={"ue_id": ue_id}) ues = ue_list(args={"ue_id": ue_id})
if not ues: if not ues:
return "ue invalide" return "ue invalide"
@ -966,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 = do_ue_list(args={"formation_id": formation_id}) ue_list = ue_list(args={"formation_id": formation_id})
for UE in ue_list: for UE in ue_list:
Matlist = sco_edit_matiere.do_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"]}

View File

@ -1062,7 +1062,7 @@ def evaluation_describe(evaluation_id="", edit_in_place=True):
] ]
if Mod["module_type"] == scu.MODULE_MALUS: if Mod["module_type"] == scu.MODULE_MALUS:
# Indique l'UE # Indique l'UE
ue = sco_edit_ue.do_ue_list(args={"ue_id": Mod["ue_id"]})[0] ue = sco_edit_ue.ue_list(args={"ue_id": Mod["ue_id"]})[0]
H.append("<p><b>UE : %(acronyme)s</b></p>" % ue) H.append("<p><b>UE : %(acronyme)s</b></p>" % ue)
# store min/max values used by JS client-side checks: # store min/max values used by JS client-side checks:
H.append( H.append(

View File

@ -98,7 +98,7 @@ def formation_export(formation_id, export_ids=False, export_tags=True, format=No
in desired format in desired format
""" """
F = formation_list(args={"formation_id": formation_id})[0] F = formation_list(args={"formation_id": formation_id})[0]
ues = sco_edit_ue.do_ue_list({"formation_id": formation_id}) ues = sco_edit_ue.ue_list({"formation_id": formation_id})
F["ue"] = ues F["ue"] = ues
for ue in ues: for ue in ues:
ue_id = ue["ue_id"] ue_id = ue["ue_id"]
@ -107,7 +107,7 @@ def formation_export(formation_id, export_ids=False, export_tags=True, format=No
del ue["formation_id"] del ue["formation_id"]
if ue["ects"] is None: if ue["ects"] is None:
del ue["ects"] del ue["ects"]
mats = sco_edit_matiere.do_matiere_list({"ue_id": ue_id}) mats = sco_edit_matiere.matiere_list({"ue_id": ue_id})
ue["matiere"] = mats ue["matiere"] = mats
for mat in mats: for mat in mats:
matiere_id = mat["matiere_id"] matiere_id = mat["matiere_id"]
@ -366,7 +366,7 @@ def formation_create_new_version(formation_id, redirect=True):
if redirect: if redirect:
return flask.redirect( return flask.redirect(
url_for( url_for(
"notes.ue_list", "notes.ue_table",
scodoc_dept=g.scodoc_dept, scodoc_dept=g.scodoc_dept,
formation_id=new_id, formation_id=new_id,
msg="Nouvelle version !", msg="Nouvelle version !",

View File

@ -205,9 +205,9 @@ def do_formsemestre_createwithmodules(edit=False):
# on pourrait faire un simple module_list( ) # on pourrait faire un simple module_list( )
# mais si on veut l'ordre du PPN (groupe par UE et matieres) il faut: # mais si on veut l'ordre du PPN (groupe par UE et matieres) il faut:
mods = [] # liste de dicts mods = [] # liste de dicts
uelist = sco_edit_ue.do_ue_list({"formation_id": formation_id}) uelist = sco_edit_ue.ue_list({"formation_id": formation_id})
for ue in uelist: for ue in uelist:
matlist = sco_edit_matiere.do_matiere_list({"ue_id": ue["ue_id"]}) matlist = sco_edit_matiere.matiere_list({"ue_id": ue["ue_id"]})
for mat in matlist: for mat in matlist:
modsmat = sco_edit_module.module_list({"matiere_id": mat["matiere_id"]}) modsmat = sco_edit_module.module_list({"matiere_id": mat["matiere_id"]})
# XXX debug checks # XXX debug checks

View File

@ -439,7 +439,7 @@ def _list_ue_with_coef_and_validations(sem, etudid):
""" """
cnx = ndb.GetDBConnexion() cnx = ndb.GetDBConnexion()
formsemestre_id = sem["formsemestre_id"] formsemestre_id = sem["formsemestre_id"]
ue_list = sco_edit_ue.do_ue_list({"formation_id": sem["formation_id"]}) ue_list = sco_edit_ue.ue_list({"formation_id": sem["formation_id"]})
for ue in ue_list: for ue in ue_list:
# add coefficient # add coefficient
uecoef = sco_formsemestre.formsemestre_uecoef_list( uecoef = sco_formsemestre.formsemestre_uecoef_list(

View File

@ -141,7 +141,7 @@ def formsemestre_status_menubar(sem):
}, },
{ {
"title": "Voir la formation %(acronyme)s (v%(version)s)" % F, "title": "Voir la formation %(acronyme)s (v%(version)s)" % F,
"endpoint": "notes.ue_list", "endpoint": "notes.ue_table",
"args": {"formation_id": sem["formation_id"]}, "args": {"formation_id": sem["formation_id"]},
"enabled": True, "enabled": True,
"helpmsg": "Tableau de bord du semestre", "helpmsg": "Tableau de bord du semestre",
@ -896,7 +896,7 @@ def html_expr_diagnostic(diagnostics):
) )
else: else:
if diag["ue_id"] != last_id or diag["msg"] != last_msg: if diag["ue_id"] != last_id or diag["msg"] != last_msg:
ue = sco_edit_ue.do_ue_list({"ue_id": diag["ue_id"]})[0] ue = sco_edit_ue.ue_list({"ue_id": diag["ue_id"]})[0]
H.append( H.append(
'<li>UE "%s": %s</li>' '<li>UE "%s": %s</li>'
% (ue["acronyme"] or ue["titre"] or "?", diag["msg"]) % (ue["acronyme"] or ue["titre"] or "?", diag["msg"])
@ -926,7 +926,7 @@ def formsemestre_status_head(formsemestre_id=None, page_title=None):
), ),
f"""<table> f"""<table>
<tr><td class="fichetitre2">Formation: </td><td> <tr><td class="fichetitre2">Formation: </td><td>
<a href="{url_for('notes.ue_list', scodoc_dept=g.scodoc_dept, formation_id=F['formation_id'])}" <a href="{url_for('notes.ue_table', scodoc_dept=g.scodoc_dept, formation_id=F['formation_id'])}"
class="discretelink" title="Formation {F['acronyme']}, v{F['version']}">{F['titre']}</a>""", class="discretelink" title="Formation {F['acronyme']}, v{F['version']}">{F['titre']}</a>""",
] ]
if sem["semestre_id"] >= 0: if sem["semestre_id"] >= 0:

View File

@ -1022,7 +1022,7 @@ def formsemestre_validate_previous_ue(formsemestre_id, etudid):
] ]
# Toutes les UE de cette formation sont présentées (même celles des autres semestres) # Toutes les UE de cette formation sont présentées (même celles des autres semestres)
ues = sco_edit_ue.do_ue_list({"formation_id": Fo["formation_id"]}) ues = sco_edit_ue.ue_list({"formation_id": Fo["formation_id"]})
ue_names = ["Choisir..."] + ["%(acronyme)s %(titre)s" % ue for ue in ues] ue_names = ["Choisir..."] + ["%(acronyme)s %(titre)s" % ue for ue in ues]
ue_ids = [""] + [ue["ue_id"] for ue in ues] ue_ids = [""] + [ue["ue_id"] for ue in ues]
tf = TrivialFormulator( tf = TrivialFormulator(
@ -1234,7 +1234,7 @@ def check_formation_ues(formation_id):
définition du programme: cette fonction retourne un bout de HTML définition du programme: cette fonction retourne un bout de HTML
à afficher pour prévenir l'utilisateur, ou '' si tout est ok. à afficher pour prévenir l'utilisateur, ou '' si tout est ok.
""" """
ues = sco_edit_ue.do_ue_list({"formation_id": formation_id}) ues = sco_edit_ue.ue_list({"formation_id": formation_id})
ue_multiples = {} # { ue_id : [ liste des formsemestre ] } ue_multiples = {} # { ue_id : [ liste des formsemestre ] }
for ue in ues: for ue in ues:
# formsemestres utilisant cette ue ? # formsemestres utilisant cette ue ?

View File

@ -154,11 +154,11 @@ def moduleimpl_withmodule_list(
mi["module"] = modules[module_id] mi["module"] = modules[module_id]
ue_id = mi["module"]["ue_id"] ue_id = mi["module"]["ue_id"]
if not ue_id in ues: if not ue_id in ues:
ues[ue_id] = sco_edit_ue.do_ue_list(args={"ue_id": ue_id})[0] ues[ue_id] = sco_edit_ue.ue_list(args={"ue_id": ue_id})[0]
mi["ue"] = ues[ue_id] mi["ue"] = ues[ue_id]
matiere_id = mi["module"]["matiere_id"] matiere_id = mi["module"]["matiere_id"]
if not matiere_id in matieres: if not matiere_id in matieres:
matieres[matiere_id] = sco_edit_matiere.do_matiere_list( matieres[matiere_id] = sco_edit_matiere.matiere_list(
args={"matiere_id": matiere_id} args={"matiere_id": matiere_id}
)[0] )[0]
mi["matiere"] = matieres[matiere_id] mi["matiere"] = matieres[matiere_id]

View File

@ -339,7 +339,7 @@ def moduleimpl_inscriptions_stats(formsemestre_id):
UECaps = get_etuds_with_capitalized_ue(formsemestre_id) UECaps = get_etuds_with_capitalized_ue(formsemestre_id)
if UECaps: if UECaps:
H.append('<h3>Etudiants avec UEs capitalisées:</h3><ul class="ue_inscr_list">') H.append('<h3>Etudiants avec UEs capitalisées:</h3><ul class="ue_inscr_list">')
ues = [sco_edit_ue.do_ue_list({"ue_id": ue_id})[0] for ue_id in UECaps.keys()] ues = [sco_edit_ue.ue_list({"ue_id": ue_id})[0] for ue_id in UECaps.keys()]
ues.sort(key=lambda u: u["numero"]) ues.sort(key=lambda u: u["numero"])
for ue in ues: for ue in ues:
H.append( H.append(

View File

@ -92,7 +92,7 @@ def _descr_decisions_ues(nt, etudid, decisions_ue, decision_sem):
and sco_codes_parcours.code_semestre_validant(decision_sem["code"]) and sco_codes_parcours.code_semestre_validant(decision_sem["code"])
) )
): ):
ue = sco_edit_ue.do_ue_list(args={"ue_id": ue_id})[0] ue = sco_edit_ue.ue_list(args={"ue_id": ue_id})[0]
uelist.append(ue) uelist.append(ue)
except: except:
log("descr_decisions_ues: ue_id=%s decisions_ue=%s" % (ue_id, decisions_ue)) log("descr_decisions_ues: ue_id=%s decisions_ue=%s" % (ue_id, decisions_ue))

View File

@ -174,9 +174,7 @@ def external_ue_inscrit_et_note(moduleimpl_id, formsemestre_id, notes_etuds):
def get_existing_external_ue(formation_id): def get_existing_external_ue(formation_id):
"la liste de toutes les UE externes définies dans cette formation" "la liste de toutes les UE externes définies dans cette formation"
return sco_edit_ue.do_ue_list( return sco_edit_ue.ue_list(args={"formation_id": formation_id, "is_external": True})
args={"formation_id": formation_id, "is_external": True}
)
def get_external_moduleimpl_id(formsemestre_id, ue_id): def get_external_moduleimpl_id(formsemestre_id, ue_id):

View File

@ -160,7 +160,7 @@ def sco_publish(route, function, permission, methods=["GET"]):
# <p class="help">Il faut d'abord supprimer le semestre. Mais il est peut être préférable de # <p class="help">Il faut d'abord supprimer le semestre. Mais il est peut être préférable de
# laisser ce programme intact et d'en créer une nouvelle version pour la modifier. # laisser ce programme intact et d'en créer une nouvelle version pour la modifier.
# </p> # </p>
# <a href="url_for('notes.ue_list', scodoc-dept=g.scodoc_dept, formation_id='XXX')">reprendre</a> # <a href="url_for('notes.ue_table', scodoc-dept=g.scodoc_dept, formation_id='XXX')">reprendre</a>
# """ # """
# raise ScoGenError(err_page) # raise ScoGenError(err_page)
# # raise ScoGenError("une erreur banale") # # raise ScoGenError("une erreur banale")
@ -334,7 +334,7 @@ sco_publish(
Permission.ScoChangeFormation, Permission.ScoChangeFormation,
methods=["GET", "POST"], methods=["GET", "POST"],
) )
sco_publish("/ue_list", sco_edit_ue.ue_list, Permission.ScoView) sco_publish("/ue_list", sco_edit_ue.ue_table, Permission.ScoView)
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",
@ -548,8 +548,8 @@ sco_publish(
) )
sco_publish( sco_publish(
"/do_ue_list", "/ue_list",
sco_edit_ue.do_ue_list, sco_edit_ue.ue_list,
Permission.ScoView, Permission.ScoView,
) )
@ -1142,7 +1142,7 @@ def edit_ue_expr(formsemestre_id, ue_id):
raise AccessDenied("vous n'avez pas le droit d'effectuer cette opération") raise AccessDenied("vous n'avez pas le droit d'effectuer cette opération")
cnx = ndb.GetDBConnexion() cnx = ndb.GetDBConnexion()
# #
ue = sco_edit_ue.do_ue_list({"ue_id": ue_id})[0] ue = sco_edit_ue.ue_list({"ue_id": ue_id})[0]
H = [ H = [
html_sco_header.html_sem_header( html_sco_header.html_sem_header(
"Modification règle de calcul de l'UE %s (%s)" "Modification règle de calcul de l'UE %s (%s)"
@ -2431,7 +2431,7 @@ def check_sem_integrity(formsemestre_id, fix=False):
for modimpl in modimpls: for modimpl in modimpls:
mod = sco_edit_module.module_list({"module_id": modimpl["module_id"]})[0] mod = sco_edit_module.module_list({"module_id": modimpl["module_id"]})[0]
formations_set.add(mod["formation_id"]) formations_set.add(mod["formation_id"])
ue = sco_edit_ue.do_ue_list({"ue_id": mod["ue_id"]})[0] ue = sco_edit_ue.ue_list({"ue_id": mod["ue_id"]})[0]
formations_set.add(ue["formation_id"]) formations_set.add(ue["formation_id"])
if ue["formation_id"] != mod["formation_id"]: if ue["formation_id"] != mod["formation_id"]:
modimpl["mod"] = mod modimpl["mod"] = mod
@ -2490,10 +2490,10 @@ def check_sem_integrity(formsemestre_id, fix=False):
def check_form_integrity(formation_id, fix=False): def check_form_integrity(formation_id, fix=False):
"debug" "debug"
log("check_form_integrity: formation_id=%s fix=%s" % (formation_id, fix)) log("check_form_integrity: formation_id=%s fix=%s" % (formation_id, fix))
ues = sco_edit_ue.do_ue_list(args={"formation_id": formation_id}) ues = sco_edit_ue.ue_list(args={"formation_id": formation_id})
bad = [] bad = []
for ue in ues: for ue in ues:
mats = sco_edit_matiere.do_matiere_list(args={"ue_id": ue["ue_id"]}) mats = sco_edit_matiere.matiere_list(args={"ue_id": ue["ue_id"]})
for mat in mats: for mat in mats:
mods = sco_edit_module.module_list({"matiere_id": mat["matiere_id"]}) mods = sco_edit_module.module_list({"matiere_id": mat["matiere_id"]})
for mod in mods: for mod in mods:

View File

@ -170,7 +170,7 @@ class ScoFake(object):
if numero is None: if numero is None:
numero = sco_edit_ue.next_ue_numero(formation_id, 0) numero = sco_edit_ue.next_ue_numero(formation_id, 0)
oid = sco_edit_ue.do_ue_create(locals()) oid = sco_edit_ue.do_ue_create(locals())
oids = sco_edit_ue.do_ue_list(args={"ue_id": oid}) oids = sco_edit_ue.ue_list(args={"ue_id": oid})
if not oids: if not oids:
raise ScoValueError("ue not created !") raise ScoValueError("ue not created !")
return oids[0] return oids[0]
@ -178,7 +178,7 @@ class ScoFake(object):
@logging_meth @logging_meth
def create_matiere(self, ue_id=None, titre=None, numero=None): def create_matiere(self, ue_id=None, titre=None, numero=None):
oid = sco_edit_matiere.do_matiere_create(locals()) oid = sco_edit_matiere.do_matiere_create(locals())
oids = sco_edit_matiere.do_matiere_list(args={"matiere_id": oid}) oids = sco_edit_matiere.matiere_list(args={"matiere_id": oid})
if not oids: if not oids:
raise ScoValueError("matiere not created !") raise ScoValueError("matiere not created !")
return oids[0] return oids[0]

View File

@ -35,9 +35,9 @@
# - do_formsemestre_delete # - do_formsemestre_delete
# - module_list # - module_list
# - do_module_delete # - do_module_delete
# - do_matiere_list # - matiere_list
# - do_matiere_delete # - do_matiere_delete
# - do_ue_list # - ue_list
# - do_ue_delete # - do_ue_delete
# - do_formation_delete # - do_formation_delete
@ -303,16 +303,16 @@ def test_formations(test_client):
assert len(lim_sem2) == 0 # deuxieme vérification si le module s'est bien sup assert len(lim_sem2) == 0 # deuxieme vérification si le module s'est bien sup
li_mat = sco_edit_matiere.do_matiere_list() li_mat = sco_edit_matiere.matiere_list()
assert len(li_mat) == 4 assert len(li_mat) == 4
sco_edit_matiere.do_matiere_delete(oid=matt["matiere_id"]) # on supprime la matiere sco_edit_matiere.do_matiere_delete(oid=matt["matiere_id"]) # on supprime la matiere
li_mat2 = sco_edit_matiere.do_matiere_list() li_mat2 = sco_edit_matiere.matiere_list()
assert len(li_mat2) == 3 # verification de la suppression de la matiere assert len(li_mat2) == 3 # verification de la suppression de la matiere
li_ue = sco_edit_ue.do_ue_list() li_ue = sco_edit_ue.ue_list()
assert len(li_ue) == 4 assert len(li_ue) == 4
sco_edit_ue.ue_delete(ue_id=uet["ue_id"], dialog_confirmed=True) sco_edit_ue.ue_delete(ue_id=uet["ue_id"], dialog_confirmed=True)
li_ue2 = sco_edit_ue.do_ue_list() li_ue2 = sco_edit_ue.ue_list()
assert len(li_ue2) == 3 # verification de la suppression de l'UE assert len(li_ue2) == 3 # verification de la suppression de l'UE
# --- Suppression d'une formation # --- Suppression d'une formation