From 2c97349acf57bc7190da7e4da2a27a336fbb6820 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Tue, 21 Sep 2021 14:01:46 +0200 Subject: [PATCH] =?UTF-8?q?am=C3=A9liore=20affichage=20exceptions=20(ex:?= =?UTF-8?q?=20erreur=20inscription=20=C3=A9tudiants)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/__init__.py | 3 ++- app/scodoc/sco_edit_module.py | 13 ++++++------ app/scodoc/sco_etape_apogee_view.py | 2 +- app/scodoc/sco_etud.py | 30 ++++++++++++++------------- app/scodoc/sco_users.py | 4 ---- app/scodoc/sco_utils.py | 7 ++++--- app/static/css/scodoc.css | 2 +- app/templates/sco_value_error.html | 9 ++++---- app/views/notes.py | 32 +++++++++++++++++++---------- app/views/scolar.py | 5 ----- 10 files changed, 57 insertions(+), 50 deletions(-) diff --git a/app/__init__.py b/app/__init__.py index ac256d8a..a63f9a23 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -25,7 +25,7 @@ from flask_moment import Moment from flask_caching import Cache import sqlalchemy -from app.scodoc.sco_exceptions import ScoValueError, APIInvalidParams +from app.scodoc.sco_exceptions import ScoGenError, ScoValueError, APIInvalidParams from config import DevConfig import sco_version @@ -163,6 +163,7 @@ def create_app(config_class=DevConfig): cache.init_app(app) sco_cache.CACHE = cache + app.register_error_handler(ScoGenError, handle_sco_value_error) app.register_error_handler(ScoValueError, handle_sco_value_error) app.register_error_handler(500, internal_server_error) app.register_error_handler(503, postgresql_server_error) diff --git a/app/scodoc/sco_edit_module.py b/app/scodoc/sco_edit_module.py index 26799f25..8adc3557 100644 --- a/app/scodoc/sco_edit_module.py +++ b/app/scodoc/sco_edit_module.py @@ -259,12 +259,13 @@ def do_module_delete(oid): # S'il y a des moduleimpls, on ne peut pas detruire le module ! mods = sco_moduleimpl.do_moduleimpl_list(module_id=oid) if mods: - err_page = scu.confirm_dialog( - message="""

Destruction du module impossible car il est utilisé dans des semestres existants !

""", - helpmsg="""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.""", - dest_url="ue_list", - parameters={"formation_id": mod["formation_id"]}, - ) + err_page = f"""

Destruction du module impossible car il est utilisé dans des semestres existants !

+

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. +

+ reprendre + """ raise ScoGenError(err_page) # delete cnx = ndb.GetDBConnexion() diff --git a/app/scodoc/sco_etape_apogee_view.py b/app/scodoc/sco_etape_apogee_view.py index a4440bf7..62f22108 100644 --- a/app/scodoc/sco_etape_apogee_view.py +++ b/app/scodoc/sco_etape_apogee_view.py @@ -770,7 +770,7 @@ def view_apo_csv(etape_apo="", semset_id="", format="html", REQUEST=None): return "\n".join(H) -# called from Web +# called from Web (GET) def apo_csv_export_results( semset_id, block_export_res_etape=False, diff --git a/app/scodoc/sco_etud.py b/app/scodoc/sco_etud.py index 04f312cf..a75bad88 100644 --- a/app/scodoc/sco_etud.py +++ b/app/scodoc/sco_etud.py @@ -338,31 +338,33 @@ def _check_duplicate_code( ) if etudid: OK = "retour à la fiche étudiant" - dest_url = "ficheEtud" + dest_endpoint = "scolar.ficheEtud" parameters = {"etudid": etudid} else: if "tf_submitted" in args: del args["tf_submitted"] OK = "Continuer" - dest_url = "etudident_create_form" + dest_endpoint = "scolar.etudident_create_form" parameters = args else: OK = "Annuler" - dest_url = "" + dest_endpoint = "notes.index_html" parameters = {} if not disable_notify: - err_page = scu.confirm_dialog( - message="""

Code étudiant (%s) dupliqué !

""" % code_name, - helpmsg="""Le %s %s est déjà utilisé: un seul étudiant peut avoir ce code. Vérifier votre valeur ou supprimer l'autre étudiant avec cette valeur.

", - OK=OK, - dest_url=dest_url, - parameters=parameters, - ) + err_page = f"""

Code étudiant ({code_name}) dupliqué !

+

Le {code_name} {args[code_name]} est déjà utilisé: un seul étudiant peut avoir + ce code. Vérifier votre valeur ou supprimer l'autre étudiant avec cette valeur. +

+ +

+ {OK} +

+ """ else: - err_page = """

Code étudiant (%s) dupliqué !

""" % code_name + err_page = f"""

Code étudiant ({code_name}) dupliqué !

""" log("*** error: code %s duplique: %s" % (code_name, args[code_name])) raise ScoGenError(err_page) diff --git a/app/scodoc/sco_users.py b/app/scodoc/sco_users.py index 3475daf7..da1f6645 100644 --- a/app/scodoc/sco_users.py +++ b/app/scodoc/sco_users.py @@ -51,11 +51,7 @@ import app.scodoc.sco_utils as scu from app.scodoc.sco_exceptions import ( AccessDenied, - ScoException, ScoValueError, - ScoInvalidDateError, - ScoLockedFormError, - ScoGenError, ) diff --git a/app/scodoc/sco_utils.py b/app/scodoc/sco_utils.py index 93efdb77..b97435ac 100644 --- a/app/scodoc/sco_utils.py +++ b/app/scodoc/sco_utils.py @@ -838,9 +838,10 @@ def confirm_dialog( action = f'action="{dest_url}"' H = [ - f"""
""", - message, - """""" % OK, + f""" + {message} + + """, ] if cancel_url: H.append( diff --git a/app/static/css/scodoc.css b/app/static/css/scodoc.css index 82ada0fe..4b01840b 100644 --- a/app/static/css/scodoc.css +++ b/app/static/css/scodoc.css @@ -154,7 +154,7 @@ div.scovalueerror { p.footer { font-size: 80%; color: rgb(60,60,60); - margin-top: 10px; + margin-top: 15px; border-top: 1px solid rgb(60,60,60); } diff --git a/app/templates/sco_value_error.html b/app/templates/sco_value_error.html index e751f1d8..9b7f3b54 100644 --- a/app/templates/sco_value_error.html +++ b/app/templates/sco_value_error.html @@ -5,13 +5,14 @@

Erreur !

-

{{ exc }}

+{{ exc | safe }} -

+

diff --git a/app/views/notes.py b/app/views/notes.py index a1120714..5f05f249 100644 --- a/app/views/notes.py +++ b/app/views/notes.py @@ -146,23 +146,31 @@ def sco_publish(route, function, permission, methods=["GET"]): # --------------------- Quelques essais élémentaires: -@bp.route("/essai") -@scodoc -@permission_required(Permission.ScoView) -@scodoc7func -def essai(REQUEST=None): - return essai_(REQUEST) +# @bp.route("/essai") +# @scodoc +# @permission_required(Permission.ScoView) +# @scodoc7func +# def essai(REQUEST=None): +# return essai_(REQUEST) -def essai_(REQUEST): - return "

essai !

%s

" % (REQUEST,) +# def essai_(REQUEST): +# return "

essai !

%s

" % (REQUEST,) -def essai2(): - return essai_("sans request") +# def essai2(): +# err_page = f"""

Destruction du module impossible car il est utilisé dans des semestres existants !

+#

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. +#

+# reprendre +# """ +# raise ScoGenError(err_page) +# # raise ScoGenError("une erreur banale") +# return essai_("sans request") -sco_publish("/essai2", essai2, Permission.ScoImplement) +# sco_publish("/essai2", essai2, Permission.ScoImplement) # -------------------------------------------------------------------- @@ -2252,11 +2260,13 @@ sco_publish( "/view_apo_csv_store", sco_etape_apogee_view.view_apo_csv_store, Permission.ScoEditApo, + methods=["GET", "POST"], ) sco_publish( "/view_apo_csv_download_and_store", sco_etape_apogee_view.view_apo_csv_download_and_store, Permission.ScoEditApo, + methods=["GET", "POST"], ) sco_publish( "/view_apo_csv_delete", diff --git a/app/views/scolar.py b/app/views/scolar.py index b3fd1fe1..66875cb9 100644 --- a/app/views/scolar.py +++ b/app/views/scolar.py @@ -68,13 +68,8 @@ from app.scodoc.sco_exceptions import ( AccessDenied, ScoException, ScoValueError, - ScoInvalidDateError, - ScoLockedFormError, - ScoGenError, - ScoInvalidDept, ) from app.scodoc.TrivialFormulator import TrivialFormulator, tf_error_message -import sco_version import app from app.scodoc.gen_tables import GenTable from app.scodoc import html_sco_header