WIP: prepare migration (remove zope context)

This commit is contained in:
Emmanuel Viennet 2021-06-02 14:50:41 +02:00
parent 5e8c837fb2
commit 77f68d1c4c
6 changed files with 263 additions and 152 deletions

View File

@ -25,6 +25,6 @@
# #
############################################################################## ##############################################################################
"""ScoDoc core """ScoDoc core package
""" """
from app.ScoDoc import sco_core # from app.scodoc import sco_core

View File

@ -1,15 +1,19 @@
# -*- mode: python -*- # -*- mode: python -*-
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""essai: ceci serait un module ScoDoc/sco_xxx.py """essai: ceci serait un module scodoc/sco_xxx.py
""" """
import types import types
import sco_utils as scu import sco_utils as scu
def sco_get_version(context, REQUEST=None): def sco_get_version(context, REQUEST=None):
"""Une fonction typique de ScoDoc7 """Une fonction typique de ScoDoc7"""
"""
return """<html><body><p>%s</p></body></html>""" % scu.SCOVERSION return """<html><body><p>%s</p></body></html>""" % scu.SCOVERSION
def test_refactor(context, x=1):
x = context.toto()
y = ("context=" + context.module_is_locked("alpha")) + "23"

View File

@ -20,7 +20,7 @@ from app.auth.models import Permission
from app.views import notes_bp as bp from app.views import notes_bp as bp
# import sco_core deviendra: # import sco_core deviendra:
from app.ScoDoc import sco_core from app.scodoc import sco_core
context = ScoDoc7Context(globals()) context = ScoDoc7Context(globals())

View File

@ -30,6 +30,7 @@ Module notes: issu de ScoDoc7 / ZNotes.py
Emmanuel Viennet, 2021 Emmanuel Viennet, 2021
""" """
import sys
import time import time
import datetime import datetime
import jaxml import jaxml
@ -53,81 +54,81 @@ from app.views import notes_bp as bp
# --------------- # ---------------
from app.ScoDoc import sco_utils as scu from app.scodoc import sco_utils as scu
from app.ScoDoc import notesdb as ndb from app.scodoc import notesdb as ndb
from app.ScoDoc.notes_log import log, sendAlarm from app.scodoc.notes_log import log, sendAlarm
from app.ScoDoc import scolog from app.scodoc import scolog
from app.ScoDoc.scolog import logdb from app.scodoc.scolog import logdb
from app.ScoDoc.sco_exceptions import ( from app.scodoc.sco_exceptions import (
ScoValueError, ScoValueError,
ScoLockedFormError, ScoLockedFormError,
ScoGenError, ScoGenError,
AccessDenied, AccessDenied,
) )
from app.ScoDoc.sco_permissions import Permission, ScoImplement from app.scodoc.sco_permissions import Permission, ScoImplement
from app.ScoDoc.TrivialFormulator import TrivialFormulator from app.scodoc.TrivialFormulator import TrivialFormulator
import app.ScoDoc.htmlutils as htmlutils import app.scodoc.htmlutils as htmlutils
import app.ScoDoc.sco_excel as sco_excel import app.scodoc.sco_excel as sco_excel
from app.ScoDoc.gen_tables import GenTable from app.scodoc.gen_tables import GenTable
from app.ScoDoc import sco_cache as sco_cache from app.scodoc import sco_cache as sco_cache
from app.ScoDoc import scolars as scolars from app.scodoc import scolars as scolars
from app.ScoDoc import sco_news as sco_news from app.scodoc import sco_news as sco_news
from app.ScoDoc.sco_news import NEWS_INSCR, NEWS_NOTE, NEWS_FORM, NEWS_SEM, NEWS_MISC from app.scodoc.sco_news import NEWS_INSCR, NEWS_NOTE, NEWS_FORM, NEWS_SEM, NEWS_MISC
from app.ScoDoc import sco_formsemestre as sco_formsemestre from app.scodoc import sco_formsemestre as sco_formsemestre
from app.ScoDoc import sco_formsemestre_edit as sco_formsemestre_edit from app.scodoc import sco_formsemestre_edit as sco_formsemestre_edit
from app.ScoDoc import sco_formsemestre_status as sco_formsemestre_status from app.scodoc import sco_formsemestre_status as sco_formsemestre_status
from app.ScoDoc import sco_formsemestre_inscriptions as sco_formsemestre_inscriptions from app.scodoc import sco_formsemestre_inscriptions as sco_formsemestre_inscriptions
from app.ScoDoc import sco_formsemestre_custommenu as sco_formsemestre_custommenu from app.scodoc import sco_formsemestre_custommenu as sco_formsemestre_custommenu
from app.ScoDoc import sco_moduleimpl as sco_moduleimpl from app.scodoc import sco_moduleimpl as sco_moduleimpl
from app.ScoDoc import sco_moduleimpl_status as sco_moduleimpl_status from app.scodoc import sco_moduleimpl_status as sco_moduleimpl_status
from app.ScoDoc import sco_moduleimpl_inscriptions as sco_moduleimpl_inscriptions from app.scodoc import sco_moduleimpl_inscriptions as sco_moduleimpl_inscriptions
from app.ScoDoc import sco_evaluations as sco_evaluations from app.scodoc import sco_evaluations as sco_evaluations
from app.ScoDoc import sco_groups as sco_groups from app.scodoc import sco_groups as sco_groups
from app.ScoDoc import sco_edit_ue as sco_edit_ue from app.scodoc import sco_edit_ue as sco_edit_ue
from app.ScoDoc import sco_edit_formation as sco_edit_formation from app.scodoc import sco_edit_formation as sco_edit_formation
from app.ScoDoc import sco_edit_matiere as sco_edit_matiere from app.scodoc import sco_edit_matiere as sco_edit_matiere
from app.ScoDoc import sco_edit_module as sco_edit_module from app.scodoc import sco_edit_module as sco_edit_module
from app.ScoDoc import sco_tag_module as sco_tag_module from app.scodoc import sco_tag_module as sco_tag_module
from app.ScoDoc import sco_bulletins as sco_bulletins from app.scodoc import sco_bulletins as sco_bulletins
from app.ScoDoc import sco_bulletins_pdf as sco_bulletins_pdf from app.scodoc import sco_bulletins_pdf as sco_bulletins_pdf
from app.ScoDoc import sco_compute_moy as sco_compute_moy from app.scodoc import sco_compute_moy as sco_compute_moy
from app.ScoDoc import sco_recapcomplet as sco_recapcomplet from app.scodoc import sco_recapcomplet as sco_recapcomplet
from app.ScoDoc import sco_liste_notes as sco_liste_notes from app.scodoc import sco_liste_notes as sco_liste_notes
from app.ScoDoc import sco_saisie_notes as sco_saisie_notes from app.scodoc import sco_saisie_notes as sco_saisie_notes
from app.ScoDoc import sco_placement as sco_placement from app.scodoc import sco_placement as sco_placement
from app.ScoDoc import sco_undo_notes as sco_undo_notes from app.scodoc import sco_undo_notes as sco_undo_notes
from app.ScoDoc import sco_formations as sco_formations from app.scodoc import sco_formations as sco_formations
from app.ScoDoc import sco_report as sco_report from app.scodoc import sco_report as sco_report
from app.ScoDoc import sco_lycee as sco_lycee from app.scodoc import sco_lycee as sco_lycee
from app.ScoDoc import sco_poursuite_dut as sco_poursuite_dut from app.scodoc import sco_poursuite_dut as sco_poursuite_dut
from app.ScoDoc import pe_view as pe_view from app.scodoc import pe_view as pe_view
from app.ScoDoc import sco_debouche as sco_debouche from app.scodoc import sco_debouche as sco_debouche
from app.ScoDoc import sco_ue_external as sco_ue_external from app.scodoc import sco_ue_external as sco_ue_external
from app.ScoDoc import sco_cost_formation as sco_cost_formation from app.scodoc import sco_cost_formation as sco_cost_formation
from app.ScoDoc import sco_formsemestre_validation as sco_formsemestre_validation from app.scodoc import sco_formsemestre_validation as sco_formsemestre_validation
from app.ScoDoc import sco_parcours_dut as sco_parcours_dut from app.scodoc import sco_parcours_dut as sco_parcours_dut
from app.ScoDoc import sco_codes_parcours as sco_codes_parcours from app.scodoc import sco_codes_parcours as sco_codes_parcours
from app.ScoDoc import sco_pvjury as sco_pvjury from app.scodoc import sco_pvjury as sco_pvjury
from app.ScoDoc import sco_pvpdf as sco_pvpdf from app.scodoc import sco_pvpdf as sco_pvpdf
from app.ScoDoc import sco_prepajury as sco_prepajury from app.scodoc import sco_prepajury as sco_prepajury
from app.ScoDoc import sco_inscr_passage as sco_inscr_passage from app.scodoc import sco_inscr_passage as sco_inscr_passage
from app.ScoDoc import sco_synchro_etuds as sco_synchro_etuds from app.scodoc import sco_synchro_etuds as sco_synchro_etuds
from app.ScoDoc import sco_archives as sco_archives from app.scodoc import sco_archives as sco_archives
from app.ScoDoc import sco_apogee_csv as sco_apogee_csv from app.scodoc import sco_apogee_csv as sco_apogee_csv
from app.ScoDoc import sco_etape_apogee_view as sco_etape_apogee_view from app.scodoc import sco_etape_apogee_view as sco_etape_apogee_view
from app.ScoDoc import sco_apogee_compare as sco_apogee_compare from app.scodoc import sco_apogee_compare as sco_apogee_compare
from app.ScoDoc import sco_semset as sco_semset from app.scodoc import sco_semset as sco_semset
from app.ScoDoc import sco_export_results as sco_export_results from app.scodoc import sco_export_results as sco_export_results
from app.ScoDoc import sco_formsemestre_exterieurs as sco_formsemestre_exterieurs from app.scodoc import sco_formsemestre_exterieurs as sco_formsemestre_exterieurs
from app.ScoDoc.sco_pdf import PDFLOCK from app.scodoc.sco_pdf import PDFLOCK
from app.ScoDoc import notes_table as notes_table from app.scodoc import notes_table as notes_table
from app.ScoDoc.notes_table import NOTES_CACHE_INST, CacheNotesTable from app.scodoc.notes_table import NOTES_CACHE_INST, CacheNotesTable
import app.ScoDoc.VERSION as VERSION import app.scodoc.VERSION as VERSION
context = ScoDoc7Context(globals()) context = ScoDoc7Context(globals())
@ -136,9 +137,9 @@ def sco_publish(route, function, permission):
"""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)( # f =
permission_required(permission)(scodoc7func(context)(function)) bp.route(route)(permission_required(permission)(scodoc7func(context)(function)))
) # setattr(sys.modules[__name__], f.__name__, f)
# --------------------- Quelques essais élémentaires: # --------------------- Quelques essais élémentaires:
@ -203,8 +204,8 @@ def _inval_cache(
@bp.route("/clearcache") @bp.route("/clearcache")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def clearcache(context, REQUEST=None): def clearcache(context, REQUEST=None):
"Efface les caches de notes (utile pendant developpement slt)" "Efface les caches de notes (utile pendant developpement slt)"
log("*** clearcache request") log("*** clearcache request")
@ -257,13 +258,13 @@ sco_publish(
# controle d'acces specifique pour dir. etud: # controle d'acces specifique pour dir. etud:
sco_publish( sco_publish(
"formsemestre_editwithmodules", "/formsemestre_editwithmodules",
sco_formsemestre_edit.formsemestre_editwithmodules, sco_formsemestre_edit.formsemestre_editwithmodules,
Permission.ScoView, Permission.ScoView,
) )
sco_publish( sco_publish(
"formsemestre_clone", "/formsemestre_clone",
sco_formsemestre_edit.formsemestre_clone, sco_formsemestre_edit.formsemestre_clone,
Permission.ScoImplement, Permission.ScoImplement,
) )
@ -401,8 +402,8 @@ sco_publish(
# #
@bp.route("/") @bp.route("/")
@bp.route("/index_html") @bp.route("/index_html")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def index_html(context, REQUEST=None): def index_html(context, REQUEST=None):
"Page accueil formations" "Page accueil formations"
@ -454,8 +455,8 @@ _formationEditor = ndb.EditableTable(
@bp.route("/do_formation_create") @bp.route("/do_formation_create")
@scodoc7func(context)
@permission_required(Permission.ScoChangeFormation) @permission_required(Permission.ScoChangeFormation)
@scodoc7func(context)
def do_formation_create(context, args, REQUEST): def do_formation_create(context, args, REQUEST):
"create a formation" "create a formation"
cnx = context.GetDBConnexion() cnx = context.GetDBConnexion()
@ -483,8 +484,8 @@ def do_formation_create(context, args, REQUEST):
@bp.route("/do_formation_delete") @bp.route("/do_formation_delete")
@scodoc7func(context)
@permission_required(Permission.ScoChangeFormation) @permission_required(Permission.ScoChangeFormation)
@scodoc7func(context)
def do_formation_delete(context, oid, REQUEST): def do_formation_delete(context, oid, REQUEST):
"""delete a formation (and all its UE, matieres, modules) """delete a formation (and all its UE, matieres, modules)
XXX delete all ues, will break if there are validations ! USE WITH CARE ! XXX delete all ues, will break if there are validations ! USE WITH CARE !
@ -511,8 +512,8 @@ def do_formation_delete(context, oid, REQUEST):
@bp.route("/formation_list") @bp.route("/formation_list")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def formation_list(context, format=None, REQUEST=None, formation_id=None, args={}): def formation_list(context, format=None, REQUEST=None, formation_id=None, args={}):
"""List formation(s) with given id, or matching args """List formation(s) with given id, or matching args
(when args is given, formation_id is ignored). (when args is given, formation_id is ignored).
@ -530,8 +531,8 @@ def formation_list(context, format=None, REQUEST=None, formation_id=None, args={
@bp.route("/formation_export") @bp.route("/formation_export")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def formation_export( def formation_export(
context, formation_id, export_ids=False, format=None, REQUEST=None context, formation_id, export_ids=False, format=None, REQUEST=None
): ):
@ -542,8 +543,8 @@ def formation_export(
@bp.route("/formation_import_xml") @bp.route("/formation_import_xml")
@scodoc7func(context)
@permission_required(Permission.ScoChangeFormation) @permission_required(Permission.ScoChangeFormation)
@scodoc7func(context)
def formation_import_xml(context, file, REQUEST): def formation_import_xml(context, file, REQUEST):
"import d'une formation en XML" "import d'une formation en XML"
log("formation_import_xml") log("formation_import_xml")
@ -552,8 +553,8 @@ def formation_import_xml(context, file, REQUEST):
@bp.route("/formation_import_xml_form") @bp.route("/formation_import_xml_form")
@scodoc7func(context)
@permission_required(Permission.ScoChangeFormation) @permission_required(Permission.ScoChangeFormation)
@scodoc7func(context)
def formation_import_xml_form(context, REQUEST): def formation_import_xml_form(context, REQUEST):
"form import d'une formation en XML" "form import d'une formation en XML"
H = [ H = [
@ -588,8 +589,8 @@ def formation_import_xml_form(context, REQUEST):
@bp.route("/formation_create_new_version") @bp.route("/formation_create_new_version")
@scodoc7func(context)
@permission_required(Permission.ScoChangeFormation) @permission_required(Permission.ScoChangeFormation)
@scodoc7func(context)
def formation_create_new_version(context, formation_id, redirect=True, REQUEST=None): def formation_create_new_version(context, formation_id, redirect=True, REQUEST=None):
"duplicate formation, with new version number" "duplicate formation, with new version number"
xml = sco_formations.formation_export( xml = sco_formations.formation_export(
@ -643,8 +644,8 @@ _ueEditor = ndb.EditableTable(
@bp.route("/do_ue_create") @bp.route("/do_ue_create")
@scodoc7func(context)
@permission_required(Permission.ScoChangeFormation) @permission_required(Permission.ScoChangeFormation)
@scodoc7func(context)
def do_ue_create(context, args, REQUEST): def do_ue_create(context, args, REQUEST):
"create an ue" "create an ue"
cnx = context.GetDBConnexion() cnx = context.GetDBConnexion()
@ -738,8 +739,8 @@ def _do_ue_delete(context, ue_id, delete_validations=False, REQUEST=None, force=
@bp.route("/do_ue_list") @bp.route("/do_ue_list")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def do_ue_list(context, *args, **kw): def do_ue_list(context, *args, **kw):
"list UEs" "list UEs"
cnx = context.GetDBConnexion() cnx = context.GetDBConnexion()
@ -757,8 +758,8 @@ _matiereEditor = ndb.EditableTable(
@bp.route("/do_matiere_create") @bp.route("/do_matiere_create")
@scodoc7func(context)
@permission_required(Permission.ScoChangeFormation) @permission_required(Permission.ScoChangeFormation)
@scodoc7func(context)
def do_matiere_create(context, args, REQUEST): def do_matiere_create(context, args, REQUEST):
"create a matiere" "create a matiere"
cnx = context.GetDBConnexion() cnx = context.GetDBConnexion()
@ -780,8 +781,8 @@ def do_matiere_create(context, args, REQUEST):
@bp.route("/do_matiere_delete") @bp.route("/do_matiere_delete")
@scodoc7func(context)
@permission_required(Permission.ScoChangeFormation) @permission_required(Permission.ScoChangeFormation)
@scodoc7func(context)
def do_matiere_delete(context, oid, REQUEST): def do_matiere_delete(context, oid, REQUEST):
"delete matiere and attached modules" "delete matiere and attached modules"
cnx = context.GetDBConnexion() cnx = context.GetDBConnexion()
@ -813,8 +814,8 @@ def do_matiere_delete(context, oid, REQUEST):
@bp.route("/do_matiere_list") @bp.route("/do_matiere_list")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def do_matiere_list(context, *args, **kw): def do_matiere_list(context, *args, **kw):
"list matieres" "list matieres"
cnx = context.GetDBConnexion() cnx = context.GetDBConnexion()
@ -822,8 +823,8 @@ def do_matiere_list(context, *args, **kw):
@bp.route("/do_matiere_edit") @bp.route("/do_matiere_edit")
@scodoc7func(context)
@permission_required(Permission.ScoChangeFormation) @permission_required(Permission.ScoChangeFormation)
@scodoc7func(context)
def do_matiere_edit(context, *args, **kw): def do_matiere_edit(context, *args, **kw):
"edit a matiere" "edit a matiere"
cnx = context.GetDBConnexion() cnx = context.GetDBConnexion()
@ -837,8 +838,8 @@ def do_matiere_edit(context, *args, **kw):
@bp.route("/do_matiere_formation_id") @bp.route("/do_matiere_formation_id")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def do_matiere_formation_id(context, matiere_id): def do_matiere_formation_id(context, matiere_id):
"get formation_id from matiere" "get formation_id from matiere"
cnx = context.GetDBConnexion() cnx = context.GetDBConnexion()
@ -887,8 +888,8 @@ _moduleEditor = ndb.EditableTable(
@bp.route("/do_module_create") @bp.route("/do_module_create")
@scodoc7func(context)
@permission_required(Permission.ScoChangeFormation) @permission_required(Permission.ScoChangeFormation)
@scodoc7func(context)
def do_module_create(context, args, REQUEST): def do_module_create(context, args, REQUEST):
"create a module" "create a module"
# create # create
@ -908,8 +909,8 @@ def do_module_create(context, args, REQUEST):
@bp.route("/do_module_delete") @bp.route("/do_module_delete")
@scodoc7func(context)
@permission_required(Permission.ScoChangeFormation) @permission_required(Permission.ScoChangeFormation)
@scodoc7func(context)
def do_module_delete(context, oid, REQUEST): def do_module_delete(context, oid, REQUEST):
"delete module" "delete module"
mod = context.do_module_list({"module_id": oid})[0] mod = context.do_module_list({"module_id": oid})[0]
@ -943,8 +944,8 @@ def do_module_delete(context, oid, REQUEST):
@bp.route("/do_module_list") @bp.route("/do_module_list")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def do_module_list(context, *args, **kw): def do_module_list(context, *args, **kw):
"list modules" "list modules"
cnx = context.GetDBConnexion() cnx = context.GetDBConnexion()
@ -952,8 +953,8 @@ def do_module_list(context, *args, **kw):
@bp.route("/do_module_edit") @bp.route("/do_module_edit")
@scodoc7func(context)
@permission_required(Permission.ScoChangeFormation) @permission_required(Permission.ScoChangeFormation)
@scodoc7func(context)
def do_module_edit(context, val): def do_module_edit(context, val):
"edit a module" "edit a module"
# check # check
@ -979,8 +980,8 @@ def do_module_edit(context, val):
# #
@bp.route("/formation_has_locked_sems") @bp.route("/formation_has_locked_sems")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def formation_has_locked_sems(context, formation_id): def formation_has_locked_sems(context, formation_id):
"True if there is a locked formsemestre in this formation" "True if there is a locked formsemestre in this formation"
sems = sco_formsemestre.do_formsemestre_list( sems = sco_formsemestre.do_formsemestre_list(
@ -990,8 +991,8 @@ def formation_has_locked_sems(context, formation_id):
@bp.route("/formation_count_sems") @bp.route("/formation_count_sems")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def formation_count_sems(context, formation_id): def formation_count_sems(context, formation_id):
"Number of formsemestre in this formation (locked or not)" "Number of formsemestre in this formation (locked or not)"
sems = sco_formsemestre.do_formsemestre_list( sems = sco_formsemestre.do_formsemestre_list(
@ -1001,8 +1002,8 @@ def formation_count_sems(context, formation_id):
@bp.route("/module_count_moduleimpls") @bp.route("/module_count_moduleimpls")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def module_count_moduleimpls(context, module_id): def module_count_moduleimpls(context, module_id):
"Number of moduleimpls using this module" "Number of moduleimpls using this module"
mods = sco_moduleimpl.do_moduleimpl_list(context, module_id=module_id) mods = sco_moduleimpl.do_moduleimpl_list(context, module_id=module_id)
@ -1010,8 +1011,8 @@ def module_count_moduleimpls(context, module_id):
@bp.route("/module_is_locked") @bp.route("/module_is_locked")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def module_is_locked(context, module_id): def module_is_locked(context, module_id):
"""True if UE should not be modified """True if UE should not be modified
(used in a locked formsemestre) (used in a locked formsemestre)
@ -1028,8 +1029,8 @@ def module_is_locked(context, module_id):
@bp.route("/matiere_is_locked") @bp.route("/matiere_is_locked")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def matiere_is_locked(context, matiere_id): def matiere_is_locked(context, matiere_id):
"""True if matiere should not be modified """True if matiere should not be modified
(contains modules used in a locked formsemestre) (contains modules used in a locked formsemestre)
@ -1046,8 +1047,8 @@ def matiere_is_locked(context, matiere_id):
@bp.route("/ue_is_locked") @bp.route("/ue_is_locked")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def ue_is_locked(context, ue_id): def ue_is_locked(context, ue_id):
"""True if module should not be modified """True if module should not be modified
(contains modules used in a locked formsemestre) (contains modules used in a locked formsemestre)
@ -1065,8 +1066,8 @@ def ue_is_locked(context, ue_id):
@bp.route("/module_move") @bp.route("/module_move")
@scodoc7func(context)
@permission_required(Permission.ScoChangeFormation) @permission_required(Permission.ScoChangeFormation)
@scodoc7func(context)
def module_move(context, module_id, after=0, REQUEST=None, redirect=1): def module_move(context, module_id, after=0, REQUEST=None, redirect=1):
"""Move before/after previous one (decrement/increment numero)""" """Move before/after previous one (decrement/increment numero)"""
module = context.do_module_list({"module_id": module_id})[0] module = context.do_module_list({"module_id": module_id})[0]
@ -1101,8 +1102,8 @@ def module_move(context, module_id, after=0, REQUEST=None, redirect=1):
@bp.route("/ue_move") @bp.route("/ue_move")
@scodoc7func(context)
@permission_required(Permission.ScoChangeFormation) @permission_required(Permission.ScoChangeFormation)
@scodoc7func(context)
def ue_move(context, ue_id, after=0, REQUEST=None, redirect=1): def ue_move(context, ue_id, after=0, REQUEST=None, redirect=1):
"""Move UE before/after previous one (decrement/increment numero)""" """Move UE before/after previous one (decrement/increment numero)"""
o = context.do_ue_list({"ue_id": ue_id})[0] o = context.do_ue_list({"ue_id": ue_id})[0]
@ -1138,8 +1139,8 @@ def ue_move(context, ue_id, after=0, REQUEST=None, redirect=1):
@bp.route("/do_formsemestre_create") @bp.route("/do_formsemestre_create")
@scodoc7func(context)
@permission_required(Permission.ScoImplement) @permission_required(Permission.ScoImplement)
@scodoc7func(context)
def do_formsemestre_create(context, args, REQUEST, silent=False): def do_formsemestre_create(context, args, REQUEST, silent=False):
"create a formsemestre" "create a formsemestre"
cnx = context.GetDBConnexion() cnx = context.GetDBConnexion()
@ -1176,8 +1177,8 @@ def do_formsemestre_create(context, args, REQUEST, silent=False):
@bp.route("/formsemestre_list") @bp.route("/formsemestre_list")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def formsemestre_list( def formsemestre_list(
context, context,
format=None, format=None,
@ -1202,8 +1203,8 @@ def formsemestre_list(
@bp.route("/XMLgetFormsemestres") @bp.route("/XMLgetFormsemestres")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def XMLgetFormsemestres(context, etape_apo=None, formsemestre_id=None, REQUEST=None): def XMLgetFormsemestres(context, etape_apo=None, formsemestre_id=None, REQUEST=None):
"""List all formsemestres matching etape, XML format """List all formsemestres matching etape, XML format
DEPRECATED: use formsemestre_list() DEPRECATED: use formsemestre_list()
@ -1282,8 +1283,8 @@ def _check_access_diretud(
@bp.route("/formsemestre_custommenu_edit") @bp.route("/formsemestre_custommenu_edit")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def formsemestre_custommenu_edit(context, REQUEST, formsemestre_id): def formsemestre_custommenu_edit(context, REQUEST, formsemestre_id):
"Dialogue modif menu" "Dialogue modif menu"
# accessible à tous ! # accessible à tous !
@ -1300,8 +1301,8 @@ sco_publish(
@bp.route("/html_sem_header") @bp.route("/html_sem_header")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def html_sem_header( def html_sem_header(
context, context,
REQUEST, REQUEST,
@ -1326,8 +1327,8 @@ def html_sem_header(
# --- dialogue modif enseignants/moduleimpl # --- dialogue modif enseignants/moduleimpl
@bp.route("/edit_enseignants_form") @bp.route("/edit_enseignants_form")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def edit_enseignants_form(context, REQUEST, moduleimpl_id): def edit_enseignants_form(context, REQUEST, moduleimpl_id):
"modif liste enseignants/moduleimpl" "modif liste enseignants/moduleimpl"
M, sem = sco_moduleimpl.can_change_ens(context, REQUEST, moduleimpl_id) M, sem = sco_moduleimpl.can_change_ens(context, REQUEST, moduleimpl_id)
@ -1434,8 +1435,8 @@ def edit_enseignants_form(context, REQUEST, moduleimpl_id):
@bp.route("/edit_moduleimpl_resp") @bp.route("/edit_moduleimpl_resp")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def edit_moduleimpl_resp(context, REQUEST, moduleimpl_id): def edit_moduleimpl_resp(context, REQUEST, moduleimpl_id):
"""Changement d'un enseignant responsable de module """Changement d'un enseignant responsable de module
Accessible par Admin et dir des etud si flag resp_can_change_ens Accessible par Admin et dir des etud si flag resp_can_change_ens
@ -1543,8 +1544,8 @@ _expr_help = """<p class="help">Expérimental: formule de calcul de la moyenne %
@bp.route("/edit_moduleimpl_expr") @bp.route("/edit_moduleimpl_expr")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def edit_moduleimpl_expr(context, REQUEST, moduleimpl_id): def edit_moduleimpl_expr(context, REQUEST, moduleimpl_id):
"""Edition formule calcul moyenne module """Edition formule calcul moyenne module
Accessible par Admin, dir des etud et responsable module Accessible par Admin, dir des etud et responsable module
@ -1612,8 +1613,8 @@ def edit_moduleimpl_expr(context, REQUEST, moduleimpl_id):
@bp.route("/view_module_abs") @bp.route("/view_module_abs")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def view_module_abs(context, REQUEST, moduleimpl_id, format="html"): def view_module_abs(context, REQUEST, moduleimpl_id, format="html"):
"""Visualisation des absences a un module""" """Visualisation des absences a un module"""
M = sco_moduleimpl.do_moduleimpl_withmodule_list( M = sco_moduleimpl.do_moduleimpl_withmodule_list(
@ -1686,8 +1687,8 @@ def view_module_abs(context, REQUEST, moduleimpl_id, format="html"):
@bp.route("/edit_ue_expr") @bp.route("/edit_ue_expr")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def edit_ue_expr(context, REQUEST, formsemestre_id, ue_id): def edit_ue_expr(context, REQUEST, formsemestre_id, ue_id):
"""Edition formule calcul moyenne UE""" """Edition formule calcul moyenne UE"""
# Check access # Check access
@ -1757,8 +1758,8 @@ def edit_ue_expr(context, REQUEST, formsemestre_id, ue_id):
@bp.route("/formsemestre_enseignants_list") @bp.route("/formsemestre_enseignants_list")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def formsemestre_enseignants_list(context, REQUEST, formsemestre_id, format="html"): def formsemestre_enseignants_list(context, REQUEST, formsemestre_id, format="html"):
"""Liste les enseignants intervenants dans le semestre (resp. modules et chargés de TD) """Liste les enseignants intervenants dans le semestre (resp. modules et chargés de TD)
et indique les absences saisies par chacun. et indique les absences saisies par chacun.
@ -1841,8 +1842,8 @@ def formsemestre_enseignants_list(context, REQUEST, formsemestre_id, format="htm
@bp.route("/edit_enseignants_form_delete") @bp.route("/edit_enseignants_form_delete")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def edit_enseignants_form_delete(context, REQUEST, moduleimpl_id, ens_id): def edit_enseignants_form_delete(context, REQUEST, moduleimpl_id, ens_id):
"remove ens" "remove ens"
M, _ = sco_moduleimpl.can_change_ens(context, REQUEST, moduleimpl_id) M, _ = sco_moduleimpl.can_change_ens(context, REQUEST, moduleimpl_id)
@ -1870,8 +1871,8 @@ _formsemestre_inscriptionEditor = ndb.EditableTable(
@bp.route("/do_formsemestre_inscription_create") @bp.route("/do_formsemestre_inscription_create")
@scodoc7func(context)
@permission_required(Permission.ScoEtudInscrit) @permission_required(Permission.ScoEtudInscrit)
@scodoc7func(context)
def do_formsemestre_inscription_create(context, args, REQUEST, method=None): def do_formsemestre_inscription_create(context, args, REQUEST, method=None):
"create a formsemestre_inscription (and sco event)" "create a formsemestre_inscription (and sco event)"
cnx = context.GetDBConnexion() cnx = context.GetDBConnexion()
@ -1914,8 +1915,8 @@ def do_formsemestre_inscription_create(context, args, REQUEST, method=None):
@bp.route("/do_formsemestre_inscription_delete") @bp.route("/do_formsemestre_inscription_delete")
@scodoc7func(context)
@permission_required(Permission.ScoImplement) @permission_required(Permission.ScoImplement)
@scodoc7func(context)
def do_formsemestre_inscription_delete(context, oid, formsemestre_id=None): def do_formsemestre_inscription_delete(context, oid, formsemestre_id=None):
"delete formsemestre_inscription" "delete formsemestre_inscription"
cnx = context.GetDBConnexion() cnx = context.GetDBConnexion()
@ -1927,8 +1928,8 @@ def do_formsemestre_inscription_delete(context, oid, formsemestre_id=None):
@bp.route("/do_formsemestre_inscription_list") @bp.route("/do_formsemestre_inscription_list")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def do_formsemestre_inscription_list(context, *args, **kw): def do_formsemestre_inscription_list(context, *args, **kw):
"list formsemestre_inscriptions" "list formsemestre_inscriptions"
cnx = context.GetDBConnexion() cnx = context.GetDBConnexion()
@ -1936,8 +1937,8 @@ def do_formsemestre_inscription_list(context, *args, **kw):
@bp.route("/do_formsemestre_inscription_listinscrits") @bp.route("/do_formsemestre_inscription_listinscrits")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def do_formsemestre_inscription_listinscrits( def do_formsemestre_inscription_listinscrits(
context, formsemestre_id, format=None, REQUEST=None context, formsemestre_id, format=None, REQUEST=None
): ):
@ -1954,8 +1955,8 @@ def do_formsemestre_inscription_listinscrits(
@bp.route("/do_formsemestre_inscription_edit") @bp.route("/do_formsemestre_inscription_edit")
@scodoc7func(context)
@permission_required(Permission.ScoImplement) @permission_required(Permission.ScoImplement)
@scodoc7func(context)
def do_formsemestre_inscription_edit(context, args=None, formsemestre_id=None): def do_formsemestre_inscription_edit(context, args=None, formsemestre_id=None):
"edit a formsemestre_inscription" "edit a formsemestre_inscription"
cnx = context.GetDBConnexion() cnx = context.GetDBConnexion()
@ -1977,8 +1978,8 @@ def get_formsemestre_inscription_cache(context, format=None):
@bp.route("/formsemestre_desinscription") @bp.route("/formsemestre_desinscription")
@scodoc7func(context)
@permission_required(Permission.ScoImplement) @permission_required(Permission.ScoImplement)
@scodoc7func(context)
def formsemestre_desinscription( def formsemestre_desinscription(
context, etudid, formsemestre_id, REQUEST=None, dialog_confirmed=False context, etudid, formsemestre_id, REQUEST=None, dialog_confirmed=False
): ):
@ -2055,8 +2056,8 @@ def formsemestre_desinscription(
@bp.route("/do_formsemestre_desinscription") @bp.route("/do_formsemestre_desinscription")
@scodoc7func(context)
@permission_required(Permission.ScoImplement) @permission_required(Permission.ScoImplement)
@scodoc7func(context)
def do_formsemestre_desinscription(context, etudid, formsemestre_id, REQUEST=None): def do_formsemestre_desinscription(context, etudid, formsemestre_id, REQUEST=None):
"""Désinscription d'un étudiant. """Désinscription d'un étudiant.
Si semestre extérieur et dernier inscrit, suppression de ce semestre. Si semestre extérieur et dernier inscrit, suppression de ce semestre.
@ -2123,8 +2124,8 @@ def do_formsemestre_desinscription(context, etudid, formsemestre_id, REQUEST=Non
@bp.route("/etud_desinscrit_ue") @bp.route("/etud_desinscrit_ue")
@scodoc7func(context)
@permission_required(Permission.ScoEtudInscrit) @permission_required(Permission.ScoEtudInscrit)
@scodoc7func(context)
def etud_desinscrit_ue(context, etudid, formsemestre_id, ue_id, REQUEST=None): def etud_desinscrit_ue(context, etudid, formsemestre_id, ue_id, REQUEST=None):
"""Desinscrit l'etudiant de tous les modules de cette UE dans ce semestre.""" """Desinscrit l'etudiant de tous les modules de cette UE dans ce semestre."""
sco_moduleimpl_inscriptions.do_etud_desinscrit_ue( sco_moduleimpl_inscriptions.do_etud_desinscrit_ue(
@ -2138,8 +2139,8 @@ def etud_desinscrit_ue(context, etudid, formsemestre_id, ue_id, REQUEST=None):
@bp.route("/etud_inscrit_ue") @bp.route("/etud_inscrit_ue")
@scodoc7func(context)
@permission_required(Permission.ScoEtudInscrit) @permission_required(Permission.ScoEtudInscrit)
@scodoc7func(context)
def etud_inscrit_ue(context, etudid, formsemestre_id, ue_id, REQUEST=None): def etud_inscrit_ue(context, etudid, formsemestre_id, ue_id, REQUEST=None):
"""Inscrit l'etudiant de tous les modules de cette UE dans ce semestre.""" """Inscrit l'etudiant de tous les modules de cette UE dans ce semestre."""
sco_moduleimpl_inscriptions.do_etud_inscrit_ue( sco_moduleimpl_inscriptions.do_etud_inscrit_ue(
@ -2257,8 +2258,8 @@ def _evaluation_check_write_access(context, REQUEST, moduleimpl_id=None):
@bp.route("/do_evaluation_create") @bp.route("/do_evaluation_create")
@scodoc7func(context)
@permission_required(Permission.ScoEnsView) @permission_required(Permission.ScoEnsView)
@scodoc7func(context)
def do_evaluation_create( def do_evaluation_create(
context, context,
moduleimpl_id=None, moduleimpl_id=None,
@ -2394,8 +2395,8 @@ def _check_evaluation_args(context, args):
@bp.route("/evaluation_delete") @bp.route("/evaluation_delete")
@scodoc7func(context)
@permission_required(Permission.ScoEnsView) @permission_required(Permission.ScoEnsView)
@scodoc7func(context)
def evaluation_delete(context, REQUEST, evaluation_id): def evaluation_delete(context, REQUEST, evaluation_id):
"""Form delete evaluation""" """Form delete evaluation"""
El = context.do_evaluation_list(args={"evaluation_id": evaluation_id}) El = context.do_evaluation_list(args={"evaluation_id": evaluation_id})
@ -2470,8 +2471,8 @@ def evaluation_delete(context, REQUEST, evaluation_id):
@bp.route("/do_evaluation_list") @bp.route("/do_evaluation_list")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def do_evaluation_list(context, args, sortkey=None): def do_evaluation_list(context, args, sortkey=None):
"""List evaluations, sorted by numero (or most recent date first). """List evaluations, sorted by numero (or most recent date first).
@ -2521,8 +2522,8 @@ def do_evaluation_list(context, args, sortkey=None):
@bp.route("/do_evaluation_list_in_formsemestre") @bp.route("/do_evaluation_list_in_formsemestre")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def do_evaluation_list_in_formsemestre(context, formsemestre_id): def do_evaluation_list_in_formsemestre(context, formsemestre_id):
"list evaluations in this formsemestre" "list evaluations in this formsemestre"
mods = sco_moduleimpl.do_moduleimpl_list(context, formsemestre_id=formsemestre_id) mods = sco_moduleimpl.do_moduleimpl_list(context, formsemestre_id=formsemestre_id)
@ -2535,8 +2536,8 @@ def do_evaluation_list_in_formsemestre(context, formsemestre_id):
@bp.route("/do_evaluation_edit") @bp.route("/do_evaluation_edit")
@scodoc7func(context)
@permission_required(Permission.ScoEnsView) @permission_required(Permission.ScoEnsView)
@scodoc7func(context)
def do_evaluation_edit(context, REQUEST, args): def do_evaluation_edit(context, REQUEST, args):
"edit a evaluation" "edit a evaluation"
evaluation_id = args["evaluation_id"] evaluation_id = args["evaluation_id"]
@ -2557,8 +2558,8 @@ def do_evaluation_edit(context, REQUEST, args):
@bp.route("/evaluation_edit") @bp.route("/evaluation_edit")
@scodoc7func(context)
@permission_required(Permission.ScoEnsView) @permission_required(Permission.ScoEnsView)
@scodoc7func(context)
def evaluation_edit(context, evaluation_id, REQUEST): def evaluation_edit(context, evaluation_id, REQUEST):
"form edit evaluation" "form edit evaluation"
return sco_evaluations.evaluation_create_form( return sco_evaluations.evaluation_create_form(
@ -2567,8 +2568,8 @@ def evaluation_edit(context, evaluation_id, REQUEST):
@bp.route("/evaluation_create") @bp.route("/evaluation_create")
@scodoc7func(context)
@permission_required(Permission.ScoEnsView) @permission_required(Permission.ScoEnsView)
@scodoc7func(context)
def evaluation_create(context, moduleimpl_id, REQUEST): def evaluation_create(context, moduleimpl_id, REQUEST):
"form create evaluation" "form create evaluation"
return sco_evaluations.evaluation_create_form( return sco_evaluations.evaluation_create_form(
@ -2577,8 +2578,8 @@ def evaluation_create(context, moduleimpl_id, REQUEST):
@bp.route("/evaluation_listenotes") @bp.route("/evaluation_listenotes")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def evaluation_listenotes(context, REQUEST=None): def evaluation_listenotes(context, REQUEST=None):
"""Affichage des notes d'une évaluation""" """Affichage des notes d'une évaluation"""
if REQUEST.form.get("format", "html") == "html": if REQUEST.form.get("format", "html") == "html":
@ -2701,8 +2702,8 @@ def _notes_getall(
# --- Bulletins # --- Bulletins
@bp.route("/formsemestre_bulletins_pdf") @bp.route("/formsemestre_bulletins_pdf")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def formsemestre_bulletins_pdf( def formsemestre_bulletins_pdf(
context, formsemestre_id, REQUEST, version="selectedevals" context, formsemestre_id, REQUEST, version="selectedevals"
): ):
@ -2714,8 +2715,8 @@ def formsemestre_bulletins_pdf(
@bp.route("/etud_bulletins_pdf") @bp.route("/etud_bulletins_pdf")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def etud_bulletins_pdf(context, etudid, REQUEST, version="selectedevals"): def etud_bulletins_pdf(context, etudid, REQUEST, version="selectedevals"):
"Publie tous les bulletins d'un etudiants dans un classeur PDF" "Publie tous les bulletins d'un etudiants dans un classeur PDF"
pdfdoc, filename = sco_bulletins_pdf.get_etud_bulletins_pdf( pdfdoc, filename = sco_bulletins_pdf.get_etud_bulletins_pdf(
@ -2737,8 +2738,8 @@ sco_publish(
@bp.route("/formsemestre_bulletins_mailetuds") @bp.route("/formsemestre_bulletins_mailetuds")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def formsemestre_bulletins_mailetuds( def formsemestre_bulletins_mailetuds(
context, context,
formsemestre_id, formsemestre_id,
@ -2802,8 +2803,8 @@ sco_publish(
@bp.route("/appreciation_add_form") @bp.route("/appreciation_add_form")
@scodoc7func(context)
@permission_required(Permission.ScoEnsView) @permission_required(Permission.ScoEnsView)
@scodoc7func(context)
def appreciation_add_form( def appreciation_add_form(
context, context,
etudid=None, etudid=None,
@ -2946,8 +2947,8 @@ def _is_chef_or_diretud(context, REQUEST, sem):
@bp.route("/formsemestre_validation_etud_form") @bp.route("/formsemestre_validation_etud_form")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def formsemestre_validation_etud_form( def formsemestre_validation_etud_form(
context, context,
formsemestre_id, formsemestre_id,
@ -2974,8 +2975,8 @@ def formsemestre_validation_etud_form(
@bp.route("/formsemestre_validation_etud") @bp.route("/formsemestre_validation_etud")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def formsemestre_validation_etud( def formsemestre_validation_etud(
context, context,
formsemestre_id, formsemestre_id,
@ -3006,8 +3007,8 @@ def formsemestre_validation_etud(
@bp.route("/formsemestre_validation_etud_manu") @bp.route("/formsemestre_validation_etud_manu")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def formsemestre_validation_etud_manu( def formsemestre_validation_etud_manu(
context, context,
formsemestre_id, formsemestre_id,
@ -3044,8 +3045,8 @@ def formsemestre_validation_etud_manu(
@bp.route("/formsemestre_validate_previous_ue") @bp.route("/formsemestre_validate_previous_ue")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def formsemestre_validate_previous_ue( def formsemestre_validate_previous_ue(
context, formsemestre_id, etudid=None, REQUEST=None context, formsemestre_id, etudid=None, REQUEST=None
): ):
@ -3070,8 +3071,8 @@ sco_publish(
@bp.route("/formsemestre_ext_edit_ue_validations") @bp.route("/formsemestre_ext_edit_ue_validations")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def formsemestre_ext_edit_ue_validations( def formsemestre_ext_edit_ue_validations(
context, formsemestre_id, etudid=None, REQUEST=None context, formsemestre_id, etudid=None, REQUEST=None
): ):
@ -3096,8 +3097,8 @@ sco_publish(
@bp.route("/etud_ue_suppress_validation") @bp.route("/etud_ue_suppress_validation")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def etud_ue_suppress_validation(context, etudid, formsemestre_id, ue_id, REQUEST=None): def etud_ue_suppress_validation(context, etudid, formsemestre_id, ue_id, REQUEST=None):
"""Suppress a validation (ue_id, etudid) and redirect to formsemestre""" """Suppress a validation (ue_id, etudid) and redirect to formsemestre"""
if not context._can_validate_sem(REQUEST, formsemestre_id): if not context._can_validate_sem(REQUEST, formsemestre_id):
@ -3113,8 +3114,8 @@ def etud_ue_suppress_validation(context, etudid, formsemestre_id, ue_id, REQUEST
@bp.route("/formsemestre_validation_auto") @bp.route("/formsemestre_validation_auto")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def formsemestre_validation_auto(context, formsemestre_id, REQUEST): def formsemestre_validation_auto(context, formsemestre_id, REQUEST):
"Formulaire saisie automatisee des decisions d'un semestre" "Formulaire saisie automatisee des decisions d'un semestre"
if not context._can_validate_sem(REQUEST, formsemestre_id): if not context._can_validate_sem(REQUEST, formsemestre_id):
@ -3131,8 +3132,8 @@ def formsemestre_validation_auto(context, formsemestre_id, REQUEST):
@bp.route("/do_formsemestre_validation_auto") @bp.route("/do_formsemestre_validation_auto")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def do_formsemestre_validation_auto(context, formsemestre_id, REQUEST): def do_formsemestre_validation_auto(context, formsemestre_id, REQUEST):
"Formulaire saisie automatisee des decisions d'un semestre" "Formulaire saisie automatisee des decisions d'un semestre"
if not context._can_validate_sem(REQUEST, formsemestre_id): if not context._can_validate_sem(REQUEST, formsemestre_id):
@ -3149,8 +3150,8 @@ def do_formsemestre_validation_auto(context, formsemestre_id, REQUEST):
@bp.route("/formsemestre_fix_validation_ues") @bp.route("/formsemestre_fix_validation_ues")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def formsemestre_fix_validation_ues(context, formsemestre_id, REQUEST=None): def formsemestre_fix_validation_ues(context, formsemestre_id, REQUEST=None):
"Verif/reparation codes UE" "Verif/reparation codes UE"
if not context._can_validate_sem(REQUEST, formsemestre_id): if not context._can_validate_sem(REQUEST, formsemestre_id):
@ -3167,8 +3168,8 @@ def formsemestre_fix_validation_ues(context, formsemestre_id, REQUEST=None):
@bp.route("/formsemestre_validation_suppress_etud") @bp.route("/formsemestre_validation_suppress_etud")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def formsemestre_validation_suppress_etud( def formsemestre_validation_suppress_etud(
context, formsemestre_id, etudid, REQUEST=None, dialog_confirmed=False context, formsemestre_id, etudid, REQUEST=None, dialog_confirmed=False
): ):
@ -3376,8 +3377,8 @@ sco_publish(
@bp.route("/check_sem_integrity") @bp.route("/check_sem_integrity")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def check_sem_integrity(context, formsemestre_id, REQUEST): def check_sem_integrity(context, formsemestre_id, REQUEST):
"""Debug. """Debug.
Check that ue and module formations are consistents Check that ue and module formations are consistents
@ -3412,8 +3413,8 @@ def check_sem_integrity(context, formsemestre_id, REQUEST):
@bp.route("/check_form_integrity") @bp.route("/check_form_integrity")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def check_form_integrity(context, formation_id, fix=False, REQUEST=None): def check_form_integrity(context, formation_id, fix=False, REQUEST=None):
"debug" "debug"
log("check_form_integrity: formation_id=%s fix=%s" % (formation_id, fix)) log("check_form_integrity: formation_id=%s fix=%s" % (formation_id, fix))
@ -3449,8 +3450,8 @@ def check_form_integrity(context, formation_id, fix=False, REQUEST=None):
@bp.route("/check_formsemestre_integrity") @bp.route("/check_formsemestre_integrity")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def check_formsemestre_integrity(context, formsemestre_id, REQUEST=None): def check_formsemestre_integrity(context, formsemestre_id, REQUEST=None):
"debug" "debug"
log("check_formsemestre_integrity: formsemestre_id=%s" % (formsemestre_id)) log("check_formsemestre_integrity: formsemestre_id=%s" % (formsemestre_id))
@ -3501,8 +3502,8 @@ def check_formsemestre_integrity(context, formsemestre_id, REQUEST=None):
@bp.route("/check_integrity_all") @bp.route("/check_integrity_all")
@scodoc7func(context)
@permission_required(Permission.ScoView) @permission_required(Permission.ScoView)
@scodoc7func(context)
def check_integrity_all(context, REQUEST=None): def check_integrity_all(context, REQUEST=None):
"debug: verifie tous les semestres et tt les formations" "debug: verifie tous les semestres et tt les formations"
# formations # formations

107
refactor.py Normal file
View File

@ -0,0 +1,107 @@
# -*- coding: UTF-8 -*
"""Outil pour migration ScoDoc 7 => ScoDoc 8
Pour chaque module dans views:
- construire la liste des fonctions définies dans ce module:
get_module_functions
Pour chaque module dans views et dans scodoc:
- remplacer context.xxx par app.views.M.xxx
M est le module de views définissant xxx
Si xxx n'est pas trouvé, erreur !
"""
from __future__ import print_function
import re
from pprint import pprint as pp
import sys
import types
import click
import flask
import app
from app import create_app, cli, db
from app.auth.models import User, Role, UserRole
from config import Config
from app.views import notes
TYPES_TO_SCAN = {
types.FunctionType,
# types.ClassType,
# types.DictionaryType,
# types.FloatType,
# types.IntType,
# types.ListType,
# types.StringType,
# types.TupleType,
}
def get_module_symbols(module):
"""returns list of symbols (functions and constants) defined in the given module"""
return [
f.__name__
for f in [getattr(module, name) for name in dir(module)]
if (type(f) in TYPES_TO_SCAN)
and ((type(f) != types.FunctionType) or (f.__module__ == module.__name__))
]
# print("\n".join(f.__name__ for f in get_module_functions(notes)))
def scan_views_symbols():
"""Scan modules in app.views and returns
{ }
"""
views_modules = [
getattr(app.views, mod_name)
for mod_name in dir(app.views)
if type(getattr(app.views, mod_name)) == types.ModuleType
]
sym2mod = {} # symbole_name : module
for module in views_modules:
start = "app.views."
assert module.__name__.startswith(start)
module_name = module.__name__[len(start) :]
symbols = set(get_module_symbols(module))
print("%d symbols defined in %s" % (len(symbols), module))
dups = symbols.intersection(sym2mod)
if len(dups):
print("duplicated symbols !")
for dup in dups:
print("%s:\t%s\t%s" % (dup, sym2mod[dup], module_name))
sym2mod.update({s: module_name for s in symbols})
return sym2mod
def replace_context_calls(sourcefilename, sym2mod):
undefined_list = [] # noms de fonctions non présents dans les modules "views"
def repl(m):
funcname = m.group(1)
module = sym2mod.get(funcname, False)
if module:
return module + "." + funcname
else:
undefined_list.append((sourcefilename, funcname))
return m.group(0) # leave unchanged
print("reading %s" % sourcefilename)
source = open(sourcefilename).read()
exp = re.compile(r"context\.([a-zA-Z0-9_]+)")
source2 = exp.sub(repl, source)
return source2, undefined_list
sym2mod = scan_views_symbols()
source2, undefined_list = replace_context_calls("app/scodoc/sco_core.py", sym2mod)

View File

@ -35,7 +35,6 @@ def make_shell_context():
"pp": pp, "pp": pp,
"flask": flask, "flask": flask,
"current_app": flask.current_app, "current_app": flask.current_app,
"cleardb": _cleardb,
} }