diff --git a/app/scodoc/sco_evaluations.py b/app/scodoc/sco_evaluations.py index eff9e910..fe91af31 100644 --- a/app/scodoc/sco_evaluations.py +++ b/app/scodoc/sco_evaluations.py @@ -1227,7 +1227,7 @@ def evaluation_create_form( initvalues["visibulletinlist"] = ["X"] else: initvalues["visibulletinlist"] = [] - vals = request.form if request.method == "POST" else request.args + vals = (request.form if request.method == "POST" else request.args).copy() if vals.get("tf_submitted", False) and "visibulletinlist" not in vals: request.form["visibulletinlist"] = [] # diff --git a/app/scodoc/sco_formsemestre_edit.py b/app/scodoc/sco_formsemestre_edit.py index e5d89f4a..5beb17be 100644 --- a/app/scodoc/sco_formsemestre_edit.py +++ b/app/scodoc/sco_formsemestre_edit.py @@ -109,7 +109,7 @@ def formsemestre_editwithmodules(formsemestre_id): H.append(r) else: return r # response redirect - vals = request.form if request.method == "POST" else request.args + vals = (request.form if request.method == "POST" else request.args).copy() if not vals.get("tf_submitted", False): H.append( """

Seuls les modules cochés font partie de ce semestre. Pour les retirer, les décocher et appuyer sur le bouton "modifier". @@ -133,7 +133,7 @@ def can_edit_sem(formsemestre_id="", sem=None): def do_formsemestre_createwithmodules(edit=False): "Form choix modules / responsables et creation formsemestre" # Fonction accessible à tous, controle acces à la main: - vals = request.form if request.method == "POST" else request.args + vals = (request.form if request.method == "POST" else request.args).copy() if edit: formsemestre_id = int(vals["formsemestre_id"]) sem = sco_formsemestre.get_formsemestre(formsemestre_id) @@ -1434,7 +1434,7 @@ def formsemestre_edit_options(formsemestre_id): return sco_preferences.SemPreferences(formsemestre_id).edit(categories=["bul"]) -def formsemestre_change_lock(formsemestre_id, dialog_confirmed=False) -> None: +def formsemestre_change_lock(formsemestre_id) -> None: """Change etat (verrouille si ouvert, déverrouille si fermé) nota: etat (1 ouvert, 0 fermé) """ @@ -1444,24 +1444,6 @@ def formsemestre_change_lock(formsemestre_id, dialog_confirmed=False) -> None: sem = sco_formsemestre.get_formsemestre(formsemestre_id) etat = not sem["etat"] - if not dialog_confirmed: - if etat: - msg = "déverrouillage" - else: - msg = "verrouillage" - return scu.confirm_dialog( - "

Confirmer le %s du semestre ?

" % msg, - helpmsg="""Les notes d'un semestre verrouillé ne peuvent plus être modifiées. - Un semestre verrouillé peut cependant être déverrouillé facilement à tout moment - (par son responsable ou un administrateur). -
- Le programme d'une formation qui a un semestre verrouillé ne peut plus être modifié. - """, - dest_url="", - cancel_url="formsemestre_status?formsemestre_id=%s" % formsemestre_id, - parameters={"formsemestre_id": formsemestre_id}, - ) - args = {"formsemestre_id": formsemestre_id, "etat": etat} sco_formsemestre.do_formsemestre_edit(args) diff --git a/app/scodoc/sco_formsemestre_inscriptions.py b/app/scodoc/sco_formsemestre_inscriptions.py index 5d1df170..90c37d91 100644 --- a/app/scodoc/sco_formsemestre_inscriptions.py +++ b/app/scodoc/sco_formsemestre_inscriptions.py @@ -467,7 +467,7 @@ def formsemestre_inscription_option(etudid, formsemestre_id): modimpls_by_ue_names[ue_id].append( "%s %s" % (mod["module"]["code"], mod["module"]["titre"]) ) - vals = request.form if request.method == "POST" else request.args + vals = (request.form if request.method == "POST" else request.args).copy() if not vals.get("tf_submitted", False): # inscrit ? for ins in inscr: diff --git a/app/scodoc/sco_inscr_passage.py b/app/scodoc/sco_inscr_passage.py index 22624f7b..5adcc593 100644 --- a/app/scodoc/sco_inscr_passage.py +++ b/app/scodoc/sco_inscr_passage.py @@ -291,7 +291,6 @@ def formsemestre_inscr_passage( etuds = etuds.split(",") # vient du form de confirmation elif isinstance(etuds, int): etuds = [etuds] - auth_etuds_by_sem, inscrits, candidats = list_authorized_etuds_by_sem(sem) etuds_set = set(etuds) candidats_set = set(candidats) diff --git a/app/scodoc/sco_liste_notes.py b/app/scodoc/sco_liste_notes.py index 6d6a6111..4a232482 100644 --- a/app/scodoc/sco_liste_notes.py +++ b/app/scodoc/sco_liste_notes.py @@ -64,7 +64,7 @@ def do_evaluation_listenotes(): (si moduleimpl_id, affiche toutes les évaluatons du module) """ mode = None - vals = request.form if request.method == "POST" else request.args + vals = (request.form if request.method == "POST" else request.args).copy() if "evaluation_id" in vals: evaluation_id = int(vals["evaluation_id"]) mode = "eval" diff --git a/app/scodoc/sco_saisie_notes.py b/app/scodoc/sco_saisie_notes.py index 8e926b24..07898a62 100644 --- a/app/scodoc/sco_saisie_notes.py +++ b/app/scodoc/sco_saisie_notes.py @@ -169,7 +169,7 @@ def do_evaluation_upload_xls(): Soumission d'un fichier XLS (evaluation_id, notefile) """ authuser = current_user - vals = request.form if request.method == "POST" else request.args + vals = (request.form if request.method == "POST" else request.args).copy() evaluation_id = int(vals["evaluation_id"]) comment = vals["comment"] E = sco_evaluations.do_evaluation_list({"evaluation_id": evaluation_id})[0] diff --git a/app/scodoc/sco_trombino.py b/app/scodoc/sco_trombino.py index 747e92f9..a5658b96 100644 --- a/app/scodoc/sco_trombino.py +++ b/app/scodoc/sco_trombino.py @@ -514,7 +514,7 @@ def photos_import_files_form(group_ids=[]): % groups_infos.groups_query_args, ] F = html_sco_header.sco_footer() - vals = request.form if request.method == "POST" else request.args + vals = (request.form if request.method == "POST" else request.args).copy() vals["group_ids"] = groups_infos.group_ids tf = TrivialFormulator( request.base_url, diff --git a/app/views/entreprises.py b/app/views/entreprises.py index 6843b518..8a8de35d 100644 --- a/app/views/entreprises.py +++ b/app/views/entreprises.py @@ -94,7 +94,7 @@ def sidebar(): ) # --- entreprise selectionnée: - vals = request.form if request.method == "POST" else request.args + vals = (request.form if request.method == "POST" else request.args).copy() if "entreprise_id" in vals: entreprise_id = vals["entreprise_id"] E = sco_entreprises.do_entreprise_list(args={"entreprise_id": entreprise_id}) @@ -147,7 +147,7 @@ def index_html(etud_nom=None, limit=50, offset="", format="html"): limit = int(limit) if offset: offset = int(offset or 0) - vals = request.form if request.method == "POST" else request.args + vals = (request.form if request.method == "POST" else request.args).copy() if etud_nom: entreprises = sco_entreprises.do_entreprise_list_by_etud( args=vals, sort_on_contact=True diff --git a/app/views/notes.py b/app/views/notes.py index f827fe05..530877af 100644 --- a/app/views/notes.py +++ b/app/views/notes.py @@ -676,9 +676,30 @@ sco_publish( @permission_required(Permission.ScoView) # acces vérifié dans la fonction @scodoc7func def formsemestre_change_lock(formsemestre_id, dialog_confirmed=False): - sco_formsemestre_edit.formsemestre_change_lock( - formsemestre_id, dialog_confirmed=dialog_confirmed - ) + "Changement de l'état de verrouillage du semestre" + + if not dialog_confirmed: + sem = sco_formsemestre.get_formsemestre(formsemestre_id) + etat = not sem["etat"] + if etat: + msg = "déverrouillage" + else: + msg = "verrouillage" + return scu.confirm_dialog( + "

Confirmer le %s du semestre ?

" % msg, + helpmsg="""Les notes d'un semestre verrouillé ne peuvent plus être modifiées. + Un semestre verrouillé peut cependant être déverrouillé facilement à tout moment + (par son responsable ou un administrateur). +
+ Le programme d'une formation qui a un semestre verrouillé ne peut plus être modifié. + """, + dest_url="", + cancel_url="formsemestre_status?formsemestre_id=%s" % formsemestre_id, + parameters={"formsemestre_id": formsemestre_id}, + ) + + sco_formsemestre_edit.formsemestre_change_lock(formsemestre_id) + return flask.redirect( url_for( "notes.formsemestre_status", @@ -1871,7 +1892,7 @@ def appreciation_add_form( app = apps[0] formsemestre_id = app["formsemestre_id"] etudid = app["etudid"] - vals = request.form if request.method == "POST" else request.args + vals = (request.form if request.method == "POST" else request.args).copy() if "edit" in vals: edit = int(vals["edit"]) elif id: diff --git a/app/views/scolar.py b/app/views/scolar.py index f8168efb..41a2c6a5 100644 --- a/app/views/scolar.py +++ b/app/views/scolar.py @@ -1134,7 +1134,7 @@ def _etudident_create_or_edit_form(edit): "Le formulaire HTML" H = [html_sco_header.sco_header(init_jquery_ui=True)] F = html_sco_header.sco_footer() - vals = request.form if request.method == "POST" else request.args + vals = (request.form if request.method == "POST" else request.args).copy() etudid = vals.get("etudid", None) cnx = ndb.GetDBConnexion() descr = [] @@ -1177,7 +1177,7 @@ def _etudident_create_or_edit_form(edit): # except ValueError: # infos = None # pass # XXX a terminer - vals = request.form if request.method == "POST" else request.args + vals = (request.form if request.method == "POST" else request.args).copy() nom = vals.get("nom", None) if nom is None: nom = initvalues.get("nom", None) diff --git a/app/views/users.py b/app/views/users.py index 4c44161b..533b8d78 100644 --- a/app/views/users.py +++ b/app/views/users.py @@ -330,7 +330,7 @@ def create_user_form(user_name=None, edit=0, all_roles=1): }, ), ] - vals = request.form if request.method == "POST" else request.args + vals = (request.form if request.method == "POST" else request.args).copy() if "tf_submitted" in vals and not "roles" in vals: vals["roles"] = [] if "tf_submitted" in vals: diff --git a/sco_version.py b/sco_version.py index 8ec2aed9..41d1cfd9 100644 --- a/sco_version.py +++ b/sco_version.py @@ -1,7 +1,7 @@ # -*- mode: python -*- # -*- coding: utf-8 -*- -SCOVERSION = "9.0.39" +SCOVERSION = "9.0.40" SCONAME = "ScoDoc"