Merge pull request 'de 1 à 4 (co-)directeur d'études' (#484) from jmplace/ScoDoc-Lille:plusieurs_DE into master

Reviewed-on: https://scodoc.org/git/ScoDoc/ScoDoc/pulls/484
This commit is contained in:
Emmanuel Viennet 2022-09-01 22:44:59 +02:00
commit eab7894f4f

View File

@ -142,6 +142,14 @@ def can_edit_sem(formsemestre_id="", sem=None):
return sem return sem
resp_fields = [
"responsable_id",
"responsable_id2",
"responsable_id3",
"responsable_id4",
]
def do_formsemestre_createwithmodules(edit=False): def do_formsemestre_createwithmodules(edit=False):
"Form choix modules / responsables et creation formsemestre" "Form choix modules / responsables et creation formsemestre"
# Fonction accessible à tous, controle acces à la main: # Fonction accessible à tous, controle acces à la main:
@ -192,14 +200,8 @@ def do_formsemestre_createwithmodules(edit=False):
modimpl.responsable_id, modimpl.responsable_id,
f"inconnu numéro {modimpl.responsable_id} resp. de {modimpl.id} !", f"inconnu numéro {modimpl.responsable_id} resp. de {modimpl.id} !",
) )
if sem["responsables"]: for index, resp in enumerate(sem["responsables"]):
initvalues["responsable_id"] = uid2display.get( initvalues[resp_fields[index]] = uid2display.get(resp)
sem["responsables"][0], sem["responsables"][0]
)
if len(sem["responsables"]) > 1:
initvalues["responsable_id2"] = uid2display.get(
sem["responsables"][1], sem["responsables"][1]
)
# Liste des ID de semestres # Liste des ID de semestres
if formation.type_parcours is not None: if formation.type_parcours is not None:
@ -274,48 +276,30 @@ def do_formsemestre_createwithmodules(edit=False):
"allow_null": False, "allow_null": False,
}, },
), ),
( *[
"responsable_id", (
{ field,
"input_type": "text_suggest", {
"size": 50, "input_type": "text_suggest",
"title": "Directeur des études", "size": 50,
"explanation": "taper le début du nom et choisir dans le menu", "title": "(Co-)Directeur(s) des études",
"allowed_values": allowed_user_names, "explanation": "taper le début du nom et choisir dans le menu",
"allow_null": False, # il faut au moins un responsable de semestre "allowed_values": allowed_user_names,
"text_suggest_options": { "allow_null": index, # > 0, # il faut au moins un responsable de semestre
"script": url_for( "text_suggest_options": {
"users.get_user_list_xml", scodoc_dept=g.scodoc_dept "script": url_for(
) "users.get_user_list_xml", scodoc_dept=g.scodoc_dept
+ "?", # "Users/get_user_list_xml?", )
"varname": "start", + "?", # "Users/get_user_list_xml?",
"json": False, "varname": "start",
"noresults": "Valeur invalide !", "json": False,
"timeout": 60000, "noresults": "Valeur invalide !",
"timeout": 60000,
},
}, },
}, )
), for index, field in enumerate(resp_fields)
( ],
"responsable_id2",
{
"input_type": "text_suggest",
"size": 50,
"title": "Co-directeur des études",
"explanation": "",
"allowed_values": allowed_user_names,
"allow_null": True, # optionnel
"text_suggest_options": {
"script": url_for(
"users.get_user_list_xml", scodoc_dept=g.scodoc_dept
)
+ "?",
"varname": "start",
"json": False,
"noresults": "Valeur invalide !",
"timeout": 60000,
},
},
),
( (
"titre", "titre",
{ {
@ -781,16 +765,12 @@ def do_formsemestre_createwithmodules(edit=False):
else: else:
tf[2]["bul_hide_xml"] = True tf[2]["bul_hide_xml"] = True
# remap les identifiants de responsables: # remap les identifiants de responsables:
tf[2]["responsable_id"] = User.get_user_id_from_nomplogin( for field in resp_fields:
tf[2]["responsable_id"] tf[2][field] = User.get_user_id_from_nomplogin(tf[2][field])
) tf[2]["responsables"] = []
tf[2]["responsable_id2"] = User.get_user_id_from_nomplogin( for field in resp_fields:
tf[2]["responsable_id2"] if tf[2][field]:
) tf[2]["responsables"].append(tf[2][field])
tf[2]["responsables"] = [tf[2]["responsable_id"]]
if tf[2]["responsable_id2"]:
tf[2]["responsables"].append(tf[2]["responsable_id2"])
for module_id in tf[2]["tf-checked"]: for module_id in tf[2]["tf-checked"]:
mod_resp_id = User.get_user_id_from_nomplogin(tf[2][module_id]) mod_resp_id = User.get_user_id_from_nomplogin(tf[2][module_id])
if mod_resp_id is None: if mod_resp_id is None: