méthodes POST.

This commit is contained in:
Emmanuel Viennet 2021-06-25 19:24:12 +02:00
parent 8d62455ef0
commit eba7e17628
6 changed files with 132 additions and 46 deletions

View File

@ -61,7 +61,6 @@ def _isFarFutur(jour):
def _toboolean(x): def _toboolean(x):
"convert a value to boolean" "convert a value to boolean"
assert (x is None) or isinstance(x, types.IntType) # sco8
return bool(x) return bool(x)

View File

@ -124,7 +124,7 @@ class BaseArchiver:
base base
+ "[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]" + "[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]"
) )
dirs = [os.path.join(base, d) for d in dirs] dirs = [os.path.join(base, d).encode(scu.SCO_ENCODING) for d in dirs] # sco8
dirs = [d for d in dirs if os.path.isdir(d) and os.listdir(d)] # non empty dirs dirs = [d for d in dirs if os.path.isdir(d) and os.listdir(d)] # non empty dirs
dirs.sort() dirs.sort()
return dirs return dirs
@ -150,7 +150,7 @@ class BaseArchiver:
finally: finally:
scu.GSL.release() scu.GSL.release()
files.sort() files.sort()
return [f for f in files if f and f[0] != "_"] return [f.encode(scu.SCO_ENCODING) for f in files if f and f[0] != "_"] # sco8
def get_archive_name(self, archive_id): def get_archive_name(self, archive_id):
"""name identifying archive, to be used in web URLs""" """name identifying archive, to be used in web URLs"""

View File

@ -167,13 +167,13 @@ def etud_upload_file_form(context, REQUEST, etudid):
elif tf[0] == -1: elif tf[0] == -1:
return REQUEST.RESPONSE.redirect(scu.NotesURL() + "/ficheEtud?etudid=" + etudid) return REQUEST.RESPONSE.redirect(scu.NotesURL() + "/ficheEtud?etudid=" + etudid)
else: else:
data = tf[2]["datafile"].read() data = tf[2]["datafile"][0].read()
descr = tf[2]["description"] descr = tf[2]["description"]
filename = tf[2]["datafile"].filename filename = tf[2]["datafile"][0].filename
_store_etud_file_to_new_archive( _store_etud_file_to_new_archive(
context, REQUEST, etudid, data, filename, description=descr context, REQUEST, etudid, data, filename, description=descr
) )
return REQUEST.RESPONSE.redirect(scu.NotesURL() + "/ficheEtud?etudid=" + etudid) return REQUEST.RESPONSE.redirect(scu.ScoURL() + "/ficheEtud?etudid=" + etudid)
def _store_etud_file_to_new_archive( def _store_etud_file_to_new_archive(

View File

@ -93,7 +93,7 @@ CONFIG.ETABL_FILENAME = "config/etablissements.csv"
CONFIG.ALLOW_NULL_PRENOM = False CONFIG.ALLOW_NULL_PRENOM = False
# Taille max des fichiers archive etudiants (en octets) # Taille max des fichiers archive etudiants (en octets)
# CONFIG.ETUD_MAX_FILE_SIZE = 10 * 1024 * 1024 CONFIG.ETUD_MAX_FILE_SIZE = 10 * 1024 * 1024
# Si pas de photo et portail, publie l'url (était vrai jusqu'en oct 2016) # Si pas de photo et portail, publie l'url (était vrai jusqu'en oct 2016)
CONFIG.PUBLISH_PORTAL_PHOTO_URL = False CONFIG.PUBLISH_PORTAL_PHOTO_URL = False

View File

@ -136,11 +136,9 @@ def sco_publish(route, function, permission, methods=["GET"]):
"""Declare a route for a python function, """Declare a route for a python function,
protected by permission and called following ScoDoc 7 Zope standards. protected by permission and called following ScoDoc 7 Zope standards.
""" """
# f = return bp.route(route, methods=methods)(
bp.route(route, methods=methods)(
permission_required(permission)(scodoc7func(context)(function)) permission_required(permission)(scodoc7func(context)(function))
) )
# setattr(sys.modules[__name__], f.__name__, f)
# --------------------- Quelques essais élémentaires: # --------------------- Quelques essais élémentaires:
@ -277,14 +275,19 @@ sco_publish(
"/formation_create", "/formation_create",
sco_edit_formation.formation_create, sco_edit_formation.formation_create,
Permission.ScoChangeFormation, Permission.ScoChangeFormation,
methods=["GET", "POST"],
) )
sco_publish( sco_publish(
"/formation_delete", "/formation_delete",
sco_edit_formation.formation_delete, sco_edit_formation.formation_delete,
Permission.ScoChangeFormation, Permission.ScoChangeFormation,
methods=["GET", "POST"],
) )
sco_publish( sco_publish(
"/formation_edit", sco_edit_formation.formation_edit, Permission.ScoChangeFormation "/formation_edit",
sco_edit_formation.formation_edit,
Permission.ScoChangeFormation,
methods=["GET", "POST"],
) )
sco_publish( sco_publish(
"/formsemestre_bulletinetud", "/formsemestre_bulletinetud",
@ -316,9 +319,24 @@ sco_publish(
sco_undo_notes.formsemestre_list_saisies_notes, sco_undo_notes.formsemestre_list_saisies_notes,
Permission.ScoView, Permission.ScoView,
) )
sco_publish("/ue_create", sco_edit_ue.ue_create, Permission.ScoChangeFormation) sco_publish(
sco_publish("/ue_delete", sco_edit_ue.ue_delete, Permission.ScoChangeFormation) "/ue_create",
sco_publish("/ue_edit", sco_edit_ue.ue_edit, Permission.ScoChangeFormation) sco_edit_ue.ue_create,
Permission.ScoChangeFormation,
methods=["GET", "POST"],
)
sco_publish(
"/ue_delete",
sco_edit_ue.ue_delete,
Permission.ScoChangeFormation,
methods=["GET", "POST"],
)
sco_publish(
"/ue_edit",
sco_edit_ue.ue_edit,
Permission.ScoChangeFormation,
methods=["GET", "POST"],
)
sco_publish("/ue_list", sco_edit_ue.ue_list, Permission.ScoView) sco_publish("/ue_list", sco_edit_ue.ue_list, 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(
@ -335,21 +353,41 @@ sco_publish(
Permission.ScoChangeFormation, Permission.ScoChangeFormation,
) )
sco_publish( sco_publish(
"/matiere_create", sco_edit_matiere.matiere_create, Permission.ScoChangeFormation "/matiere_create",
sco_edit_matiere.matiere_create,
Permission.ScoChangeFormation,
methods=["GET", "POST"],
) )
sco_publish( sco_publish(
"/matiere_delete", sco_edit_matiere.matiere_delete, Permission.ScoChangeFormation "/matiere_delete",
sco_edit_matiere.matiere_delete,
Permission.ScoChangeFormation,
methods=["GET", "POST"],
) )
sco_publish( sco_publish(
"/matiere_edit", sco_edit_matiere.matiere_edit, Permission.ScoChangeFormation "/matiere_edit",
sco_edit_matiere.matiere_edit,
Permission.ScoChangeFormation,
methods=["GET", "POST"],
) )
sco_publish( sco_publish(
"/module_create", sco_edit_module.module_create, Permission.ScoChangeFormation "/module_create",
sco_edit_module.module_create,
Permission.ScoChangeFormation,
methods=["GET", "POST"],
) )
sco_publish( sco_publish(
"/module_delete", sco_edit_module.module_delete, Permission.ScoChangeFormation "/module_delete",
sco_edit_module.module_delete,
Permission.ScoChangeFormation,
methods=["GET", "POST"],
)
sco_publish(
"/module_edit",
sco_edit_module.module_edit,
Permission.ScoChangeFormation,
methods=["GET", "POST"],
) )
sco_publish("/module_edit", sco_edit_module.module_edit, Permission.ScoChangeFormation)
sco_publish( sco_publish(
"/edit_module_set_code_apogee", "/edit_module_set_code_apogee",
sco_edit_module.edit_module_set_code_apogee, sco_edit_module.edit_module_set_code_apogee,
@ -406,12 +444,14 @@ sco_publish(
"/do_formation_create", "/do_formation_create",
sco_edit_formation.do_formation_create, sco_edit_formation.do_formation_create,
Permission.ScoChangeFormation, Permission.ScoChangeFormation,
methods=["GET", "POST"],
) )
sco_publish( sco_publish(
"/do_formation_delete", "/do_formation_delete",
sco_edit_formation.do_formation_delete, sco_edit_formation.do_formation_delete,
Permission.ScoChangeFormation, Permission.ScoChangeFormation,
methods=["GET", "POST"],
) )
@ -448,7 +488,7 @@ def formation_import_xml(context, file, REQUEST):
return sco_formations.formation_import_xml(context, REQUEST, doc) return sco_formations.formation_import_xml(context, REQUEST, doc)
@bp.route("/formation_import_xml_form") @bp.route("/formation_import_xml_form", methods=["GET", "POST"])
@permission_required(Permission.ScoChangeFormation) @permission_required(Permission.ScoChangeFormation)
@scodoc7func(context) @scodoc7func(context)
def formation_import_xml_form(context, REQUEST): def formation_import_xml_form(context, REQUEST):
@ -499,6 +539,7 @@ sco_publish(
"/do_ue_create", "/do_ue_create",
sco_edit_ue.do_ue_create, sco_edit_ue.do_ue_create,
Permission.ScoChangeFormation, Permission.ScoChangeFormation,
methods=["GET", "POST"],
) )
sco_publish( sco_publish(
@ -513,6 +554,7 @@ sco_publish(
"/do_matiere_create", "/do_matiere_create",
sco_edit_matiere.do_matiere_create, sco_edit_matiere.do_matiere_create,
Permission.ScoChangeFormation, Permission.ScoChangeFormation,
methods=["GET", "POST"],
) )
sco_publish( sco_publish(
"/do_matiere_delete", "/do_matiere_delete",
@ -638,7 +680,7 @@ sco_publish(
) )
@bp.route("/formsemestre_custommenu_edit") @bp.route("/formsemestre_custommenu_edit", methods=["GET", "POST"])
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context) @scodoc7func(context)
def formsemestre_custommenu_edit(context, REQUEST, formsemestre_id): def formsemestre_custommenu_edit(context, REQUEST, formsemestre_id):
@ -650,7 +692,7 @@ def formsemestre_custommenu_edit(context, REQUEST, formsemestre_id):
# --- dialogue modif enseignants/moduleimpl # --- dialogue modif enseignants/moduleimpl
@bp.route("/edit_enseignants_form") @bp.route("/edit_enseignants_form", methods=["GET", "POST"])
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context) @scodoc7func(context)
def edit_enseignants_form(context, REQUEST, moduleimpl_id): def edit_enseignants_form(context, REQUEST, moduleimpl_id):
@ -759,7 +801,7 @@ def edit_enseignants_form(context, REQUEST, moduleimpl_id):
return header + "\n".join(H) + tf[1] + F + footer return header + "\n".join(H) + tf[1] + F + footer
@bp.route("/edit_moduleimpl_resp") @bp.route("/edit_moduleimpl_resp", methods=["GET", "POST"])
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context) @scodoc7func(context)
def edit_moduleimpl_resp(context, REQUEST, moduleimpl_id): def edit_moduleimpl_resp(context, REQUEST, moduleimpl_id):
@ -871,7 +913,7 @@ _EXPR_HELP = """<p class="help">Expérimental: formule de calcul de la moyenne %
""" """
@bp.route("/edit_moduleimpl_expr") @bp.route("/edit_moduleimpl_expr", methods=["GET", "POST"])
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context) @scodoc7func(context)
def edit_moduleimpl_expr(context, REQUEST, moduleimpl_id): def edit_moduleimpl_expr(context, REQUEST, moduleimpl_id):
@ -1023,7 +1065,7 @@ def view_module_abs(context, REQUEST, moduleimpl_id, format="html"):
return "\n".join(H) + tab.html() + html_sco_header.sco_footer(context, REQUEST) return "\n".join(H) + tab.html() + html_sco_header.sco_footer(context, REQUEST)
@bp.route("/edit_ue_expr") @bp.route("/edit_ue_expr", methods=["GET", "POST"])
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context) @scodoc7func(context)
def edit_ue_expr(context, REQUEST, formsemestre_id, ue_id): def edit_ue_expr(context, REQUEST, formsemestre_id, ue_id):
@ -1181,7 +1223,7 @@ def formsemestre_enseignants_list(context, REQUEST, formsemestre_id, format="htm
) )
@bp.route("/edit_enseignants_form_delete") @bp.route("/edit_enseignants_form_delete", methods=["GET", "POST"])
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context) @scodoc7func(context)
def edit_enseignants_form_delete(context, REQUEST, moduleimpl_id, ens_id): def edit_enseignants_form_delete(context, REQUEST, moduleimpl_id, ens_id):
@ -1399,7 +1441,7 @@ sco_publish(
# --- Evaluations # --- Evaluations
@bp.route("/evaluation_delete") @bp.route("/evaluation_delete", methods=["GET", "POST"])
@permission_required(Permission.ScoEnsView) @permission_required(Permission.ScoEnsView)
@scodoc7func(context) @scodoc7func(context)
def evaluation_delete(context, REQUEST, evaluation_id): def evaluation_delete(context, REQUEST, evaluation_id):
@ -1759,10 +1801,11 @@ sco_publish(
"/external_ue_create_form", "/external_ue_create_form",
sco_ue_external.external_ue_create_form, sco_ue_external.external_ue_create_form,
Permission.ScoView, Permission.ScoView,
methods=["GET", "POST"],
) )
@bp.route("/appreciation_add_form") @bp.route("/appreciation_add_form", methods=["GET", "POST"])
@permission_required(Permission.ScoEnsView) @permission_required(Permission.ScoEnsView)
@scodoc7func(context) @scodoc7func(context)
def appreciation_add_form( def appreciation_add_form(
@ -2001,10 +2044,11 @@ sco_publish(
"/formsemestre_ext_create_form", "/formsemestre_ext_create_form",
sco_formsemestre_exterieurs.formsemestre_ext_create_form, sco_formsemestre_exterieurs.formsemestre_ext_create_form,
Permission.ScoView, Permission.ScoView,
methods=["GET", "POST"],
) )
@bp.route("/formsemestre_ext_edit_ue_validations") @bp.route("/formsemestre_ext_edit_ue_validations", methods=["GET", "POST"])
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context) @scodoc7func(context)
def formsemestre_ext_edit_ue_validations( def formsemestre_ext_edit_ue_validations(
@ -2181,7 +2225,10 @@ sco_publish(
Permission.ScoView, Permission.ScoView,
) )
sco_publish( sco_publish(
"/formsemestre_archive", sco_archives.formsemestre_archive, Permission.ScoView "/formsemestre_archive",
sco_archives.formsemestre_archive,
Permission.ScoView,
methods=["GET", "POST"],
) )
sco_publish( sco_publish(
"/formsemestre_delete_archive", "/formsemestre_delete_archive",
@ -2233,14 +2280,35 @@ sco_publish(
# sco_semset # sco_semset
sco_publish("/semset_page", sco_semset.semset_page, Permission.ScoEditApo) sco_publish("/semset_page", sco_semset.semset_page, Permission.ScoEditApo)
sco_publish("/do_semset_create", sco_semset.do_semset_create, Permission.ScoEditApo)
sco_publish("/do_semset_delete", sco_semset.do_semset_delete, Permission.ScoEditApo)
sco_publish( sco_publish(
"/edit_semset_set_title", sco_semset.edit_semset_set_title, Permission.ScoEditApo "/do_semset_create",
sco_semset.do_semset_create,
Permission.ScoEditApo,
methods=["GET", "POST"],
) )
sco_publish("/do_semset_add_sem", sco_semset.do_semset_add_sem, Permission.ScoEditApo)
sco_publish( sco_publish(
"/do_semset_remove_sem", sco_semset.do_semset_remove_sem, Permission.ScoEditApo "/do_semset_delete",
sco_semset.do_semset_delete,
Permission.ScoEditApo,
methods=["GET", "POST"],
)
sco_publish(
"/edit_semset_set_title",
sco_semset.edit_semset_set_title,
Permission.ScoEditApo,
methods=["GET", "POST"],
)
sco_publish(
"/do_semset_add_sem",
sco_semset.do_semset_add_sem,
Permission.ScoEditApo,
methods=["GET", "POST"],
)
sco_publish(
"/do_semset_remove_sem",
sco_semset.do_semset_remove_sem,
Permission.ScoEditApo,
methods=["GET", "POST"],
) )
# sco_export_result # sco_export_result
@ -2251,20 +2319,30 @@ sco_publish(
) )
sco_publish( sco_publish(
"/apo_compare_csv_form", sco_apogee_compare.apo_compare_csv_form, Permission.ScoView "/apo_compare_csv_form",
sco_apogee_compare.apo_compare_csv_form,
Permission.ScoView,
methods=["GET", "POST"],
)
sco_publish(
"/apo_compare_csv",
sco_apogee_compare.apo_compare_csv,
Permission.ScoView,
methods=["GET", "POST"],
) )
sco_publish("/apo_compare_csv", sco_apogee_compare.apo_compare_csv, Permission.ScoView)
# ------------- INSCRIPTIONS: PASSAGE D'UN SEMESTRE A UN AUTRE # ------------- INSCRIPTIONS: PASSAGE D'UN SEMESTRE A UN AUTRE
sco_publish( sco_publish(
"/formsemestre_inscr_passage", "/formsemestre_inscr_passage",
sco_inscr_passage.formsemestre_inscr_passage, sco_inscr_passage.formsemestre_inscr_passage,
Permission.ScoEtudInscrit, Permission.ScoEtudInscrit,
methods=["GET", "POST"],
) )
sco_publish( sco_publish(
"/formsemestre_synchro_etuds", "/formsemestre_synchro_etuds",
sco_synchro_etuds.formsemestre_synchro_etuds, sco_synchro_etuds.formsemestre_synchro_etuds,
Permission.ScoView, Permission.ScoView,
methods=["GET", "POST"],
) )
# ------------- RAPPORTS STATISTIQUES # ------------- RAPPORTS STATISTIQUES

View File

@ -122,11 +122,11 @@ from app.scodoc import sco_etud
context = ScoDoc7Context("scolar") context = ScoDoc7Context("scolar")
def sco_publish(route, function, permission): def sco_publish(route, function, permission, methods=["GET"]):
"""Declare a route for a python function, """Declare a route for a python function,
protected by permission and called following ScoDoc 7 Zope standards. protected by permission and called following ScoDoc 7 Zope standards.
""" """
return bp.route(route)( return bp.route(route, methods=methods)(
permission_required(permission)(scodoc7func(context)(function)) permission_required(permission)(scodoc7func(context)(function))
) )
@ -192,7 +192,7 @@ def edit_preferences(context, REQUEST):
return sco_preferences.get_base_preferences(context).edit(REQUEST=REQUEST) return sco_preferences.get_base_preferences(context).edit(REQUEST=REQUEST)
@bp.route("/formsemestre_edit_preferences") @bp.route("/formsemestre_edit_preferences", methods=["GET", "POST"])
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context) @scodoc7func(context)
def formsemestre_edit_preferences(context, formsemestre_id, REQUEST): def formsemestre_edit_preferences(context, formsemestre_id, REQUEST):
@ -263,7 +263,14 @@ def showEtudLog(context, etudid, format="html", REQUEST=None):
# ---------- PAGE ACCUEIL (listes) -------------- # ---------- PAGE ACCUEIL (listes) --------------
bp.route("/")(sco_publish("/index_html", sco_dept.index_html, Permission.ScoView)) @bp.route("/")
@bp.route("/index_html")
@permission_required(Permission.ScoView)
@scodoc7func(context)
def index_html(context, REQUEST=None, showcodes=0, showsemtable=0):
return sco_dept.index_html(
context, REQUEST=REQUEST, showcodes=showcodes, showsemtable=showsemtable
)
@bp.route("/rssnews") @bp.route("/rssnews")
@ -439,6 +446,7 @@ sco_publish(
"/etud_upload_file_form", "/etud_upload_file_form",
sco_archives_etud.etud_upload_file_form, sco_archives_etud.etud_upload_file_form,
Permission.ScoView, Permission.ScoView,
methods=["GET", "POST"],
) )
sco_publish( sco_publish(
@ -455,6 +463,7 @@ sco_publish(
"/etudarchive_import_files_form", "/etudarchive_import_files_form",
sco_archives_etud.etudarchive_import_files_form, sco_archives_etud.etudarchive_import_files_form,
Permission.ScoView, Permission.ScoView,
methods=["GET", "POST"],
) )
sco_publish( sco_publish(
@ -535,7 +544,7 @@ def doSuppressAnnotation(context, etudid, annotation_id, REQUEST):
) )
@bp.route("/formChangeCoordonnees") @bp.route("/formChangeCoordonnees", methods=["GET", "POST"])
@permission_required(Permission.ScoEtudChangeAdr) @permission_required(Permission.ScoEtudChangeAdr)
@scodoc7func(context) @scodoc7func(context)
def formChangeCoordonnees(context, etudid, REQUEST): def formChangeCoordonnees(context, etudid, REQUEST):
@ -671,7 +680,7 @@ def etud_photo_orig_page(context, etudid=None, REQUEST=None):
return "\n".join(H) return "\n".join(H)
@bp.route("/formChangePhoto") @bp.route("/formChangePhoto", methods=["GET", "POST"])
@permission_required(Permission.ScoEtudChangeAdr) @permission_required(Permission.ScoEtudChangeAdr)
@scodoc7func(context) @scodoc7func(context)
def formChangePhoto(context, etudid=None, REQUEST=None): def formChangePhoto(context, etudid=None, REQUEST=None):
@ -719,7 +728,7 @@ def formChangePhoto(context, etudid=None, REQUEST=None):
elif tf[0] == -1: elif tf[0] == -1:
return REQUEST.RESPONSE.redirect(dest_url) return REQUEST.RESPONSE.redirect(dest_url)
else: else:
data = tf[2]["photofile"].read() data = tf[2]["photofile"][0].read()
status, diag = sco_photos.store_photo(context, etud, data, REQUEST=REQUEST) status, diag = sco_photos.store_photo(context, etud, data, REQUEST=REQUEST)
if status != 0: if status != 0:
return REQUEST.RESPONSE.redirect(dest_url) return REQUEST.RESPONSE.redirect(dest_url)
@ -1810,7 +1819,7 @@ def import_generate_admission_sample(context, REQUEST, formsemestre_id):
# --- Données admission depuis fichier excel (version nov 2016) # --- Données admission depuis fichier excel (version nov 2016)
@bp.route("/form_students_import_infos_admissions") @bp.route("/form_students_import_infos_admissions", methods=["GET", "POST"])
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context) @scodoc7func(context)
def form_students_import_infos_admissions(context, REQUEST, formsemestre_id=None): def form_students_import_infos_admissions(context, REQUEST, formsemestre_id=None):