forked from ScoDoc/DocScoDoc
améliore affichage exceptions (ex: erreur inscription étudiants)
This commit is contained in:
parent
5dfc64a62d
commit
2c97349acf
@ -25,7 +25,7 @@ from flask_moment import Moment
|
|||||||
from flask_caching import Cache
|
from flask_caching import Cache
|
||||||
import sqlalchemy
|
import sqlalchemy
|
||||||
|
|
||||||
from app.scodoc.sco_exceptions import ScoValueError, APIInvalidParams
|
from app.scodoc.sco_exceptions import ScoGenError, ScoValueError, APIInvalidParams
|
||||||
from config import DevConfig
|
from config import DevConfig
|
||||||
import sco_version
|
import sco_version
|
||||||
|
|
||||||
@ -163,6 +163,7 @@ def create_app(config_class=DevConfig):
|
|||||||
cache.init_app(app)
|
cache.init_app(app)
|
||||||
sco_cache.CACHE = cache
|
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(ScoValueError, handle_sco_value_error)
|
||||||
app.register_error_handler(500, internal_server_error)
|
app.register_error_handler(500, internal_server_error)
|
||||||
app.register_error_handler(503, postgresql_server_error)
|
app.register_error_handler(503, postgresql_server_error)
|
||||||
|
@ -259,12 +259,13 @@ def do_module_delete(oid):
|
|||||||
# S'il y a des moduleimpls, on ne peut pas detruire le module !
|
# S'il y a des moduleimpls, on ne peut pas detruire le module !
|
||||||
mods = sco_moduleimpl.do_moduleimpl_list(module_id=oid)
|
mods = sco_moduleimpl.do_moduleimpl_list(module_id=oid)
|
||||||
if mods:
|
if mods:
|
||||||
err_page = scu.confirm_dialog(
|
err_page = f"""<h3>Destruction du module impossible car il est utilisé dans des semestres existants !</h3>
|
||||||
message="""<h3>Destruction du module impossible car il est utilisé dans des semestres existants !</h3>""",
|
<p class="help">Il faut d'abord supprimer le semestre. Mais il est peut être préférable de
|
||||||
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.""",
|
laisser ce programme intact et d'en créer une nouvelle version pour la modifier.
|
||||||
dest_url="ue_list",
|
</p>
|
||||||
parameters={"formation_id": mod["formation_id"]},
|
<a href="{url_for('notes.ue_list', scodoc_dept=g.scodoc_dept,
|
||||||
)
|
formation_id=mod["formation_id"])}">reprendre</a>
|
||||||
|
"""
|
||||||
raise ScoGenError(err_page)
|
raise ScoGenError(err_page)
|
||||||
# delete
|
# delete
|
||||||
cnx = ndb.GetDBConnexion()
|
cnx = ndb.GetDBConnexion()
|
||||||
|
@ -770,7 +770,7 @@ def view_apo_csv(etape_apo="", semset_id="", format="html", REQUEST=None):
|
|||||||
return "\n".join(H)
|
return "\n".join(H)
|
||||||
|
|
||||||
|
|
||||||
# called from Web
|
# called from Web (GET)
|
||||||
def apo_csv_export_results(
|
def apo_csv_export_results(
|
||||||
semset_id,
|
semset_id,
|
||||||
block_export_res_etape=False,
|
block_export_res_etape=False,
|
||||||
|
@ -338,31 +338,33 @@ def _check_duplicate_code(
|
|||||||
)
|
)
|
||||||
if etudid:
|
if etudid:
|
||||||
OK = "retour à la fiche étudiant"
|
OK = "retour à la fiche étudiant"
|
||||||
dest_url = "ficheEtud"
|
dest_endpoint = "scolar.ficheEtud"
|
||||||
parameters = {"etudid": etudid}
|
parameters = {"etudid": etudid}
|
||||||
else:
|
else:
|
||||||
if "tf_submitted" in args:
|
if "tf_submitted" in args:
|
||||||
del args["tf_submitted"]
|
del args["tf_submitted"]
|
||||||
OK = "Continuer"
|
OK = "Continuer"
|
||||||
dest_url = "etudident_create_form"
|
dest_endpoint = "scolar.etudident_create_form"
|
||||||
parameters = args
|
parameters = args
|
||||||
else:
|
else:
|
||||||
OK = "Annuler"
|
OK = "Annuler"
|
||||||
dest_url = ""
|
dest_endpoint = "notes.index_html"
|
||||||
parameters = {}
|
parameters = {}
|
||||||
if not disable_notify:
|
if not disable_notify:
|
||||||
err_page = scu.confirm_dialog(
|
err_page = f"""<h3><h3>Code étudiant ({code_name}) dupliqué !</h3>
|
||||||
message="""<h3>Code étudiant (%s) dupliqué !</h3>""" % code_name,
|
<p class="help">Le {code_name} {args[code_name]} est déjà utilisé: un seul étudiant peut avoir
|
||||||
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.<p><ul><li>"""
|
ce code. Vérifier votre valeur ou supprimer l'autre étudiant avec cette valeur.
|
||||||
% (code_name, args[code_name])
|
</p>
|
||||||
+ "</li><li>".join(listh)
|
<ul><li>
|
||||||
+ "</li></ul><p>",
|
{ '</li><li>'.join(listh) }
|
||||||
OK=OK,
|
</li></ul>
|
||||||
dest_url=dest_url,
|
<p>
|
||||||
parameters=parameters,
|
<a href="{ url_for(dest_endpoint, scodoc_dept=g.scodoc_dept, **parameters) }
|
||||||
)
|
">{OK}</a>
|
||||||
|
</p>
|
||||||
|
"""
|
||||||
else:
|
else:
|
||||||
err_page = """<h3>Code étudiant (%s) dupliqué !</h3>""" % code_name
|
err_page = f"""<h3>Code étudiant ({code_name}) dupliqué !</h3>"""
|
||||||
log("*** error: code %s duplique: %s" % (code_name, args[code_name]))
|
log("*** error: code %s duplique: %s" % (code_name, args[code_name]))
|
||||||
raise ScoGenError(err_page)
|
raise ScoGenError(err_page)
|
||||||
|
|
||||||
|
@ -51,11 +51,7 @@ import app.scodoc.sco_utils as scu
|
|||||||
|
|
||||||
from app.scodoc.sco_exceptions import (
|
from app.scodoc.sco_exceptions import (
|
||||||
AccessDenied,
|
AccessDenied,
|
||||||
ScoException,
|
|
||||||
ScoValueError,
|
ScoValueError,
|
||||||
ScoInvalidDateError,
|
|
||||||
ScoLockedFormError,
|
|
||||||
ScoGenError,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -838,9 +838,10 @@ def confirm_dialog(
|
|||||||
action = f'action="{dest_url}"'
|
action = f'action="{dest_url}"'
|
||||||
|
|
||||||
H = [
|
H = [
|
||||||
f"""<form {action} method="post">""",
|
f"""<form {action} method="POST">
|
||||||
message,
|
{message}
|
||||||
"""<input type="submit" value="%s"/>""" % OK,
|
<input type="submit" value="{OK}"/>
|
||||||
|
""",
|
||||||
]
|
]
|
||||||
if cancel_url:
|
if cancel_url:
|
||||||
H.append(
|
H.append(
|
||||||
|
@ -154,7 +154,7 @@ div.scovalueerror {
|
|||||||
p.footer {
|
p.footer {
|
||||||
font-size: 80%;
|
font-size: 80%;
|
||||||
color: rgb(60,60,60);
|
color: rgb(60,60,60);
|
||||||
margin-top: 10px;
|
margin-top: 15px;
|
||||||
border-top: 1px solid rgb(60,60,60);
|
border-top: 1px solid rgb(60,60,60);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,13 +5,14 @@
|
|||||||
|
|
||||||
<h2>Erreur !</h2>
|
<h2>Erreur !</h2>
|
||||||
|
|
||||||
<p>{{ exc }}</p>
|
{{ exc | safe }}
|
||||||
|
|
||||||
<p>
|
<p class="footer">
|
||||||
{% if g.scodoc_dept %}
|
{% if g.scodoc_dept %}
|
||||||
<a href="{{ exc.dest_url or url_for('scolar.index_html', scodoc_dept=g.scodoc_dept) }}">continuer</a>
|
<a href="{{ exc.dest_url or url_for('scolar.index_html', scodoc_dept=g.scodoc_dept) }}">retour page d'accueil
|
||||||
|
departement {{ g.scodoc_dept }}</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a href="{{ exc.dest_url or url_for('scodoc.index') }}">continuer</a>
|
<a href="{{ exc.dest_url or url_for('scodoc.index') }}">retour page d'accueil</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
@ -146,23 +146,31 @@ def sco_publish(route, function, permission, methods=["GET"]):
|
|||||||
|
|
||||||
|
|
||||||
# --------------------- Quelques essais élémentaires:
|
# --------------------- Quelques essais élémentaires:
|
||||||
@bp.route("/essai")
|
# @bp.route("/essai")
|
||||||
@scodoc
|
# @scodoc
|
||||||
@permission_required(Permission.ScoView)
|
# @permission_required(Permission.ScoView)
|
||||||
@scodoc7func
|
# @scodoc7func
|
||||||
def essai(REQUEST=None):
|
# def essai(REQUEST=None):
|
||||||
return essai_(REQUEST)
|
# return essai_(REQUEST)
|
||||||
|
|
||||||
|
|
||||||
def essai_(REQUEST):
|
# def essai_(REQUEST):
|
||||||
return "<html><body><h2>essai !</h2><p>%s</p></body></html>" % (REQUEST,)
|
# return "<html><body><h2>essai !</h2><p>%s</p></body></html>" % (REQUEST,)
|
||||||
|
|
||||||
|
|
||||||
def essai2():
|
# def essai2():
|
||||||
return essai_("sans request")
|
# err_page = f"""<h3>Destruction du module impossible car il est utilisé dans des semestres existants !</h3>
|
||||||
|
# <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.
|
||||||
|
# </p>
|
||||||
|
# <a href="url_for('notes.ue_list', scodoc-dept=g.scodoc_dept, formation_id='XXX')">reprendre</a>
|
||||||
|
# """
|
||||||
|
# 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",
|
"/view_apo_csv_store",
|
||||||
sco_etape_apogee_view.view_apo_csv_store,
|
sco_etape_apogee_view.view_apo_csv_store,
|
||||||
Permission.ScoEditApo,
|
Permission.ScoEditApo,
|
||||||
|
methods=["GET", "POST"],
|
||||||
)
|
)
|
||||||
sco_publish(
|
sco_publish(
|
||||||
"/view_apo_csv_download_and_store",
|
"/view_apo_csv_download_and_store",
|
||||||
sco_etape_apogee_view.view_apo_csv_download_and_store,
|
sco_etape_apogee_view.view_apo_csv_download_and_store,
|
||||||
Permission.ScoEditApo,
|
Permission.ScoEditApo,
|
||||||
|
methods=["GET", "POST"],
|
||||||
)
|
)
|
||||||
sco_publish(
|
sco_publish(
|
||||||
"/view_apo_csv_delete",
|
"/view_apo_csv_delete",
|
||||||
|
@ -68,13 +68,8 @@ from app.scodoc.sco_exceptions import (
|
|||||||
AccessDenied,
|
AccessDenied,
|
||||||
ScoException,
|
ScoException,
|
||||||
ScoValueError,
|
ScoValueError,
|
||||||
ScoInvalidDateError,
|
|
||||||
ScoLockedFormError,
|
|
||||||
ScoGenError,
|
|
||||||
ScoInvalidDept,
|
|
||||||
)
|
)
|
||||||
from app.scodoc.TrivialFormulator import TrivialFormulator, tf_error_message
|
from app.scodoc.TrivialFormulator import TrivialFormulator, tf_error_message
|
||||||
import sco_version
|
|
||||||
import app
|
import app
|
||||||
from app.scodoc.gen_tables import GenTable
|
from app.scodoc.gen_tables import GenTable
|
||||||
from app.scodoc import html_sco_header
|
from app.scodoc import html_sco_header
|
||||||
|
Loading…
Reference in New Issue
Block a user