# -*- coding: UTF-8 -* """ Module Essais: divers essais pour la migration vers Flask Emmanuel Viennet, 2021 """ import flask from flask import g from flask import current_app from flask import render_template from flask import request from flask import url_for from app.decorators import ( scodoc, scodoc7func, ScoDoc7Context, permission_required, admin_required, login_required, ) from app.auth.models import Permission from app.views import essais_bp as bp from app.scodoc import sco_cache from app.scodoc import sco_exceptions context = ScoDoc7Context(globals()) @bp.route("//Scolarite/sco_exemple") @scodoc @scodoc7func(context) def sco_exemple(etudid="NON"): """Un exemple de fonction ScoDoc 7""" return """

ScoDoc 7 rules !

etudid=%(etudid)s

g.scodoc_dept=%(scodoc_dept)s

""" % { "etudid": etudid, "scodoc_dept": g.scodoc_dept, } # En ScoDoc 7, on avait des vues qui en appellaient d'autres # avec context.sco_exemple( etudid="E12" ) # @bp.route("//Scolarite/sco_exemple2") # @login_required # @scodoc7func(context) # def sco_exemple2(): # return "Exemple 2" + context.sco_exemple(etudid="deux") @bp.route("//Scolarite/sco_exemple3") @scodoc @login_required @scodoc7func(context) def sco_exemple3(toto): return "Exemple 3: toto=" + toto @bp.route("//Scolarite/sco_exemple4") @scodoc @login_required @scodoc7func(context) def sco_exemple4(toto): return "Exemple 4: " + sco_exemple3(toto) # Test avec un seul argument REQUEST positionnel @bp.route("//Scolarite/sco_get_version") @scodoc @scodoc7func(context) def sco_get_version(REQUEST): return "ok" # Fonction ressemblant à une méthode Zope protégée @bp.route("//Scolarite/sco_test_view") @scodoc @permission_required(Permission.ScoView) @scodoc7func(context) def sco_test_view(REQUEST=None): return """Vous avez vu sco_test_view !""" @bp.route("/essrep") def essrep(): return flask.Response(status=200, response="Bonjour pépé %s" + u"papa") # Tests formulaires avec checkbox et GET @bp.route("/testcheckbox", methods=["GET"]) def testcheckbox(): # args = request.args return render_template("essais/testcheckbox.html") # Test exception @bp.route("/test_exception_value_error", methods=["GET"]) def test_exception_value_error(): raise sco_exceptions.ScoValueError( "hello", dest_url=url_for( "notes.formsemestre_status", scodoc_dept="RT", formsemestre_id="SEM38882" ), )