forked from ScoDoc/ScoDoc
refactoring: removing useless args for Flask
This commit is contained in:
parent
243a9b6fd9
commit
8fedde52e7
@ -628,8 +628,6 @@ class GenTable(object):
|
|||||||
H.append(
|
H.append(
|
||||||
self.html_header
|
self.html_header
|
||||||
or html_sco_header.sco_header(
|
or html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title=page_title,
|
page_title=page_title,
|
||||||
javascripts=javascripts,
|
javascripts=javascripts,
|
||||||
init_qtip=init_qtip,
|
init_qtip=init_qtip,
|
||||||
|
@ -30,6 +30,8 @@
|
|||||||
|
|
||||||
import html
|
import html
|
||||||
|
|
||||||
|
from flask import g
|
||||||
|
from flask import request
|
||||||
from flask_login import current_user
|
from flask_login import current_user
|
||||||
|
|
||||||
import app.scodoc.sco_utils as scu
|
import app.scodoc.sco_utils as scu
|
||||||
@ -136,10 +138,7 @@ def scodoc_top_html_header(page_title="ScoDoc: bienvenue"):
|
|||||||
|
|
||||||
# Header:
|
# Header:
|
||||||
def sco_header(
|
def sco_header(
|
||||||
context,
|
|
||||||
REQUEST=None,
|
|
||||||
# optional args
|
# optional args
|
||||||
container=None, # objet qui a lancé la demande
|
|
||||||
page_title="", # page title
|
page_title="", # page title
|
||||||
no_side_bar=False, # hide sidebar
|
no_side_bar=False, # hide sidebar
|
||||||
cssstyles=[], # additionals CSS sheets
|
cssstyles=[], # additionals CSS sheets
|
||||||
@ -159,15 +158,13 @@ def sco_header(
|
|||||||
from app.scodoc.sco_formsemestre_status import formsemestre_page_title
|
from app.scodoc.sco_formsemestre_status import formsemestre_page_title
|
||||||
|
|
||||||
context = None # XXX TODO à enlever #context
|
context = None # XXX TODO à enlever #context
|
||||||
# context est une instance de ZScolar. container est une instance qui "acquiert" ZScolar
|
|
||||||
|
|
||||||
# Add a HTTP header (can be used by Apache to log requests)
|
# Get head message from http request:
|
||||||
if REQUEST.AUTHENTICATED_USER:
|
if not head_message:
|
||||||
REQUEST.RESPONSE.setHeader("X-ScoDoc-User", str(REQUEST.AUTHENTICATED_USER))
|
if request.method == "POST":
|
||||||
|
head_message = request.form.get("head_message", "")
|
||||||
# Get more parameters from REQUEST
|
elif request.method == "GET":
|
||||||
if not head_message and "head_message" in REQUEST.form:
|
head_message = request.args.get("head_message", "")
|
||||||
head_message = REQUEST.form["head_message"]
|
|
||||||
|
|
||||||
params = {
|
params = {
|
||||||
"page_title": page_title or VERSION.SCONAME,
|
"page_title": page_title or VERSION.SCONAME,
|
||||||
@ -175,7 +172,7 @@ def sco_header(
|
|||||||
"ScoURL": scu.ScoURL(),
|
"ScoURL": scu.ScoURL(),
|
||||||
"encoding": scu.SCO_ENCODING,
|
"encoding": scu.SCO_ENCODING,
|
||||||
"titrebandeau_mkup": "<td>" + titrebandeau + "</td>",
|
"titrebandeau_mkup": "<td>" + titrebandeau + "</td>",
|
||||||
"authuser": str(REQUEST.AUTHENTICATED_USER),
|
"authuser": current_user.user_name,
|
||||||
}
|
}
|
||||||
if bodyOnLoad:
|
if bodyOnLoad:
|
||||||
params["bodyOnLoad_mkup"] = """onload="%s" """ % bodyOnLoad
|
params["bodyOnLoad_mkup"] = """onload="%s" """ % bodyOnLoad
|
||||||
@ -307,11 +304,11 @@ def sco_header(
|
|||||||
H.append(scu.CUSTOM_HTML_HEADER)
|
H.append(scu.CUSTOM_HTML_HEADER)
|
||||||
#
|
#
|
||||||
if not no_side_bar:
|
if not no_side_bar:
|
||||||
H.append(html_sidebar.sidebar(REQUEST))
|
H.append(html_sidebar.sidebar())
|
||||||
H.append("""<div class="gtrcontent" id="gtrcontent">""")
|
H.append("""<div class="gtrcontent" id="gtrcontent">""")
|
||||||
#
|
#
|
||||||
# Barre menu semestre:
|
# Barre menu semestre:
|
||||||
H.append(formsemestre_page_title(context, REQUEST))
|
H.append(formsemestre_page_title(context))
|
||||||
|
|
||||||
# Avertissement si mot de passe à changer
|
# Avertissement si mot de passe à changer
|
||||||
if user_check:
|
if user_check:
|
||||||
@ -354,9 +351,7 @@ def html_sem_header(
|
|||||||
"Titre d'une page semestre avec lien vers tableau de bord"
|
"Titre d'une page semestre avec lien vers tableau de bord"
|
||||||
# sem now unused and thus optional...
|
# sem now unused and thus optional...
|
||||||
if with_page_header:
|
if with_page_header:
|
||||||
h = sco_header(
|
h = sco_header(page_title="%s" % (page_title or title), **args)
|
||||||
context, REQUEST, page_title="%s" % (page_title or title), **args
|
|
||||||
)
|
|
||||||
else:
|
else:
|
||||||
h = ""
|
h = ""
|
||||||
if with_h2:
|
if with_h2:
|
||||||
|
@ -28,30 +28,32 @@
|
|||||||
"""
|
"""
|
||||||
Génération de la "sidebar" (marge gauche des pages HTML)
|
Génération de la "sidebar" (marge gauche des pages HTML)
|
||||||
"""
|
"""
|
||||||
from flask import url_for, g
|
from flask import url_for
|
||||||
|
from flask import g
|
||||||
|
from flask import request
|
||||||
|
from flask_login import current_user
|
||||||
|
|
||||||
import app.scodoc.sco_utils as scu
|
import app.scodoc.sco_utils as scu
|
||||||
from app.scodoc import sco_preferences
|
from app.scodoc import sco_preferences
|
||||||
from app.scodoc.sco_permissions import Permission
|
from app.scodoc.sco_permissions import Permission
|
||||||
|
|
||||||
|
|
||||||
def sidebar_common(REQUEST=None):
|
def sidebar_common():
|
||||||
"partie commune à toutes les sidebar"
|
"partie commune à toutes les sidebar"
|
||||||
authuser = REQUEST.AUTHENTICATED_USER
|
|
||||||
params = {
|
params = {
|
||||||
"ScoURL": scu.ScoURL(),
|
"ScoURL": scu.ScoURL(),
|
||||||
"UsersURL": scu.UsersURL(),
|
"UsersURL": scu.UsersURL(),
|
||||||
"NotesURL": scu.NotesURL(),
|
"NotesURL": scu.NotesURL(),
|
||||||
"AbsencesURL": scu.AbsencesURL(),
|
"AbsencesURL": scu.AbsencesURL(),
|
||||||
"LogoutURL": url_for("auth.logout"),
|
"LogoutURL": url_for("auth.logout"),
|
||||||
"authuser": str(authuser),
|
"authuser": current_user.user_name,
|
||||||
}
|
}
|
||||||
H = [
|
H = [
|
||||||
'<a class="scodoc_title" href="about">ScoDoc 8</a>',
|
'<a class="scodoc_title" href="about">ScoDoc 8</a>',
|
||||||
'<div id="authuser"><a id="authuserlink" href="%(ScoURL)s/Users/user_info_page">%(authuser)s</a><br/><a id="deconnectlink" href="%(LogoutURL)s">déconnexion</a></div>'
|
'<div id="authuser"><a id="authuserlink" href="%(ScoURL)s/Users/user_info_page">%(authuser)s</a><br/><a id="deconnectlink" href="%(LogoutURL)s">déconnexion</a></div>'
|
||||||
% params,
|
% params,
|
||||||
sidebar_dept(REQUEST),
|
sidebar_dept(),
|
||||||
"""<h2 class="insidebar">Scolarité</h2>
|
"""<h2 class="insidebar">Scolarité</h2>
|
||||||
<a href="%(ScoURL)s" class="sidebar">Semestres</a> <br/>
|
<a href="%(ScoURL)s" class="sidebar">Semestres</a> <br/>
|
||||||
<a href="%(NotesURL)s" class="sidebar">Programmes</a> <br/>
|
<a href="%(NotesURL)s" class="sidebar">Programmes</a> <br/>
|
||||||
<a href="%(AbsencesURL)s" class="sidebar">Absences</a> <br/>
|
<a href="%(AbsencesURL)s" class="sidebar">Absences</a> <br/>
|
||||||
@ -59,14 +61,14 @@ def sidebar_common(REQUEST=None):
|
|||||||
% params,
|
% params,
|
||||||
]
|
]
|
||||||
|
|
||||||
if authuser.has_permission(Permission.ScoUsersAdmin) or authuser.has_permission(
|
if current_user.has_permission(
|
||||||
Permission.ScoUsersView
|
Permission.ScoUsersAdmin
|
||||||
):
|
) or current_user.has_permission(Permission.ScoUsersView):
|
||||||
H.append(
|
H.append(
|
||||||
"""<a href="%(UsersURL)s" class="sidebar">Utilisateurs</a> <br/>""" % params
|
"""<a href="%(UsersURL)s" class="sidebar">Utilisateurs</a> <br/>""" % params
|
||||||
)
|
)
|
||||||
|
|
||||||
if authuser.has_permission(Permission.ScoChangePreferences):
|
if current_user.has_permission(Permission.ScoChangePreferences):
|
||||||
H.append(
|
H.append(
|
||||||
"""<a href="%(ScoURL)s/edit_preferences" class="sidebar">Paramétrage</a> <br/>"""
|
"""<a href="%(ScoURL)s/edit_preferences" class="sidebar">Paramétrage</a> <br/>"""
|
||||||
% params
|
% params
|
||||||
@ -75,7 +77,7 @@ def sidebar_common(REQUEST=None):
|
|||||||
return "".join(H)
|
return "".join(H)
|
||||||
|
|
||||||
|
|
||||||
def sidebar(REQUEST=None):
|
def sidebar():
|
||||||
"Main HTML page sidebar"
|
"Main HTML page sidebar"
|
||||||
# rewritten from legacy DTML code
|
# rewritten from legacy DTML code
|
||||||
from app.scodoc import sco_abs
|
from app.scodoc import sco_abs
|
||||||
@ -86,7 +88,7 @@ def sidebar(REQUEST=None):
|
|||||||
"SCO_USER_MANUAL": scu.SCO_USER_MANUAL,
|
"SCO_USER_MANUAL": scu.SCO_USER_MANUAL,
|
||||||
}
|
}
|
||||||
|
|
||||||
H = ['<div class="sidebar">', sidebar_common(REQUEST)]
|
H = ['<div class="sidebar">', sidebar_common()]
|
||||||
|
|
||||||
H.append(
|
H.append(
|
||||||
"""<div class="box-chercheetud">Chercher étudiant:<br/>
|
"""<div class="box-chercheetud">Chercher étudiant:<br/>
|
||||||
@ -97,9 +99,14 @@ def sidebar(REQUEST=None):
|
|||||||
"""
|
"""
|
||||||
% params
|
% params
|
||||||
)
|
)
|
||||||
# ---- s'il y a un etudiant selectionné:
|
# ---- Il y-a-t-il un etudiant selectionné ?
|
||||||
if "etudid" in REQUEST.form:
|
etudid = None
|
||||||
etudid = REQUEST.form["etudid"]
|
if request.method == "GET":
|
||||||
|
etudid = request.args.get("etudid", None)
|
||||||
|
elif request.method == "POST":
|
||||||
|
etudid = request.form.get("etudid", None)
|
||||||
|
|
||||||
|
if etudid:
|
||||||
etud = sco_etud.get_etud_info(filled=1, etudid=etudid)[0]
|
etud = sco_etud.get_etud_info(filled=1, etudid=etudid)[0]
|
||||||
params.update(etud)
|
params.update(etud)
|
||||||
params["fiche_url"] = url_for(
|
params["fiche_url"] = url_for(
|
||||||
@ -126,7 +133,7 @@ def sidebar(REQUEST=None):
|
|||||||
)
|
)
|
||||||
|
|
||||||
H.append("<ul>")
|
H.append("<ul>")
|
||||||
if REQUEST.AUTHENTICATED_USER.has_permission(Permission.ScoAbsChange):
|
if current_user.has_permission(Permission.ScoAbsChange):
|
||||||
H.append(
|
H.append(
|
||||||
"""
|
"""
|
||||||
<li> <a href="%(ScoURL)s/Absences/SignaleAbsenceEtud?etudid=%(etudid)s">Ajouter</a></li>
|
<li> <a href="%(ScoURL)s/Absences/SignaleAbsenceEtud?etudid=%(etudid)s">Ajouter</a></li>
|
||||||
@ -168,25 +175,17 @@ def sidebar(REQUEST=None):
|
|||||||
return "".join(H)
|
return "".join(H)
|
||||||
|
|
||||||
|
|
||||||
def sidebar_dept(REQUEST=None):
|
def sidebar_dept():
|
||||||
"""Partie supérieure de la marge de gauche"""
|
"""Partie supérieure de la marge de gauche"""
|
||||||
infos = {
|
|
||||||
"BASE0": REQUEST.BASE0,
|
|
||||||
"DeptIntranetTitle": sco_preferences.get_preference("DeptIntranetTitle"),
|
|
||||||
"DeptIntranetURL": sco_preferences.get_preference("DeptIntranetURL"),
|
|
||||||
"DeptName": sco_preferences.get_preference("DeptName"),
|
|
||||||
"ScoURL": scu.ScoURL(),
|
|
||||||
}
|
|
||||||
|
|
||||||
H = [
|
H = [
|
||||||
"""<h2 class="insidebar">Dépt. %(DeptName)s</h2>
|
f"""<h2 class="insidebar">Dépt. {sco_preferences.get_preference("DeptName")}</h2>
|
||||||
<a href="%(BASE0)s" class="sidebar">Accueil</a> <br/> """
|
<a href="{url_for("scodoc.index")}" class="sidebar">Accueil</a> <br/> """
|
||||||
% infos
|
|
||||||
]
|
]
|
||||||
if infos["DeptIntranetURL"]:
|
dept_intranet_url = sco_preferences.get_preference("DeptIntranetURL")
|
||||||
|
if dept_intranet_url:
|
||||||
H.append(
|
H.append(
|
||||||
'<a href="%(DeptIntranetURL)s" class="sidebar">%(DeptIntranetTitle)s</a> <br/>'
|
f"""<a href="{dept_intranet_url}" class="sidebar">{
|
||||||
% infos
|
sco_preferences.get_preference("DeptIntranetTitle")}</a> <br/>"""
|
||||||
)
|
)
|
||||||
# Entreprises pas encore supporté en ScoDoc8
|
# Entreprises pas encore supporté en ScoDoc8
|
||||||
# H.append(
|
# H.append(
|
||||||
|
@ -48,9 +48,7 @@ from app.scodoc import pe_avislatex
|
|||||||
|
|
||||||
def _pe_view_sem_recap_form(context, formsemestre_id, REQUEST=None):
|
def _pe_view_sem_recap_form(context, formsemestre_id, REQUEST=None):
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(page_title="Avis de poursuite d'études"),
|
||||||
context, REQUEST, page_title="Avis de poursuite d'études"
|
|
||||||
),
|
|
||||||
"""<h2 class="formsemestre">Génération des avis de poursuites d'études</h2>
|
"""<h2 class="formsemestre">Génération des avis de poursuites d'études</h2>
|
||||||
<p class="help">
|
<p class="help">
|
||||||
Cette fonction génère un ensemble de fichiers permettant d'éditer des avis de poursuites d'études.
|
Cette fonction génère un ensemble de fichiers permettant d'éditer des avis de poursuites d'études.
|
||||||
|
@ -132,8 +132,6 @@ def doSignaleAbsence(
|
|||||||
M = "dans le module %s" % modimpl["module"]["code"]
|
M = "dans le module %s" % modimpl["module"]["code"]
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title="Signalement d'une absence pour %(nomprenom)s" % etud,
|
page_title="Signalement d'une absence pour %(nomprenom)s" % etud,
|
||||||
),
|
),
|
||||||
"""<h2>Signalement d'absences</h2>""",
|
"""<h2>Signalement d'absences</h2>""",
|
||||||
@ -221,8 +219,6 @@ def SignaleAbsenceEtud(context, REQUEST=None): # etudid implied
|
|||||||
|
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title="Signalement d'une absence pour %(nomprenom)s" % etud,
|
page_title="Signalement d'une absence pour %(nomprenom)s" % etud,
|
||||||
),
|
),
|
||||||
"""<table><tr><td>
|
"""<table><tr><td>
|
||||||
@ -340,8 +336,6 @@ def doJustifAbsence(
|
|||||||
#
|
#
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title="Justification d'une absence pour %(nomprenom)s" % etud,
|
page_title="Justification d'une absence pour %(nomprenom)s" % etud,
|
||||||
),
|
),
|
||||||
"""<h2>Justification d'absences</h2>""",
|
"""<h2>Justification d'absences</h2>""",
|
||||||
@ -378,8 +372,6 @@ def JustifAbsenceEtud(context, REQUEST=None): # etudid implied
|
|||||||
etudid = etud["etudid"]
|
etudid = etud["etudid"]
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title="Justification d'une absence pour %(nomprenom)s" % etud,
|
page_title="Justification d'une absence pour %(nomprenom)s" % etud,
|
||||||
),
|
),
|
||||||
"""<table><tr><td>
|
"""<table><tr><td>
|
||||||
@ -450,8 +442,6 @@ def doAnnuleAbsence(
|
|||||||
#
|
#
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title="Annulation d'une absence pour %(nomprenom)s" % etud,
|
page_title="Annulation d'une absence pour %(nomprenom)s" % etud,
|
||||||
),
|
),
|
||||||
"""<h2>Annulation d'absences pour %(nomprenom)s</h2>""" % etud,
|
"""<h2>Annulation d'absences pour %(nomprenom)s</h2>""" % etud,
|
||||||
@ -489,8 +479,6 @@ def AnnuleAbsenceEtud(context, REQUEST=None): # etudid implied
|
|||||||
|
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title="Annulation d'une absence pour %(nomprenom)s" % etud,
|
page_title="Annulation d'une absence pour %(nomprenom)s" % etud,
|
||||||
),
|
),
|
||||||
"""<table><tr><td>
|
"""<table><tr><td>
|
||||||
@ -591,8 +579,6 @@ def doAnnuleJustif(
|
|||||||
#
|
#
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title="Annulation d'une justification pour %(nomprenom)s" % etud,
|
page_title="Annulation d'une justification pour %(nomprenom)s" % etud,
|
||||||
),
|
),
|
||||||
"""<h2>Annulation de justifications pour %(nomprenom)s</h2>""" % etud,
|
"""<h2>Annulation de justifications pour %(nomprenom)s</h2>""" % etud,
|
||||||
@ -679,7 +665,7 @@ def EtatAbsences(context, REQUEST=None):
|
|||||||
"""Etat des absences: choix du groupe"""
|
"""Etat des absences: choix du groupe"""
|
||||||
# crude portage from 1999 DTML
|
# crude portage from 1999 DTML
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(context, REQUEST, page_title="Etat des absences"),
|
html_sco_header.sco_header(page_title="Etat des absences"),
|
||||||
"""<h2>Etat des absences pour un groupe</h2>
|
"""<h2>Etat des absences pour un groupe</h2>
|
||||||
<form action="EtatAbsencesGr" method="GET">""",
|
<form action="EtatAbsencesGr" method="GET">""",
|
||||||
formChoixSemestreGroupe(context),
|
formChoixSemestreGroupe(context),
|
||||||
@ -760,8 +746,6 @@ def CalAbs(context, REQUEST=None): # etud implied
|
|||||||
#
|
#
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title="Calendrier des absences de %(nomprenom)s" % etud,
|
page_title="Calendrier des absences de %(nomprenom)s" % etud,
|
||||||
cssstyles=["css/calabs.css"],
|
cssstyles=["css/calabs.css"],
|
||||||
),
|
),
|
||||||
@ -864,9 +848,7 @@ def ListeAbsEtud(
|
|||||||
# Mise en forme HTML:
|
# Mise en forme HTML:
|
||||||
H = []
|
H = []
|
||||||
H.append(
|
H.append(
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(page_title="Absences de %s" % etud["nomprenom"])
|
||||||
context, REQUEST, page_title="Absences de %s" % etud["nomprenom"]
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
H.append(
|
H.append(
|
||||||
"""<h2>Absences de %s (à partir du %s)</h2>"""
|
"""<h2>Absences de %s (à partir du %s)</h2>"""
|
||||||
|
@ -64,9 +64,7 @@ _help_txt = """
|
|||||||
def apo_compare_csv_form(context, REQUEST=None):
|
def apo_compare_csv_form(context, REQUEST=None):
|
||||||
"""Form: submit 2 CSV files to compare them."""
|
"""Form: submit 2 CSV files to compare them."""
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(page_title="Comparaison de fichiers Apogée"),
|
||||||
context, REQUEST, page_title="Comparaison de fichiers Apogée"
|
|
||||||
),
|
|
||||||
"""<h2>Comparaison de fichiers Apogée</h2>
|
"""<h2>Comparaison de fichiers Apogée</h2>
|
||||||
<form id="apo_csv_add" action="apo_compare_csv" method="post" enctype="multipart/form-data">
|
<form id="apo_csv_add" action="apo_compare_csv" method="post" enctype="multipart/form-data">
|
||||||
""",
|
""",
|
||||||
@ -96,9 +94,7 @@ def apo_compare_csv(context, A_file, B_file, autodetect=True, REQUEST=None):
|
|||||||
B = _load_apo_data(B_file, autodetect=autodetect)
|
B = _load_apo_data(B_file, autodetect=autodetect)
|
||||||
|
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(page_title="Comparaison de fichiers Apogée"),
|
||||||
context, REQUEST, page_title="Comparaison de fichiers Apogée"
|
|
||||||
),
|
|
||||||
"<h2>Comparaison de fichiers Apogée</h2>",
|
"<h2>Comparaison de fichiers Apogée</h2>",
|
||||||
_help_txt,
|
_help_txt,
|
||||||
'<div class="apo_compare_csv">',
|
'<div class="apo_compare_csv">',
|
||||||
|
@ -283,7 +283,7 @@ def do_formsemestre_archive(
|
|||||||
|
|
||||||
if not group_ids:
|
if not group_ids:
|
||||||
# tous les inscrits du semestre
|
# tous les inscrits du semestre
|
||||||
group_ids = [sco_groups.get_default_group(context, formsemestre_id)]
|
group_ids = [sco_groups.get_default_group(formsemestre_id)]
|
||||||
groups_infos = sco_groups_view.DisplayedGroupsInfos(
|
groups_infos = sco_groups_view.DisplayedGroupsInfos(
|
||||||
context, group_ids, formsemestre_id=formsemestre_id, REQUEST=REQUEST
|
context, group_ids, formsemestre_id=formsemestre_id, REQUEST=REQUEST
|
||||||
)
|
)
|
||||||
@ -304,8 +304,6 @@ def do_formsemestre_archive(
|
|||||||
data = "\n".join(
|
data = "\n".join(
|
||||||
[
|
[
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title="Moyennes archivées le %s" % date,
|
page_title="Moyennes archivées le %s" % date,
|
||||||
head_message="Moyennes archivées le %s" % date,
|
head_message="Moyennes archivées le %s" % date,
|
||||||
no_side_bar=True,
|
no_side_bar=True,
|
||||||
@ -372,7 +370,7 @@ def formsemestre_archive(context, REQUEST, formsemestre_id, group_ids=[]):
|
|||||||
"""Make and store new archive for this formsemestre.
|
"""Make and store new archive for this formsemestre.
|
||||||
(all students or only selected groups)
|
(all students or only selected groups)
|
||||||
"""
|
"""
|
||||||
if not sco_permissions_check.can_edit_pv(context, REQUEST, formsemestre_id):
|
if not sco_permissions_check.can_edit_pv(formsemestre_id):
|
||||||
raise AccessDenied(
|
raise AccessDenied(
|
||||||
"opération non autorisée pour %s" % str(REQUEST.AUTHENTICATED_USER)
|
"opération non autorisée pour %s" % str(REQUEST.AUTHENTICATED_USER)
|
||||||
)
|
)
|
||||||
@ -380,7 +378,7 @@ def formsemestre_archive(context, REQUEST, formsemestre_id, group_ids=[]):
|
|||||||
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
|
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
|
||||||
if not group_ids:
|
if not group_ids:
|
||||||
# tous les inscrits du semestre
|
# tous les inscrits du semestre
|
||||||
group_ids = [sco_groups.get_default_group(context, formsemestre_id)]
|
group_ids = [sco_groups.get_default_group(formsemestre_id)]
|
||||||
groups_infos = sco_groups_view.DisplayedGroupsInfos(
|
groups_infos = sco_groups_view.DisplayedGroupsInfos(
|
||||||
context, group_ids, formsemestre_id=formsemestre_id, REQUEST=REQUEST
|
context, group_ids, formsemestre_id=formsemestre_id, REQUEST=REQUEST
|
||||||
)
|
)
|
||||||
@ -555,7 +553,7 @@ def formsemestre_delete_archive(
|
|||||||
context, REQUEST, formsemestre_id, archive_name, dialog_confirmed=False
|
context, REQUEST, formsemestre_id, archive_name, dialog_confirmed=False
|
||||||
):
|
):
|
||||||
"""Delete an archive"""
|
"""Delete an archive"""
|
||||||
if not sco_permissions_check.can_edit_pv(context, REQUEST, formsemestre_id):
|
if not sco_permissions_check.can_edit_pv(formsemestre_id):
|
||||||
raise AccessDenied(
|
raise AccessDenied(
|
||||||
"opération non autorisée pour %s" % str(REQUEST.AUTHENTICATED_USER)
|
"opération non autorisée pour %s" % str(REQUEST.AUTHENTICATED_USER)
|
||||||
)
|
)
|
||||||
|
@ -133,8 +133,6 @@ def etud_upload_file_form(context, REQUEST, etudid):
|
|||||||
etud = sco_etud.get_etud_info(filled=1, REQUEST=REQUEST)[0]
|
etud = sco_etud.get_etud_info(filled=1, REQUEST=REQUEST)[0]
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title="Chargement d'un document associé à %(nomprenom)s" % etud,
|
page_title="Chargement d'un document associé à %(nomprenom)s" % etud,
|
||||||
),
|
),
|
||||||
"""<h2>Chargement d'un document associé à %(nomprenom)s</h2>
|
"""<h2>Chargement d'un document associé à %(nomprenom)s</h2>
|
||||||
@ -266,7 +264,7 @@ def etudarchive_import_files_form(context, group_id, REQUEST=None):
|
|||||||
"""Formulaire pour importation fichiers d'un groupe"""
|
"""Formulaire pour importation fichiers d'un groupe"""
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context, REQUEST, page_title="Import de fichiers associés aux étudiants"
|
page_title="Import de fichiers associés aux étudiants"
|
||||||
),
|
),
|
||||||
"""<h2 class="formsemestre">Téléchargement de fichier associés aux étudiants</h2>
|
"""<h2 class="formsemestre">Téléchargement de fichier associés aux étudiants</h2>
|
||||||
<p>Les fichiers associés (dossiers d'admission, certificats, ...), de types quelconques (pdf, doc, images)
|
<p>Les fichiers associés (dossiers d'admission, certificats, ...), de types quelconques (pdf, doc, images)
|
||||||
|
@ -38,7 +38,10 @@ from email.header import Header
|
|||||||
|
|
||||||
from reportlab.lib.colors import Color
|
from reportlab.lib.colors import Color
|
||||||
import six.moves.urllib.request, six.moves.urllib.parse, six.moves.urllib.error
|
import six.moves.urllib.request, six.moves.urllib.parse, six.moves.urllib.error
|
||||||
from flask import g, url_for
|
|
||||||
|
from flask import g
|
||||||
|
from flask import url_for
|
||||||
|
from flask_login import current_user
|
||||||
|
|
||||||
from app.scodoc import sco_emails
|
from app.scodoc import sco_emails
|
||||||
import app.scodoc.sco_utils as scu
|
import app.scodoc.sco_utils as scu
|
||||||
@ -837,14 +840,13 @@ def formsemestre_bulletinetud(
|
|||||||
return "".join(H)
|
return "".join(H)
|
||||||
|
|
||||||
|
|
||||||
def can_send_bulletin_by_mail(context, formsemestre_id, REQUEST):
|
def can_send_bulletin_by_mail(context, formsemestre_id):
|
||||||
"""True if current user is allowed to send a bulletin by mail"""
|
"""True if current user is allowed to send a bulletin by mail"""
|
||||||
authuser = REQUEST.AUTHENTICATED_USER
|
|
||||||
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
|
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
|
||||||
return (
|
return (
|
||||||
sco_preferences.get_preference("bul_mail_allowed_for_all", formsemestre_id)
|
sco_preferences.get_preference("bul_mail_allowed_for_all", formsemestre_id)
|
||||||
or authuser.has_permission(Permission.ScoImplement)
|
or current_user.has_permission(Permission.ScoImplement)
|
||||||
or str(authuser) in sem["responsables"]
|
or current_user.user_name in sem["responsables"]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -921,7 +923,7 @@ def do_formsemestre_bulletinetud(
|
|||||||
elif format == "pdfmail":
|
elif format == "pdfmail":
|
||||||
# format pdfmail: envoie le pdf par mail a l'etud, et affiche le html
|
# format pdfmail: envoie le pdf par mail a l'etud, et affiche le html
|
||||||
# check permission
|
# check permission
|
||||||
if not can_send_bulletin_by_mail(context, formsemestre_id, REQUEST):
|
if not can_send_bulletin_by_mail(context, formsemestre_id):
|
||||||
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
||||||
|
|
||||||
if nohtml:
|
if nohtml:
|
||||||
@ -1112,7 +1114,7 @@ def _formsemestre_bulletinetud_header_html(
|
|||||||
},
|
},
|
||||||
"enabled": etud["email"]
|
"enabled": etud["email"]
|
||||||
and can_send_bulletin_by_mail(
|
and can_send_bulletin_by_mail(
|
||||||
context, formsemestre_id, REQUEST
|
context, formsemestre_id
|
||||||
), # possible slt si on a un mail...
|
), # possible slt si on a un mail...
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -1127,7 +1129,7 @@ def _formsemestre_bulletinetud_header_html(
|
|||||||
},
|
},
|
||||||
"enabled": etud["emailperso"]
|
"enabled": etud["emailperso"]
|
||||||
and can_send_bulletin_by_mail(
|
and can_send_bulletin_by_mail(
|
||||||
context, formsemestre_id, REQUEST
|
context, formsemestre_id
|
||||||
), # possible slt si on a un mail...
|
), # possible slt si on a un mail...
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -1168,9 +1170,7 @@ def _formsemestre_bulletinetud_header_html(
|
|||||||
"formsemestre_id": formsemestre_id,
|
"formsemestre_id": formsemestre_id,
|
||||||
"etudid": etudid,
|
"etudid": etudid,
|
||||||
},
|
},
|
||||||
"enabled": sco_permissions_check.can_validate_sem(
|
"enabled": sco_permissions_check.can_validate_sem(formsemestre_id),
|
||||||
context, REQUEST, formsemestre_id
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Enregistrer note d'une UE externe",
|
"title": "Enregistrer note d'une UE externe",
|
||||||
@ -1179,9 +1179,7 @@ def _formsemestre_bulletinetud_header_html(
|
|||||||
"formsemestre_id": formsemestre_id,
|
"formsemestre_id": formsemestre_id,
|
||||||
"etudid": etudid,
|
"etudid": etudid,
|
||||||
},
|
},
|
||||||
"enabled": sco_permissions_check.can_validate_sem(
|
"enabled": sco_permissions_check.can_validate_sem(formsemestre_id),
|
||||||
context, REQUEST, formsemestre_id
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Entrer décisions jury",
|
"title": "Entrer décisions jury",
|
||||||
@ -1190,9 +1188,7 @@ def _formsemestre_bulletinetud_header_html(
|
|||||||
"formsemestre_id": formsemestre_id,
|
"formsemestre_id": formsemestre_id,
|
||||||
"etudid": etudid,
|
"etudid": etudid,
|
||||||
},
|
},
|
||||||
"enabled": sco_permissions_check.can_validate_sem(
|
"enabled": sco_permissions_check.can_validate_sem(formsemestre_id),
|
||||||
context, REQUEST, formsemestre_id
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Editer PV jury",
|
"title": "Editer PV jury",
|
||||||
|
@ -58,7 +58,7 @@ def formsemestre_table_estim_cost(
|
|||||||
(dans ce cas, retoucher le tableau excel exporté).
|
(dans ce cas, retoucher le tableau excel exporté).
|
||||||
"""
|
"""
|
||||||
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
|
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
|
||||||
sco_formsemestre_status.fill_formsemestre(context, sem, REQUEST=REQUEST)
|
sco_formsemestre_status.fill_formsemestre(sem)
|
||||||
Mlist = sco_moduleimpl.do_moduleimpl_withmodule_list(
|
Mlist = sco_moduleimpl.do_moduleimpl_withmodule_list(
|
||||||
context, formsemestre_id=formsemestre_id
|
context, formsemestre_id=formsemestre_id
|
||||||
)
|
)
|
||||||
|
@ -196,7 +196,7 @@ def table_debouche_etudids(context, etudids, keep_numeric=True):
|
|||||||
def report_debouche_ask_date(context, REQUEST=None):
|
def report_debouche_ask_date(context, REQUEST=None):
|
||||||
"""Formulaire demande date départ"""
|
"""Formulaire demande date départ"""
|
||||||
return (
|
return (
|
||||||
html_sco_header.sco_header(context, REQUEST)
|
html_sco_header.sco_header()
|
||||||
+ """<form method="GET">
|
+ """<form method="GET">
|
||||||
Date de départ de la recherche: <input type="text" name="start_year" value="" size=10/>
|
Date de départ de la recherche: <input type="text" name="start_year" value="" size=10/>
|
||||||
</form>"""
|
</form>"""
|
||||||
@ -210,22 +210,6 @@ def report_debouche_ask_date(context, REQUEST=None):
|
|||||||
#
|
#
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
|
|
||||||
# OBSOLETE (this field has been copied to itemsuivi)
|
|
||||||
# def debouche_set(context, object, value, REQUEST=None):
|
|
||||||
# """Set debouche (field in admission table, may be deprecated ?)
|
|
||||||
# """
|
|
||||||
# if not sco_permissions_check.can_edit_suivi(context, REQUEST):
|
|
||||||
# raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
|
||||||
# adm_id = object
|
|
||||||
# debouche = value.strip('-_ \t')
|
|
||||||
# cnx = ndb.GetDBConnexion()
|
|
||||||
# adms = sco_etud.admission_list(cnx, {'etudid' : etudid})
|
|
||||||
# if not adms:
|
|
||||||
# raise ValueError('no admission info for %s !' % etudid)
|
|
||||||
# adm = adms[0]
|
|
||||||
# adm['debouche'] = debouche
|
|
||||||
# admission_edit(cnx, adm)
|
|
||||||
|
|
||||||
|
|
||||||
_itemsuiviEditor = ndb.EditableTable(
|
_itemsuiviEditor = ndb.EditableTable(
|
||||||
"itemsuivi",
|
"itemsuivi",
|
||||||
@ -266,7 +250,7 @@ def itemsuivi_get(cnx, itemsuivi_id, ignore_errors=False):
|
|||||||
|
|
||||||
def itemsuivi_suppress(context, itemsuivi_id, REQUEST=None):
|
def itemsuivi_suppress(context, itemsuivi_id, REQUEST=None):
|
||||||
"""Suppression d'un item"""
|
"""Suppression d'un item"""
|
||||||
if not sco_permissions_check.can_edit_suivi(context, REQUEST):
|
if not sco_permissions_check.can_edit_suivi():
|
||||||
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
||||||
cnx = ndb.GetDBConnexion()
|
cnx = ndb.GetDBConnexion()
|
||||||
item = itemsuivi_get(cnx, itemsuivi_id, ignore_errors=True)
|
item = itemsuivi_get(cnx, itemsuivi_id, ignore_errors=True)
|
||||||
@ -280,7 +264,7 @@ def itemsuivi_create(
|
|||||||
context, etudid, item_date=None, situation="", REQUEST=None, format=None
|
context, etudid, item_date=None, situation="", REQUEST=None, format=None
|
||||||
):
|
):
|
||||||
"""Creation d'un item"""
|
"""Creation d'un item"""
|
||||||
if not sco_permissions_check.can_edit_suivi(context, REQUEST):
|
if not sco_permissions_check.can_edit_suivi():
|
||||||
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
||||||
cnx = ndb.GetDBConnexion()
|
cnx = ndb.GetDBConnexion()
|
||||||
itemsuivi_id = _itemsuivi_create(
|
itemsuivi_id = _itemsuivi_create(
|
||||||
@ -298,7 +282,7 @@ def itemsuivi_set_date(context, itemsuivi_id, item_date, REQUEST=None):
|
|||||||
"""set item date
|
"""set item date
|
||||||
item_date is a string dd/mm/yyyy
|
item_date is a string dd/mm/yyyy
|
||||||
"""
|
"""
|
||||||
if not sco_permissions_check.can_edit_suivi(context, REQUEST):
|
if not sco_permissions_check.can_edit_suivi():
|
||||||
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
||||||
# log('itemsuivi_set_date %s : %s' % (itemsuivi_id, item_date))
|
# log('itemsuivi_set_date %s : %s' % (itemsuivi_id, item_date))
|
||||||
cnx = ndb.GetDBConnexion()
|
cnx = ndb.GetDBConnexion()
|
||||||
@ -309,7 +293,7 @@ def itemsuivi_set_date(context, itemsuivi_id, item_date, REQUEST=None):
|
|||||||
|
|
||||||
def itemsuivi_set_situation(context, object, value, REQUEST=None):
|
def itemsuivi_set_situation(context, object, value, REQUEST=None):
|
||||||
"""set situation"""
|
"""set situation"""
|
||||||
if not sco_permissions_check.can_edit_suivi(context, REQUEST):
|
if not sco_permissions_check.can_edit_suivi():
|
||||||
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
||||||
itemsuivi_id = object
|
itemsuivi_id = object
|
||||||
situation = value.strip("-_ \t")
|
situation = value.strip("-_ \t")
|
||||||
@ -365,7 +349,7 @@ def itemsuivi_tag_set(context, itemsuivi_id="", taglist=[], REQUEST=None):
|
|||||||
a string with tag names separated by commas ("un;deux")
|
a string with tag names separated by commas ("un;deux")
|
||||||
or a list of strings (["un", "deux"])
|
or a list of strings (["un", "deux"])
|
||||||
"""
|
"""
|
||||||
if not sco_permissions_check.can_edit_suivi(context, REQUEST):
|
if not sco_permissions_check.can_edit_suivi():
|
||||||
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
||||||
if not taglist:
|
if not taglist:
|
||||||
taglist = []
|
taglist = []
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from flask import g
|
from flask import g
|
||||||
|
from flask_login import current_user
|
||||||
|
|
||||||
import app.scodoc.sco_utils as scu
|
import app.scodoc.sco_utils as scu
|
||||||
from app.scodoc.gen_tables import GenTable
|
from app.scodoc.gen_tables import GenTable
|
||||||
@ -144,8 +145,7 @@ Chercher étape courante: <input name="etape_apo" type="text" size="8" spellchec
|
|||||||
% scu.NotesURL()
|
% scu.NotesURL()
|
||||||
)
|
)
|
||||||
#
|
#
|
||||||
authuser = REQUEST.AUTHENTICATED_USER
|
if current_user.has_permission(Permission.ScoEtudInscrit):
|
||||||
if authuser.has_permission(Permission.ScoEtudInscrit):
|
|
||||||
H.append(
|
H.append(
|
||||||
"""<hr>
|
"""<hr>
|
||||||
<h3>Gestion des étudiants</h3>
|
<h3>Gestion des étudiants</h3>
|
||||||
@ -158,7 +158,7 @@ Chercher étape courante: <input name="etape_apo" type="text" size="8" spellchec
|
|||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
#
|
#
|
||||||
if authuser.has_permission(Permission.ScoEditApo):
|
if current_user.has_permission(Permission.ScoEditApo):
|
||||||
H.append(
|
H.append(
|
||||||
"""<hr>
|
"""<hr>
|
||||||
<h3>Exports Apogée</h3>
|
<h3>Exports Apogée</h3>
|
||||||
@ -178,11 +178,7 @@ Chercher étape courante: <input name="etape_apo" type="text" size="8" spellchec
|
|||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
#
|
#
|
||||||
return (
|
return html_sco_header.sco_header() + "\n".join(H) + html_sco_header.sco_footer()
|
||||||
html_sco_header.sco_header(context, REQUEST)
|
|
||||||
+ "\n".join(H)
|
|
||||||
+ html_sco_header.sco_footer()
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def _sem_table(context, sems):
|
def _sem_table(context, sems):
|
||||||
|
@ -66,9 +66,7 @@ SCO_DUMP_LOCK = "/tmp/scodump.lock"
|
|||||||
|
|
||||||
def sco_dump_and_send_db(context, REQUEST=None):
|
def sco_dump_and_send_db(context, REQUEST=None):
|
||||||
"""Dump base de données du département courant et l'envoie anonymisée pour debug"""
|
"""Dump base de données du département courant et l'envoie anonymisée pour debug"""
|
||||||
H = [
|
H = [html_sco_header.sco_header(page_title="Assistance technique")]
|
||||||
html_sco_header.sco_header(context, REQUEST, page_title="Assistance technique")
|
|
||||||
]
|
|
||||||
# get currect (dept) DB name:
|
# get currect (dept) DB name:
|
||||||
cursor = ndb.SimpleQuery("SELECT current_database()", {})
|
cursor = ndb.SimpleQuery("SELECT current_database()", {})
|
||||||
db_name = cursor.fetchone()[0]
|
db_name = cursor.fetchone()[0]
|
||||||
|
@ -52,9 +52,7 @@ def formation_delete(context, formation_id=None, dialog_confirmed=False, REQUEST
|
|||||||
F = F[0]
|
F = F[0]
|
||||||
|
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(page_title="Suppression d'une formation"),
|
||||||
context, REQUEST, page_title="Suppression d'une formation"
|
|
||||||
),
|
|
||||||
"""<h2>Suppression de la formation %(titre)s (%(acronyme)s)</h2>""" % F,
|
"""<h2>Suppression de la formation %(titre)s (%(acronyme)s)</h2>""" % F,
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -130,9 +128,7 @@ def formation_edit(context, formation_id=None, create=False, REQUEST=None):
|
|||||||
"""Edit or create a formation"""
|
"""Edit or create a formation"""
|
||||||
if create:
|
if create:
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(page_title="Création d'une formation"),
|
||||||
context, REQUEST, page_title="Création d'une formation"
|
|
||||||
),
|
|
||||||
"""<h2>Création d'une formation</h2>
|
"""<h2>Création d'une formation</h2>
|
||||||
|
|
||||||
<p class="help">Une "formation" décrit une filière, comme un DUT ou une Licence. La formation se subdivise en unités pédagogiques (UE, matières, modules). Elle peut se diviser en plusieurs semestres (ou sessions), qui seront mis en place séparément.
|
<p class="help">Une "formation" décrit une filière, comme un DUT ou une Licence. La formation se subdivise en unités pédagogiques (UE, matières, modules). Elle peut se diviser en plusieurs semestres (ou sessions), qui seront mis en place séparément.
|
||||||
@ -154,9 +150,7 @@ def formation_edit(context, formation_id=None, create=False, REQUEST=None):
|
|||||||
is_locked = sco_formations.formation_has_locked_sems(context, formation_id)
|
is_locked = sco_formations.formation_has_locked_sems(context, formation_id)
|
||||||
submitlabel = "Modifier les valeurs"
|
submitlabel = "Modifier les valeurs"
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(page_title="Modification d'une formation"),
|
||||||
context, REQUEST, page_title="Modification d'une formation"
|
|
||||||
),
|
|
||||||
"""<h2>Modification de la formation %(acronyme)s</h2>""" % initvalues,
|
"""<h2>Modification de la formation %(acronyme)s</h2>""" % initvalues,
|
||||||
]
|
]
|
||||||
if is_locked:
|
if is_locked:
|
||||||
|
@ -98,9 +98,7 @@ def matiere_create(context, ue_id=None, REQUEST=None):
|
|||||||
|
|
||||||
UE = sco_edit_ue.do_ue_list(context, args={"ue_id": ue_id})[0]
|
UE = sco_edit_ue.do_ue_list(context, args={"ue_id": ue_id})[0]
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(page_title="Création d'une matière"),
|
||||||
context, REQUEST, page_title="Création d'une matière"
|
|
||||||
),
|
|
||||||
"""<h2>Création d'une matière dans l'UE %(titre)s (%(acronyme)s)</h2>""" % UE,
|
"""<h2>Création d'une matière dans l'UE %(titre)s (%(acronyme)s)</h2>""" % UE,
|
||||||
"""<p class="help">Les matières sont des groupes de modules dans une UE
|
"""<p class="help">Les matières sont des groupes de modules dans une UE
|
||||||
d'une formation donnée. Les matières servent surtout pour la
|
d'une formation donnée. Les matières servent surtout pour la
|
||||||
@ -197,9 +195,7 @@ def matiere_delete(context, matiere_id=None, REQUEST=None):
|
|||||||
M = do_matiere_list(context, args={"matiere_id": matiere_id})[0]
|
M = do_matiere_list(context, args={"matiere_id": matiere_id})[0]
|
||||||
UE = sco_edit_ue.do_ue_list(context, args={"ue_id": M["ue_id"]})[0]
|
UE = sco_edit_ue.do_ue_list(context, args={"ue_id": M["ue_id"]})[0]
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(page_title="Suppression d'une matière"),
|
||||||
context, REQUEST, page_title="Suppression d'une matière"
|
|
||||||
),
|
|
||||||
"<h2>Suppression de la matière %(titre)s" % M,
|
"<h2>Suppression de la matière %(titre)s" % M,
|
||||||
" dans l'UE (%(acronyme)s))</h2>" % UE,
|
" dans l'UE (%(acronyme)s))</h2>" % UE,
|
||||||
]
|
]
|
||||||
@ -242,9 +238,7 @@ def matiere_edit(context, matiere_id=None, REQUEST=None):
|
|||||||
ue_names = ["%(acronyme)s (%(titre)s)" % u for u in ues]
|
ue_names = ["%(acronyme)s (%(titre)s)" % u for u in ues]
|
||||||
ue_ids = [u["ue_id"] for u in ues]
|
ue_ids = [u["ue_id"] for u in ues]
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(page_title="Modification d'une matière"),
|
||||||
context, REQUEST, page_title="Modification d'une matière"
|
|
||||||
),
|
|
||||||
"""<h2>Modification de la matière %(titre)s""" % F,
|
"""<h2>Modification de la matière %(titre)s""" % F,
|
||||||
"""(formation %(acronyme)s, version %(version)s)</h2>""" % Fo,
|
"""(formation %(acronyme)s, version %(version)s)</h2>""" % Fo,
|
||||||
]
|
]
|
||||||
|
@ -131,7 +131,7 @@ def module_create(context, matiere_id=None, REQUEST=None):
|
|||||||
parcours = sco_codes_parcours.get_parcours_from_code(Fo["type_parcours"])
|
parcours = sco_codes_parcours.get_parcours_from_code(Fo["type_parcours"])
|
||||||
semestres_indices = list(range(1, parcours.NB_SEM + 1))
|
semestres_indices = list(range(1, parcours.NB_SEM + 1))
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(context, REQUEST, page_title="Création d'un module"),
|
html_sco_header.sco_header(page_title="Création d'un module"),
|
||||||
"""<h2>Création d'un module dans la matière %(titre)s""" % M,
|
"""<h2>Création d'un module dans la matière %(titre)s""" % M,
|
||||||
""" (UE %(acronyme)s)</h2>""" % UE,
|
""" (UE %(acronyme)s)</h2>""" % UE,
|
||||||
_MODULE_HELP,
|
_MODULE_HELP,
|
||||||
@ -287,9 +287,7 @@ def module_delete(context, module_id=None, REQUEST=None):
|
|||||||
raise ScoValueError("Module inexistant !")
|
raise ScoValueError("Module inexistant !")
|
||||||
Mod = Mods[0]
|
Mod = Mods[0]
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(page_title="Suppression d'un module"),
|
||||||
context, REQUEST, page_title="Suppression d'un module"
|
|
||||||
),
|
|
||||||
"""<h2>Suppression du module %(titre)s (%(code)s)</h2>""" % Mod,
|
"""<h2>Suppression du module %(titre)s (%(code)s)</h2>""" % Mod,
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -368,8 +366,6 @@ def module_edit(context, module_id=None, REQUEST=None):
|
|||||||
|
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title="Modification du module %(titre)s" % Mod,
|
page_title="Modification du module %(titre)s" % Mod,
|
||||||
cssstyles=["libjs/jQuery-tagEditor/jquery.tag-editor.css"],
|
cssstyles=["libjs/jQuery-tagEditor/jquery.tag-editor.css"],
|
||||||
javascripts=[
|
javascripts=[
|
||||||
@ -539,9 +535,7 @@ def module_list(context, formation_id, REQUEST=None):
|
|||||||
raise ScoValueError("invalid formation !")
|
raise ScoValueError("invalid formation !")
|
||||||
F = sco_formations.formation_list(context, args={"formation_id": formation_id})[0]
|
F = sco_formations.formation_list(context, args={"formation_id": formation_id})[0]
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(page_title="Liste des modules de %(titre)s" % F),
|
||||||
context, REQUEST, page_title="Liste des modules de %(titre)s" % F
|
|
||||||
),
|
|
||||||
"""<h2>Listes des modules dans la formation %(titre)s (%(acronyme)s)</h2>"""
|
"""<h2>Listes des modules dans la formation %(titre)s (%(acronyme)s)</h2>"""
|
||||||
% F,
|
% F,
|
||||||
'<ul class="notes_module_list">',
|
'<ul class="notes_module_list">',
|
||||||
|
@ -211,9 +211,7 @@ def ue_edit(context, ue_id=None, create=False, formation_id=None, REQUEST=None):
|
|||||||
parcours = sco_codes_parcours.get_parcours_from_code(Fo["type_parcours"])
|
parcours = sco_codes_parcours.get_parcours_from_code(Fo["type_parcours"])
|
||||||
|
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(page_title=title, javascripts=["js/edit_ue.js"]),
|
||||||
context, REQUEST, page_title=title, javascripts=["js/edit_ue.js"]
|
|
||||||
),
|
|
||||||
"<h2>" + title,
|
"<h2>" + title,
|
||||||
" (formation %(acronyme)s, version %(version)s)</h2>" % Fo,
|
" (formation %(acronyme)s, version %(version)s)</h2>" % Fo,
|
||||||
"""
|
"""
|
||||||
@ -470,8 +468,6 @@ def ue_list(context, formation_id=None, msg="", REQUEST=None):
|
|||||||
)
|
)
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
cssstyles=["libjs/jQuery-tagEditor/jquery.tag-editor.css"],
|
cssstyles=["libjs/jQuery-tagEditor/jquery.tag-editor.css"],
|
||||||
javascripts=[
|
javascripts=[
|
||||||
"libjs/jinplace-1.2.1.min.js",
|
"libjs/jinplace-1.2.1.min.js",
|
||||||
|
@ -166,8 +166,6 @@ def experimental_calendar(context, group_id=None, formsemestre_id=None, REQUEST=
|
|||||||
return "\n".join(
|
return "\n".join(
|
||||||
[
|
[
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
javascripts=[
|
javascripts=[
|
||||||
"libjs/purl.js",
|
"libjs/purl.js",
|
||||||
"libjs/moment.min.js",
|
"libjs/moment.min.js",
|
||||||
|
@ -387,7 +387,7 @@ apo_csv_store(context, csv_data, annee_scolaire, sem_id)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
groups_infos = sco_groups_view.DisplayedGroupsInfos(context, [sco_groups.get_default_group(context, formsemestre_id)], formsemestre_id=formsemestre_id, REQUEST=REQUEST)
|
groups_infos = sco_groups_view.DisplayedGroupsInfos(context, [sco_groups.get_default_group(formsemestre_id)], formsemestre_id=formsemestre_id)
|
||||||
|
|
||||||
nt = sco_cache.NotesTableCache.get( formsemestre_id)
|
nt = sco_cache.NotesTableCache.get( formsemestre_id)
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ def apo_semset_maq_status(
|
|||||||
if not semset_id:
|
if not semset_id:
|
||||||
raise ValueError("invalid null semset_id")
|
raise ValueError("invalid null semset_id")
|
||||||
semset = sco_semset.SemSet(context, semset_id=semset_id)
|
semset = sco_semset.SemSet(context, semset_id=semset_id)
|
||||||
semset.fill_formsemestres(REQUEST)
|
semset.fill_formsemestres()
|
||||||
# autorise export meme si etudiants Apo manquants:
|
# autorise export meme si etudiants Apo manquants:
|
||||||
allow_missing_apo = int(allow_missing_apo)
|
allow_missing_apo = int(allow_missing_apo)
|
||||||
# autorise export meme s'il manque des décisions de jury:
|
# autorise export meme s'il manque des décisions de jury:
|
||||||
@ -105,8 +105,6 @@ def apo_semset_maq_status(
|
|||||||
|
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title="Export Apogée",
|
page_title="Export Apogée",
|
||||||
javascripts=["js/apo_semset_maq_status.js"],
|
javascripts=["js/apo_semset_maq_status.js"],
|
||||||
),
|
),
|
||||||
@ -570,8 +568,6 @@ def _view_etuds_page(
|
|||||||
|
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title=title,
|
page_title=title,
|
||||||
init_qtip=True,
|
init_qtip=True,
|
||||||
javascripts=["js/etud_info.js"],
|
javascripts=["js/etud_info.js"],
|
||||||
@ -719,8 +715,6 @@ def view_apo_csv(context, etape_apo="", semset_id="", format="html", REQUEST=Non
|
|||||||
|
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title="Maquette Apogée enregistrée pour %s" % etape_apo,
|
page_title="Maquette Apogée enregistrée pour %s" % etape_apo,
|
||||||
init_qtip=True,
|
init_qtip=True,
|
||||||
javascripts=["js/etud_info.js"],
|
javascripts=["js/etud_info.js"],
|
||||||
|
@ -253,7 +253,7 @@ def do_evaluation_create(
|
|||||||
evaluation_type=None,
|
evaluation_type=None,
|
||||||
numero=None,
|
numero=None,
|
||||||
REQUEST=None,
|
REQUEST=None,
|
||||||
**kw # ceci pour absorber les arguments excedentaires de tf #sco8
|
**kw, # ceci pour absorber les arguments excedentaires de tf #sco8
|
||||||
):
|
):
|
||||||
"""Create an evaluation"""
|
"""Create an evaluation"""
|
||||||
context = None # #context
|
context = None # #context
|
||||||
@ -623,10 +623,10 @@ def do_evaluation_get_all_notes(
|
|||||||
"""Toutes les notes pour une evaluation: { etudid : { 'value' : value, 'date' : date ... }}
|
"""Toutes les notes pour une evaluation: { etudid : { 'value' : value, 'date' : date ... }}
|
||||||
Attention: inclut aussi les notes des étudiants qui ne sont plus inscrits au module.
|
Attention: inclut aussi les notes des étudiants qui ne sont plus inscrits au module.
|
||||||
"""
|
"""
|
||||||
# log('do_evaluation_get_all_notes( e=%s fs=%s )' % (evaluation_id, filter_suppressed))
|
|
||||||
do_cache = (
|
do_cache = (
|
||||||
filter_suppressed and table == "notes_notes" and (by_uid is None)
|
filter_suppressed and table == "notes_notes" and (by_uid is None)
|
||||||
) # pas de cache pour (rares) appels via undo_notes ou specifiant un enseignant
|
) # pas de cache pour (rares) appels via undo_notes ou specifiant un enseignant
|
||||||
|
log(f"do_evaluation_get_all_notes: {evaluation_id} (do_cache={do_cache})")
|
||||||
if do_cache:
|
if do_cache:
|
||||||
r = sco_cache.EvaluationCache.get(evaluation_id)
|
r = sco_cache.EvaluationCache.get(evaluation_id)
|
||||||
if r != None:
|
if r != None:
|
||||||
@ -651,7 +651,8 @@ def do_evaluation_get_all_notes(
|
|||||||
for x in res:
|
for x in res:
|
||||||
d[x["etudid"]] = x
|
d[x["etudid"]] = x
|
||||||
if do_cache:
|
if do_cache:
|
||||||
sco_cache.EvaluationCache.set(evaluation_id, d)
|
status = sco_cache.EvaluationCache.set(evaluation_id, d)
|
||||||
|
log(f"EvaluationCache.set: {evaluation_id}\t{status}")
|
||||||
return d
|
return d
|
||||||
|
|
||||||
|
|
||||||
@ -1082,7 +1083,7 @@ def evaluation_describe(evaluation_id="", edit_in_place=True, REQUEST=None):
|
|||||||
% (jour, E["heure_debut"], E["heure_fin"])
|
% (jour, E["heure_debut"], E["heure_fin"])
|
||||||
)
|
)
|
||||||
if E["jour"]:
|
if E["jour"]:
|
||||||
group_id = sco_groups.get_default_group(context, formsemestre_id)
|
group_id = sco_groups.get_default_group(formsemestre_id)
|
||||||
H.append(
|
H.append(
|
||||||
'<span class="noprint"><a href="%s/Absences/EtatAbsencesDate?group_ids=%s&date=%s">(absences ce jour)</a></span>'
|
'<span class="noprint"><a href="%s/Absences/EtatAbsencesDate?group_ids=%s&date=%s">(absences ce jour)</a></span>'
|
||||||
% (
|
% (
|
||||||
@ -1129,7 +1130,7 @@ def evaluation_create_form(
|
|||||||
if not readonly:
|
if not readonly:
|
||||||
if not sco_permissions_check.can_edit_evaluation(moduleimpl_id=moduleimpl_id):
|
if not sco_permissions_check.can_edit_evaluation(moduleimpl_id=moduleimpl_id):
|
||||||
return (
|
return (
|
||||||
html_sco_header.sco_header(context, REQUEST)
|
html_sco_header.sco_header()
|
||||||
+ "<h2>Opération non autorisée</h2><p>"
|
+ "<h2>Opération non autorisée</h2><p>"
|
||||||
+ "Modification évaluation impossible pour %s"
|
+ "Modification évaluation impossible pour %s"
|
||||||
% current_user.get_nomplogin()
|
% current_user.get_nomplogin()
|
||||||
@ -1359,7 +1360,7 @@ def evaluation_create_form(
|
|||||||
|
|
||||||
dest_url = "moduleimpl_status?moduleimpl_id=%s" % M["moduleimpl_id"]
|
dest_url = "moduleimpl_status?moduleimpl_id=%s" % M["moduleimpl_id"]
|
||||||
if tf[0] == 0:
|
if tf[0] == 0:
|
||||||
head = html_sco_header.sco_header(context, REQUEST, page_title=page_title)
|
head = html_sco_header.sco_header(page_title=page_title)
|
||||||
return head + "\n".join(H) + "\n" + tf[1] + help + html_sco_header.sco_footer()
|
return head + "\n".join(H) + "\n" + tf[1] + help + html_sco_header.sco_footer()
|
||||||
elif tf[0] == -1:
|
elif tf[0] == -1:
|
||||||
return REQUEST.RESPONSE.redirect(dest_url)
|
return REQUEST.RESPONSE.redirect(dest_url)
|
||||||
|
@ -278,8 +278,6 @@ def scodoc_table_results(
|
|||||||
|
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title="Export résultats",
|
page_title="Export résultats",
|
||||||
init_qtip=True,
|
init_qtip=True,
|
||||||
javascripts=html_sco_header.BOOTSTRAP_MULTISELECT_JS
|
javascripts=html_sco_header.BOOTSTRAP_MULTISELECT_JS
|
||||||
|
@ -86,9 +86,7 @@ def form_search_etud(
|
|||||||
|
|
||||||
if add_headers:
|
if add_headers:
|
||||||
return (
|
return (
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(page_title="Choix d'un étudiant")
|
||||||
context, REQUEST, page_title="Choix d'un étudiant"
|
|
||||||
)
|
|
||||||
+ "\n".join(H)
|
+ "\n".join(H)
|
||||||
+ html_sco_header.sco_footer()
|
+ html_sco_header.sco_footer()
|
||||||
)
|
)
|
||||||
|
@ -219,8 +219,9 @@ def etapes_apo_str(etapes):
|
|||||||
return ", ".join([str(x) for x in etapes])
|
return ", ".join([str(x) for x in etapes])
|
||||||
|
|
||||||
|
|
||||||
def do_formsemestre_create(context, args, REQUEST, silent=False):
|
def do_formsemestre_create(args, silent=False):
|
||||||
"create a formsemestre"
|
"create a formsemestre"
|
||||||
|
context = None # XXX #context
|
||||||
from app.scodoc import sco_groups
|
from app.scodoc import sco_groups
|
||||||
from app.scodoc import sco_news
|
from app.scodoc import sco_news
|
||||||
|
|
||||||
@ -235,11 +236,12 @@ def do_formsemestre_create(context, args, REQUEST, silent=False):
|
|||||||
|
|
||||||
# create default partition
|
# create default partition
|
||||||
partition_id = sco_groups.partition_create(
|
partition_id = sco_groups.partition_create(
|
||||||
context, formsemestre_id, default=True, redirect=0, REQUEST=REQUEST
|
context,
|
||||||
)
|
formsemestre_id,
|
||||||
_group_id = sco_groups.createGroup(
|
default=True,
|
||||||
context, partition_id, default=True, REQUEST=REQUEST
|
redirect=0,
|
||||||
)
|
)
|
||||||
|
_group_id = sco_groups.createGroup(context, partition_id, default=True)
|
||||||
|
|
||||||
# news
|
# news
|
||||||
if "titre" not in args:
|
if "titre" not in args:
|
||||||
|
@ -68,8 +68,6 @@ def formsemestre_createwithmodules(context, REQUEST=None):
|
|||||||
"""Page création d'un semestre"""
|
"""Page création d'un semestre"""
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title="Création d'un semestre",
|
page_title="Création d'un semestre",
|
||||||
javascripts=["libjs/AutoSuggest.js"],
|
javascripts=["libjs/AutoSuggest.js"],
|
||||||
cssstyles=["css/autosuggest_inquisitor.css"],
|
cssstyles=["css/autosuggest_inquisitor.css"],
|
||||||
@ -552,9 +550,7 @@ def do_formsemestre_createwithmodules(context, REQUEST=None, edit=False):
|
|||||||
else:
|
else:
|
||||||
disabled = ""
|
disabled = ""
|
||||||
fcg = '<select name="%s" %s>' % (select_name, disabled)
|
fcg = '<select name="%s" %s>' % (select_name, disabled)
|
||||||
default_group_id = sco_groups.get_default_group(
|
default_group_id = sco_groups.get_default_group(formsemestre_id)
|
||||||
context, formsemestre_id
|
|
||||||
)
|
|
||||||
fcg += '<option value="%s" %s>Tous</option>' % (
|
fcg += '<option value="%s" %s>Tous</option>' % (
|
||||||
default_group_id,
|
default_group_id,
|
||||||
opt_selected(default_group_id),
|
opt_selected(default_group_id),
|
||||||
@ -736,9 +732,7 @@ def do_formsemestre_createwithmodules(context, REQUEST=None, edit=False):
|
|||||||
)
|
)
|
||||||
if not edit:
|
if not edit:
|
||||||
# creation du semestre
|
# creation du semestre
|
||||||
formsemestre_id = sco_formsemestre.do_formsemestre_create(
|
formsemestre_id = sco_formsemestre.do_formsemestre_create(tf[2])
|
||||||
context, tf[2], REQUEST
|
|
||||||
)
|
|
||||||
# creation des modules
|
# creation des modules
|
||||||
for module_id in tf[2]["tf-checked"]:
|
for module_id in tf[2]["tf-checked"]:
|
||||||
modargs = {
|
modargs = {
|
||||||
@ -1038,7 +1032,7 @@ def do_formsemestre_clone(
|
|||||||
args["date_debut"] = date_debut
|
args["date_debut"] = date_debut
|
||||||
args["date_fin"] = date_fin
|
args["date_fin"] = date_fin
|
||||||
args["etat"] = 1 # non verrouillé
|
args["etat"] = 1 # non verrouillé
|
||||||
formsemestre_id = sco_formsemestre.do_formsemestre_create(context, args, REQUEST)
|
formsemestre_id = sco_formsemestre.do_formsemestre_create(args)
|
||||||
log("created formsemestre %s" % formsemestre_id)
|
log("created formsemestre %s" % formsemestre_id)
|
||||||
# 2- create moduleimpls
|
# 2- create moduleimpls
|
||||||
mods_orig = sco_moduleimpl.do_moduleimpl_list(
|
mods_orig = sco_moduleimpl.do_moduleimpl_list(
|
||||||
@ -1114,7 +1108,6 @@ def do_formsemestre_clone(
|
|||||||
context,
|
context,
|
||||||
formsemestre_id,
|
formsemestre_id,
|
||||||
partition_name=partname,
|
partition_name=partname,
|
||||||
REQUEST=REQUEST,
|
|
||||||
redirect=0,
|
redirect=0,
|
||||||
)
|
)
|
||||||
for g in sco_groups.get_partition_groups(context, part):
|
for g in sco_groups.get_partition_groups(context, part):
|
||||||
@ -1130,7 +1123,7 @@ def do_formsemestre_clone(
|
|||||||
part_id = g[0]
|
part_id = g[0]
|
||||||
for group_name in g[1]:
|
for group_name in g[1]:
|
||||||
_ = sco_groups.createGroup(
|
_ = sco_groups.createGroup(
|
||||||
context, part_id, group_name=group_name, REQUEST=REQUEST
|
context, part_id, group_name=group_name
|
||||||
)
|
)
|
||||||
|
|
||||||
return formsemestre_id
|
return formsemestre_id
|
||||||
|
@ -65,9 +65,7 @@ def formsemestre_ext_create(context, etudid, sem_params, REQUEST=None):
|
|||||||
sem_params["modalite"] = "EXT"
|
sem_params["modalite"] = "EXT"
|
||||||
sem_params["etapes"] = None
|
sem_params["etapes"] = None
|
||||||
sem_params["responsables"] = [str(REQUEST.AUTHENTICATED_USER)]
|
sem_params["responsables"] = [str(REQUEST.AUTHENTICATED_USER)]
|
||||||
formsemestre_id = sco_formsemestre.do_formsemestre_create(
|
formsemestre_id = sco_formsemestre.do_formsemestre_create(sem_params, silent=True)
|
||||||
context, sem_params, REQUEST, silent=True
|
|
||||||
)
|
|
||||||
# nota: le semestre est créé vide: pas de modules
|
# nota: le semestre est créé vide: pas de modules
|
||||||
|
|
||||||
# Inscription au semestre
|
# Inscription au semestre
|
||||||
@ -85,7 +83,7 @@ def formsemestre_ext_create_form(context, etudid, formsemestre_id, REQUEST=None)
|
|||||||
"""Formulaire creation/inscription à un semestre extérieur"""
|
"""Formulaire creation/inscription à un semestre extérieur"""
|
||||||
etud = sco_etud.get_etud_info(etudid=etudid, filled=1)[0]
|
etud = sco_etud.get_etud_info(etudid=etudid, filled=1)[0]
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(context, REQUEST),
|
html_sco_header.sco_header(),
|
||||||
"""<h2>Enregistrement d'une inscription antérieure dans un autre établissement</h2>
|
"""<h2>Enregistrement d'une inscription antérieure dans un autre établissement</h2>
|
||||||
<p class="help">
|
<p class="help">
|
||||||
Cette opération créé un semestre extérieur ("ancien") et y inscrit juste cet étudiant.
|
Cette opération créé un semestre extérieur ("ancien") et y inscrit juste cet étudiant.
|
||||||
@ -271,8 +269,6 @@ def _make_page(context, etud, sem, tf, message="", REQUEST=None):
|
|||||||
moy_gen = nt.get_etud_moy_gen(etud["etudid"])
|
moy_gen = nt.get_etud_moy_gen(etud["etudid"])
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title="Validation des UE d'un semestre extérieur",
|
page_title="Validation des UE d'un semestre extérieur",
|
||||||
javascripts=["js/formsemestre_ext_edit_ue_validations.js"],
|
javascripts=["js/formsemestre_ext_edit_ue_validations.js"],
|
||||||
),
|
),
|
||||||
|
@ -226,7 +226,7 @@ def do_formsemestre_inscription_with_modules(
|
|||||||
)
|
)
|
||||||
# inscriptions aux groupes
|
# inscriptions aux groupes
|
||||||
# 1- inscrit au groupe 'tous'
|
# 1- inscrit au groupe 'tous'
|
||||||
group_id = sco_groups.get_default_group(context, formsemestre_id)
|
group_id = sco_groups.get_default_group(formsemestre_id)
|
||||||
sco_groups.set_group(context, etudid, group_id)
|
sco_groups.set_group(context, etudid, group_id)
|
||||||
gdone = {group_id: 1} # empeche doublons
|
gdone = {group_id: 1} # empeche doublons
|
||||||
|
|
||||||
@ -279,7 +279,7 @@ def formsemestre_inscription_with_modules_form(
|
|||||||
"""
|
"""
|
||||||
etud = sco_etud.get_etud_info(etudid=etudid, filled=1)[0]
|
etud = sco_etud.get_etud_info(etudid=etudid, filled=1)[0]
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(context, REQUEST),
|
html_sco_header.sco_header(),
|
||||||
"<h2>Inscription de %s" % etud["nomprenom"],
|
"<h2>Inscription de %s" % etud["nomprenom"],
|
||||||
]
|
]
|
||||||
if only_ext:
|
if only_ext:
|
||||||
@ -455,7 +455,7 @@ def formsemestre_inscription_option(context, etudid, formsemestre_id, REQUEST=No
|
|||||||
|
|
||||||
F = html_sco_header.sco_footer()
|
F = html_sco_header.sco_footer()
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(context, REQUEST)
|
html_sco_header.sco_header()
|
||||||
+ "<h2>Inscription de %s aux modules de %s (%s - %s)</h2>"
|
+ "<h2>Inscription de %s aux modules de %s (%s - %s)</h2>"
|
||||||
% (etud["nomprenom"], sem["titre_num"], sem["date_debut"], sem["date_fin"])
|
% (etud["nomprenom"], sem["titre_num"], sem["date_debut"], sem["date_fin"])
|
||||||
]
|
]
|
||||||
@ -725,7 +725,7 @@ def do_moduleimpl_incription_options(
|
|||||||
|
|
||||||
if REQUEST:
|
if REQUEST:
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(context, REQUEST),
|
html_sco_header.sco_header(),
|
||||||
"""<h3>Modifications effectuées</h3>
|
"""<h3>Modifications effectuées</h3>
|
||||||
<p><a class="stdlink" href="%s">
|
<p><a class="stdlink" href="%s">
|
||||||
Retour à la fiche étudiant</a></p>
|
Retour à la fiche étudiant</a></p>
|
||||||
|
@ -30,7 +30,9 @@
|
|||||||
|
|
||||||
from flask import current_app
|
from flask import current_app
|
||||||
from flask import g
|
from flask import g
|
||||||
|
from flask import request
|
||||||
from flask import url_for
|
from flask import url_for
|
||||||
|
from flask_login import current_user
|
||||||
|
|
||||||
from app.scodoc.notes_log import log
|
from app.scodoc.notes_log import log
|
||||||
import app.scodoc.sco_utils as scu
|
import app.scodoc.sco_utils as scu
|
||||||
@ -61,22 +63,6 @@ from app.scodoc.gen_tables import GenTable
|
|||||||
from app.scodoc.sco_formsemestre_custommenu import formsemestre_custommenu_html
|
from app.scodoc.sco_formsemestre_custommenu import formsemestre_custommenu_html
|
||||||
|
|
||||||
|
|
||||||
# H = [ """<span class="barrenav"><ul class="nav">
|
|
||||||
# <li onmouseover="MenuDisplay(this)" onmouseout="MenuHide(this)"><a href="#" class="menu %s">%s</a><ul>""" % (cssclass, title)
|
|
||||||
# ]
|
|
||||||
# for item in items:
|
|
||||||
# if item.get('enabled', True):
|
|
||||||
# if base_url:
|
|
||||||
# item['urlq'] = urllib.quote(item['url'])
|
|
||||||
# else:
|
|
||||||
# item['urlq'] = item['url']
|
|
||||||
# H.append('<li><a href="' + base_url + '%(urlq)s">%(title)s</a></li>' % item)
|
|
||||||
# else:
|
|
||||||
# H.append('<li><span class="disabled_menu_item">%(title)s</span></li>' % item)
|
|
||||||
# H.append('</ul></li></ul></%s>' % elem)
|
|
||||||
# return ''.join(H)
|
|
||||||
|
|
||||||
|
|
||||||
def defMenuStats(context, formsemestre_id):
|
def defMenuStats(context, formsemestre_id):
|
||||||
"Définition du menu 'Statistiques' "
|
"Définition du menu 'Statistiques' "
|
||||||
return [
|
return [
|
||||||
@ -135,10 +121,9 @@ def defMenuStats(context, formsemestre_id):
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
def formsemestre_status_menubar(context, sem, REQUEST):
|
def formsemestre_status_menubar(context, sem):
|
||||||
"""HTML to render menubar"""
|
"""HTML to render menubar"""
|
||||||
authuser = REQUEST.AUTHENTICATED_USER
|
uid = current_user.user_name
|
||||||
uid = str(authuser)
|
|
||||||
formsemestre_id = sem["formsemestre_id"]
|
formsemestre_id = sem["formsemestre_id"]
|
||||||
if int(sem["etat"]):
|
if int(sem["etat"]):
|
||||||
change_lock_msg = "Verrouiller"
|
change_lock_msg = "Verrouiller"
|
||||||
@ -172,9 +157,9 @@ def formsemestre_status_menubar(context, sem, REQUEST):
|
|||||||
"formsemestre_id": formsemestre_id,
|
"formsemestre_id": formsemestre_id,
|
||||||
},
|
},
|
||||||
"enabled": (
|
"enabled": (
|
||||||
authuser.has_permission(Permission.ScoImplement)
|
current_user.has_permission(Permission.ScoImplement)
|
||||||
or (
|
or (
|
||||||
str(REQUEST.AUTHENTICATED_USER) in sem["responsables"]
|
current_user.user_name in sem["responsables"]
|
||||||
and sem["resp_can_edit"]
|
and sem["resp_can_edit"]
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -186,9 +171,9 @@ def formsemestre_status_menubar(context, sem, REQUEST):
|
|||||||
"endpoint": "scolar.formsemestre_edit_preferences",
|
"endpoint": "scolar.formsemestre_edit_preferences",
|
||||||
"args": {"formsemestre_id": formsemestre_id},
|
"args": {"formsemestre_id": formsemestre_id},
|
||||||
"enabled": (
|
"enabled": (
|
||||||
authuser.has_permission(Permission.ScoImplement)
|
current_user.has_permission(Permission.ScoImplement)
|
||||||
or (
|
or (
|
||||||
str(REQUEST.AUTHENTICATED_USER) in sem["responsables"]
|
current_user.user_name in sem["responsables"]
|
||||||
and sem["resp_can_edit"]
|
and sem["resp_can_edit"]
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -200,7 +185,7 @@ def formsemestre_status_menubar(context, sem, REQUEST):
|
|||||||
"endpoint": "notes.formsemestre_edit_options",
|
"endpoint": "notes.formsemestre_edit_options",
|
||||||
"args": {"formsemestre_id": formsemestre_id},
|
"args": {"formsemestre_id": formsemestre_id},
|
||||||
"enabled": (uid in sem["responsables"])
|
"enabled": (uid in sem["responsables"])
|
||||||
or authuser.has_permission(Permission.ScoImplement),
|
or current_user.has_permission(Permission.ScoImplement),
|
||||||
"helpmsg": "Change les options",
|
"helpmsg": "Change les options",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -208,7 +193,7 @@ def formsemestre_status_menubar(context, sem, REQUEST):
|
|||||||
"endpoint": "notes.formsemestre_change_lock",
|
"endpoint": "notes.formsemestre_change_lock",
|
||||||
"args": {"formsemestre_id": formsemestre_id},
|
"args": {"formsemestre_id": formsemestre_id},
|
||||||
"enabled": (uid in sem["responsables"])
|
"enabled": (uid in sem["responsables"])
|
||||||
or authuser.has_permission(Permission.ScoImplement),
|
or current_user.has_permission(Permission.ScoImplement),
|
||||||
"helpmsg": "",
|
"helpmsg": "",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -236,14 +221,14 @@ def formsemestre_status_menubar(context, sem, REQUEST):
|
|||||||
"title": "Cloner ce semestre",
|
"title": "Cloner ce semestre",
|
||||||
"endpoint": "notes.formsemestre_clone",
|
"endpoint": "notes.formsemestre_clone",
|
||||||
"args": {"formsemestre_id": formsemestre_id},
|
"args": {"formsemestre_id": formsemestre_id},
|
||||||
"enabled": authuser.has_permission(Permission.ScoImplement),
|
"enabled": current_user.has_permission(Permission.ScoImplement),
|
||||||
"helpmsg": "",
|
"helpmsg": "",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Associer à une nouvelle version du programme",
|
"title": "Associer à une nouvelle version du programme",
|
||||||
"endpoint": "notes.formsemestre_associate_new_version",
|
"endpoint": "notes.formsemestre_associate_new_version",
|
||||||
"args": {"formsemestre_id": formsemestre_id},
|
"args": {"formsemestre_id": formsemestre_id},
|
||||||
"enabled": authuser.has_permission(Permission.ScoChangeFormation)
|
"enabled": current_user.has_permission(Permission.ScoChangeFormation)
|
||||||
and (sem["etat"] == "1"),
|
and (sem["etat"] == "1"),
|
||||||
"helpmsg": "",
|
"helpmsg": "",
|
||||||
},
|
},
|
||||||
@ -251,7 +236,7 @@ def formsemestre_status_menubar(context, sem, REQUEST):
|
|||||||
"title": "Supprimer ce semestre",
|
"title": "Supprimer ce semestre",
|
||||||
"endpoint": "notes.formsemestre_delete",
|
"endpoint": "notes.formsemestre_delete",
|
||||||
"args": {"formsemestre_id": formsemestre_id},
|
"args": {"formsemestre_id": formsemestre_id},
|
||||||
"enabled": authuser.has_permission(Permission.ScoImplement),
|
"enabled": current_user.has_permission(Permission.ScoImplement),
|
||||||
"helpmsg": "",
|
"helpmsg": "",
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
@ -278,14 +263,14 @@ def formsemestre_status_menubar(context, sem, REQUEST):
|
|||||||
"title": "Passage des étudiants depuis d'autres semestres",
|
"title": "Passage des étudiants depuis d'autres semestres",
|
||||||
"endpoint": "notes.formsemestre_inscr_passage",
|
"endpoint": "notes.formsemestre_inscr_passage",
|
||||||
"args": {"formsemestre_id": formsemestre_id},
|
"args": {"formsemestre_id": formsemestre_id},
|
||||||
"enabled": authuser.has_permission(Permission.ScoEtudInscrit)
|
"enabled": current_user.has_permission(Permission.ScoEtudInscrit)
|
||||||
and (sem["etat"] == "1"),
|
and (sem["etat"] == "1"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Synchroniser avec étape Apogée",
|
"title": "Synchroniser avec étape Apogée",
|
||||||
"endpoint": "notes.formsemestre_synchro_etuds",
|
"endpoint": "notes.formsemestre_synchro_etuds",
|
||||||
"args": {"formsemestre_id": formsemestre_id},
|
"args": {"formsemestre_id": formsemestre_id},
|
||||||
"enabled": authuser.has_permission(Permission.ScoView)
|
"enabled": current_user.has_permission(Permission.ScoView)
|
||||||
and sco_preferences.get_preference("portal_url")
|
and sco_preferences.get_preference("portal_url")
|
||||||
and (sem["etat"] == "1"),
|
and (sem["etat"] == "1"),
|
||||||
},
|
},
|
||||||
@ -293,27 +278,27 @@ def formsemestre_status_menubar(context, sem, REQUEST):
|
|||||||
"title": "Inscrire un étudiant",
|
"title": "Inscrire un étudiant",
|
||||||
"endpoint": "notes.formsemestre_inscription_with_modules_etud",
|
"endpoint": "notes.formsemestre_inscription_with_modules_etud",
|
||||||
"args": {"formsemestre_id": formsemestre_id},
|
"args": {"formsemestre_id": formsemestre_id},
|
||||||
"enabled": authuser.has_permission(Permission.ScoEtudInscrit)
|
"enabled": current_user.has_permission(Permission.ScoEtudInscrit)
|
||||||
and (sem["etat"] == "1"),
|
and (sem["etat"] == "1"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Importer des étudiants dans ce semestre (table Excel)",
|
"title": "Importer des étudiants dans ce semestre (table Excel)",
|
||||||
"endpoint": "scolar.form_students_import_excel",
|
"endpoint": "scolar.form_students_import_excel",
|
||||||
"args": {"formsemestre_id": formsemestre_id},
|
"args": {"formsemestre_id": formsemestre_id},
|
||||||
"enabled": authuser.has_permission(Permission.ScoEtudInscrit)
|
"enabled": current_user.has_permission(Permission.ScoEtudInscrit)
|
||||||
and (sem["etat"] == "1"),
|
and (sem["etat"] == "1"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Import/export des données admission",
|
"title": "Import/export des données admission",
|
||||||
"endpoint": "scolar.form_students_import_infos_admissions",
|
"endpoint": "scolar.form_students_import_infos_admissions",
|
||||||
"args": {"formsemestre_id": formsemestre_id},
|
"args": {"formsemestre_id": formsemestre_id},
|
||||||
"enabled": authuser.has_permission(Permission.ScoView),
|
"enabled": current_user.has_permission(Permission.ScoView),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Resynchroniser données identité",
|
"title": "Resynchroniser données identité",
|
||||||
"endpoint": "scolar.formsemestre_import_etud_admission",
|
"endpoint": "scolar.formsemestre_import_etud_admission",
|
||||||
"args": {"formsemestre_id": formsemestre_id},
|
"args": {"formsemestre_id": formsemestre_id},
|
||||||
"enabled": authuser.has_permission(Permission.ScoEtudChangeAdr)
|
"enabled": current_user.has_permission(Permission.ScoEtudChangeAdr)
|
||||||
and sco_preferences.get_preference("portal_url"),
|
and sco_preferences.get_preference("portal_url"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -322,7 +307,7 @@ def formsemestre_status_menubar(context, sem, REQUEST):
|
|||||||
"args": {
|
"args": {
|
||||||
"format": "allxls",
|
"format": "allxls",
|
||||||
"group_ids": sco_groups.get_default_group(
|
"group_ids": sco_groups.get_default_group(
|
||||||
context, formsemestre_id, fix_if_missing=True, REQUEST=REQUEST
|
formsemestre_id, fix_if_missing=True
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -346,7 +331,7 @@ def formsemestre_status_menubar(context, sem, REQUEST):
|
|||||||
"endpoint": "scolar.editPartitionForm",
|
"endpoint": "scolar.editPartitionForm",
|
||||||
"args": {"formsemestre_id": formsemestre_id},
|
"args": {"formsemestre_id": formsemestre_id},
|
||||||
"enabled": sco_groups.sco_permissions_check.can_change_groups(
|
"enabled": sco_groups.sco_permissions_check.can_change_groups(
|
||||||
context, REQUEST, formsemestre_id
|
formsemestre_id
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
@ -356,9 +341,7 @@ def formsemestre_status_menubar(context, sem, REQUEST):
|
|||||||
)
|
)
|
||||||
submenu = []
|
submenu = []
|
||||||
enabled = (
|
enabled = (
|
||||||
sco_groups.sco_permissions_check.can_change_groups(
|
sco_groups.sco_permissions_check.can_change_groups(formsemestre_id)
|
||||||
context, REQUEST, formsemestre_id
|
|
||||||
)
|
|
||||||
and partitions
|
and partitions
|
||||||
)
|
)
|
||||||
for partition in partitions:
|
for partition in partitions:
|
||||||
@ -398,7 +381,7 @@ def formsemestre_status_menubar(context, sem, REQUEST):
|
|||||||
"endpoint": "notes.formsemestre_bulletins_mailetuds_choice",
|
"endpoint": "notes.formsemestre_bulletins_mailetuds_choice",
|
||||||
"args": {"formsemestre_id": formsemestre_id},
|
"args": {"formsemestre_id": formsemestre_id},
|
||||||
"enabled": sco_bulletins.can_send_bulletin_by_mail(
|
"enabled": sco_bulletins.can_send_bulletin_by_mail(
|
||||||
context, formsemestre_id, REQUEST
|
context, formsemestre_id
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -433,17 +416,13 @@ def formsemestre_status_menubar(context, sem, REQUEST):
|
|||||||
"hidebac": 1,
|
"hidebac": 1,
|
||||||
"pref_override": 0,
|
"pref_override": 0,
|
||||||
},
|
},
|
||||||
"enabled": sco_permissions_check.can_validate_sem(
|
"enabled": sco_permissions_check.can_validate_sem(formsemestre_id),
|
||||||
context, REQUEST, formsemestre_id
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Editer les PV et archiver les résultats",
|
"title": "Editer les PV et archiver les résultats",
|
||||||
"endpoint": "notes.formsemestre_archive",
|
"endpoint": "notes.formsemestre_archive",
|
||||||
"args": {"formsemestre_id": formsemestre_id},
|
"args": {"formsemestre_id": formsemestre_id},
|
||||||
"enabled": sco_permissions_check.can_edit_pv(
|
"enabled": sco_permissions_check.can_edit_pv(formsemestre_id),
|
||||||
context, REQUEST, formsemestre_id
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Documents archivés",
|
"title": "Documents archivés",
|
||||||
@ -472,27 +451,32 @@ def formsemestre_status_menubar(context, sem, REQUEST):
|
|||||||
return "\n".join(H)
|
return "\n".join(H)
|
||||||
|
|
||||||
|
|
||||||
def retreive_formsemestre_from_request(context, REQUEST):
|
def retreive_formsemestre_from_request():
|
||||||
"""Cherche si on a de quoi déduire le semestre affiché à partir des
|
"""Cherche si on a de quoi déduire le semestre affiché à partir des
|
||||||
arguments de la requête:
|
arguments de la requête:
|
||||||
formsemestre_id ou moduleimpl ou evaluation ou group_id ou partition_id
|
formsemestre_id ou moduleimpl ou evaluation ou group_id ou partition_id
|
||||||
"""
|
"""
|
||||||
|
context = None # XXX #context
|
||||||
|
if request.method == "GET":
|
||||||
|
args = request.args
|
||||||
|
elif request.method == "POST":
|
||||||
|
args = request.form
|
||||||
|
else:
|
||||||
|
return None
|
||||||
# Search formsemestre
|
# Search formsemestre
|
||||||
group_ids = REQUEST.form.get("group_ids", [])
|
group_ids = args.get("group_ids", [])
|
||||||
if "formsemestre_id" in REQUEST.form:
|
if "formsemestre_id" in args:
|
||||||
formsemestre_id = REQUEST.form["formsemestre_id"]
|
formsemestre_id = args["formsemestre_id"]
|
||||||
elif "moduleimpl_id" in REQUEST.form:
|
elif "moduleimpl_id" in args:
|
||||||
modimpl = sco_moduleimpl.do_moduleimpl_list(
|
modimpl = sco_moduleimpl.do_moduleimpl_list(
|
||||||
context, moduleimpl_id=REQUEST.form["moduleimpl_id"]
|
context, moduleimpl_id=args["moduleimpl_id"]
|
||||||
)
|
)
|
||||||
if not modimpl:
|
if not modimpl:
|
||||||
return None # suppressed ?
|
return None # suppressed ?
|
||||||
modimpl = modimpl[0]
|
modimpl = modimpl[0]
|
||||||
formsemestre_id = modimpl["formsemestre_id"]
|
formsemestre_id = modimpl["formsemestre_id"]
|
||||||
elif "evaluation_id" in REQUEST.form:
|
elif "evaluation_id" in args:
|
||||||
E = sco_evaluations.do_evaluation_list(
|
E = sco_evaluations.do_evaluation_list({"evaluation_id": args["evaluation_id"]})
|
||||||
{"evaluation_id": REQUEST.form["evaluation_id"]}
|
|
||||||
)
|
|
||||||
if not E:
|
if not E:
|
||||||
return None # evaluation suppressed ?
|
return None # evaluation suppressed ?
|
||||||
E = E[0]
|
E = E[0]
|
||||||
@ -500,8 +484,8 @@ def retreive_formsemestre_from_request(context, REQUEST):
|
|||||||
context, moduleimpl_id=E["moduleimpl_id"]
|
context, moduleimpl_id=E["moduleimpl_id"]
|
||||||
)[0]
|
)[0]
|
||||||
formsemestre_id = modimpl["formsemestre_id"]
|
formsemestre_id = modimpl["formsemestre_id"]
|
||||||
elif "group_id" in REQUEST.form:
|
elif "group_id" in args:
|
||||||
group = sco_groups.get_group(context, REQUEST.form["group_id"])
|
group = sco_groups.get_group(context, args["group_id"])
|
||||||
formsemestre_id = group["formsemestre_id"]
|
formsemestre_id = group["formsemestre_id"]
|
||||||
elif group_ids:
|
elif group_ids:
|
||||||
if group_ids:
|
if group_ids:
|
||||||
@ -512,8 +496,8 @@ def retreive_formsemestre_from_request(context, REQUEST):
|
|||||||
group_id = group_ids[0]
|
group_id = group_ids[0]
|
||||||
group = sco_groups.get_group(context, group_id)
|
group = sco_groups.get_group(context, group_id)
|
||||||
formsemestre_id = group["formsemestre_id"]
|
formsemestre_id = group["formsemestre_id"]
|
||||||
elif "partition_id" in REQUEST.form:
|
elif "partition_id" in args:
|
||||||
partition = sco_groups.get_partition(context, REQUEST.form["partition_id"])
|
partition = sco_groups.get_partition(context, args["partition_id"])
|
||||||
formsemestre_id = partition["formsemestre_id"]
|
formsemestre_id = partition["formsemestre_id"]
|
||||||
else:
|
else:
|
||||||
return None # no current formsemestre
|
return None # no current formsemestre
|
||||||
@ -522,11 +506,11 @@ def retreive_formsemestre_from_request(context, REQUEST):
|
|||||||
|
|
||||||
|
|
||||||
# Element HTML decrivant un semestre (barre de menu et infos)
|
# Element HTML decrivant un semestre (barre de menu et infos)
|
||||||
def formsemestre_page_title(context, REQUEST):
|
def formsemestre_page_title(context):
|
||||||
"""Element HTML decrivant un semestre (barre de menu et infos)
|
"""Element HTML decrivant un semestre (barre de menu et infos)
|
||||||
Cherche dans REQUEST si un semestre est défini (formsemestre_id ou moduleimpl ou evaluation ou group)
|
Cherche dans REQUEST si un semestre est défini (formsemestre_id ou moduleimpl ou evaluation ou group)
|
||||||
"""
|
"""
|
||||||
formsemestre_id = retreive_formsemestre_from_request(context, REQUEST)
|
formsemestre_id = retreive_formsemestre_from_request()
|
||||||
#
|
#
|
||||||
if not formsemestre_id:
|
if not formsemestre_id:
|
||||||
return ""
|
return ""
|
||||||
@ -536,21 +520,22 @@ def formsemestre_page_title(context, REQUEST):
|
|||||||
log("can't find formsemestre_id %s" % formsemestre_id)
|
log("can't find formsemestre_id %s" % formsemestre_id)
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
fill_formsemestre(context, sem, REQUEST=REQUEST)
|
fill_formsemestre(sem)
|
||||||
|
|
||||||
H = [
|
H = [
|
||||||
"""<div class="formsemestre_page_title">""",
|
"""<div class="formsemestre_page_title">""",
|
||||||
"""<div class="infos">
|
"""<div class="infos">
|
||||||
<span class="semtitle"><a class="stdlink" title="%(session_id)s" href="%(notes_url)s/formsemestre_status?formsemestre_id=%(formsemestre_id)s">%(titre)s</a><a title="%(etape_apo_str)s">%(num_sem)s</a>%(modalitestr)s</span><span class="dates"><a title="du %(date_debut)s au %(date_fin)s ">%(mois_debut)s - %(mois_fin)s</a></span><span class="resp"><a title="%(nomcomplet)s">%(resp)s</a></span><span class="nbinscrits"><a class="discretelink" href="%(notes_url)s/formsemestre_lists?formsemestre_id=%(formsemestre_id)s">%(nbinscrits)d inscrits</a></span><span class="lock">%(locklink)s</span><span class="eye">%(eyelink)s</span></div>"""
|
<span class="semtitle"><a class="stdlink" title="%(session_id)s" href="%(notes_url)s/formsemestre_status?formsemestre_id=%(formsemestre_id)s">%(titre)s</a><a title="%(etape_apo_str)s">%(num_sem)s</a>%(modalitestr)s</span><span class="dates"><a title="du %(date_debut)s au %(date_fin)s ">%(mois_debut)s - %(mois_fin)s</a></span><span class="resp"><a title="%(nomcomplet)s">%(resp)s</a></span><span class="nbinscrits"><a class="discretelink" href="%(notes_url)s/formsemestre_lists?formsemestre_id=%(formsemestre_id)s">%(nbinscrits)d inscrits</a></span><span class="lock">%(locklink)s</span><span class="eye">%(eyelink)s</span></div>"""
|
||||||
% sem,
|
% sem,
|
||||||
formsemestre_status_menubar(context, sem, REQUEST),
|
formsemestre_status_menubar(context, sem),
|
||||||
"""</div>""",
|
"""</div>""",
|
||||||
]
|
]
|
||||||
return "\n".join(H)
|
return "\n".join(H)
|
||||||
|
|
||||||
|
|
||||||
def fill_formsemestre(context, sem, REQUEST=None):
|
def fill_formsemestre(sem):
|
||||||
"""Add some useful fields to help display formsemestres"""
|
"""Add some useful fields to help display formsemestres"""
|
||||||
|
context = None # XXX #context
|
||||||
notes_url = scu.NotesURL()
|
notes_url = scu.NotesURL()
|
||||||
sem["notes_url"] = notes_url
|
sem["notes_url"] = notes_url
|
||||||
formsemestre_id = sem["formsemestre_id"]
|
formsemestre_id = sem["formsemestre_id"]
|
||||||
@ -765,7 +750,6 @@ def formsemestre_description(
|
|||||||
# genere liste html pour accès aux groupes de ce semestre
|
# genere liste html pour accès aux groupes de ce semestre
|
||||||
def _make_listes_sem(context, sem, REQUEST=None, with_absences=True):
|
def _make_listes_sem(context, sem, REQUEST=None, with_absences=True):
|
||||||
context = context
|
context = context
|
||||||
authuser = REQUEST.AUTHENTICATED_USER
|
|
||||||
# construit l'URL "destination"
|
# construit l'URL "destination"
|
||||||
# (a laquelle on revient apres saisie absences)
|
# (a laquelle on revient apres saisie absences)
|
||||||
destination = url_for(
|
destination = url_for(
|
||||||
@ -776,7 +760,7 @@ def _make_listes_sem(context, sem, REQUEST=None, with_absences=True):
|
|||||||
#
|
#
|
||||||
H = []
|
H = []
|
||||||
# pas de menu absences si pas autorise:
|
# pas de menu absences si pas autorise:
|
||||||
if with_absences and not authuser.has_permission(Permission.ScoAbsChange):
|
if with_absences and not current_user.has_permission(Permission.ScoAbsChange):
|
||||||
with_absences = False
|
with_absences = False
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -878,17 +862,13 @@ def _make_listes_sem(context, sem, REQUEST=None, with_absences=True):
|
|||||||
H.append("</table>")
|
H.append("</table>")
|
||||||
else:
|
else:
|
||||||
H.append('<p class="help indent">Aucun groupe dans cette partition')
|
H.append('<p class="help indent">Aucun groupe dans cette partition')
|
||||||
if sco_groups.sco_permissions_check.can_change_groups(
|
if sco_groups.sco_permissions_check.can_change_groups(formsemestre_id):
|
||||||
context, REQUEST, formsemestre_id
|
|
||||||
):
|
|
||||||
H.append(
|
H.append(
|
||||||
' (<a href="affectGroups?partition_id=%s" class="stdlink">créer</a>)'
|
' (<a href="affectGroups?partition_id=%s" class="stdlink">créer</a>)'
|
||||||
% partition["partition_id"]
|
% partition["partition_id"]
|
||||||
)
|
)
|
||||||
H.append("</p>")
|
H.append("</p>")
|
||||||
if sco_groups.sco_permissions_check.can_change_groups(
|
if sco_groups.sco_permissions_check.can_change_groups(formsemestre_id):
|
||||||
context, REQUEST, formsemestre_id
|
|
||||||
):
|
|
||||||
H.append(
|
H.append(
|
||||||
f"""<h4><a
|
f"""<h4><a
|
||||||
href="{
|
href="{
|
||||||
@ -1021,9 +1001,7 @@ def formsemestre_status(context, formsemestre_id=None, REQUEST=None):
|
|||||||
)
|
)
|
||||||
|
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(page_title="Semestre %s" % sem["titreannee"]),
|
||||||
context, REQUEST, page_title="Semestre %s" % sem["titreannee"]
|
|
||||||
),
|
|
||||||
'<div class="formsemestre_status">',
|
'<div class="formsemestre_status">',
|
||||||
formsemestre_status_head(
|
formsemestre_status_head(
|
||||||
context, formsemestre_id=formsemestre_id, page_title="Tableau de bord"
|
context, formsemestre_id=formsemestre_id, page_title="Tableau de bord"
|
||||||
|
@ -106,8 +106,6 @@ def formsemestre_validation_etud_form(
|
|||||||
|
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title="Parcours %(nomprenom)s" % etud,
|
page_title="Parcours %(nomprenom)s" % etud,
|
||||||
javascripts=["js/recap_parcours.js"],
|
javascripts=["js/recap_parcours.js"],
|
||||||
)
|
)
|
||||||
@ -921,7 +919,7 @@ def do_formsemestre_validation_auto(context, formsemestre_id, REQUEST):
|
|||||||
"do_formsemestre_validation_auto: %d validations, %d conflicts"
|
"do_formsemestre_validation_auto: %d validations, %d conflicts"
|
||||||
% (nb_valid, len(conflicts))
|
% (nb_valid, len(conflicts))
|
||||||
)
|
)
|
||||||
H = [html_sco_header.sco_header(context, REQUEST, page_title="Saisie automatique")]
|
H = [html_sco_header.sco_header(page_title="Saisie automatique")]
|
||||||
H.append(
|
H.append(
|
||||||
"""<h2>Saisie automatique des décisions du semestre %s</h2>
|
"""<h2>Saisie automatique des décisions du semestre %s</h2>
|
||||||
<p>Opération effectuée.</p>
|
<p>Opération effectuée.</p>
|
||||||
@ -992,8 +990,6 @@ def formsemestre_validate_previous_ue(context, formsemestre_id, etudid, REQUEST=
|
|||||||
|
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title="Validation UE",
|
page_title="Validation UE",
|
||||||
javascripts=["js/validate_previous_ue.js"],
|
javascripts=["js/validate_previous_ue.js"],
|
||||||
),
|
),
|
||||||
|
@ -33,15 +33,18 @@ Optimisation possible:
|
|||||||
et éviter ainsi l'appel ulterieur à get_etud_groups() dans _make_table_notes
|
et éviter ainsi l'appel ulterieur à get_etud_groups() dans _make_table_notes
|
||||||
|
|
||||||
"""
|
"""
|
||||||
import time
|
|
||||||
import collections
|
import collections
|
||||||
import re
|
|
||||||
import operator
|
import operator
|
||||||
|
import re
|
||||||
|
import time
|
||||||
|
|
||||||
import xml.dom.minidom
|
|
||||||
from xml.etree import ElementTree
|
from xml.etree import ElementTree
|
||||||
from xml.etree.ElementTree import Element
|
from xml.etree.ElementTree import Element
|
||||||
|
|
||||||
|
import flask
|
||||||
|
from flask import g
|
||||||
|
from flask import url_for
|
||||||
|
|
||||||
import app.scodoc.sco_utils as scu
|
import app.scodoc.sco_utils as scu
|
||||||
import app.scodoc.notesdb as ndb
|
import app.scodoc.notesdb as ndb
|
||||||
from app.scodoc.notes_log import log
|
from app.scodoc.notes_log import log
|
||||||
@ -171,8 +174,9 @@ def get_partition_groups(context, partition):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def get_default_group(context, formsemestre_id, fix_if_missing=False, REQUEST=None):
|
def get_default_group(formsemestre_id, fix_if_missing=False):
|
||||||
"""Returns group_id for default ('tous') group"""
|
"""Returns group_id for default ('tous') group"""
|
||||||
|
context = None # #context
|
||||||
r = ndb.SimpleDictFetch(
|
r = ndb.SimpleDictFetch(
|
||||||
"SELECT gd.group_id FROM group_descr gd, partition p WHERE p.formsemestre_id=%(formsemestre_id)s AND p.partition_name is NULL AND p.partition_id = gd.partition_id",
|
"SELECT gd.group_id FROM group_descr gd, partition p WHERE p.formsemestre_id=%(formsemestre_id)s AND p.partition_name is NULL AND p.partition_id = gd.partition_id",
|
||||||
{"formsemestre_id": formsemestre_id},
|
{"formsemestre_id": formsemestre_id},
|
||||||
@ -190,10 +194,8 @@ def get_default_group(context, formsemestre_id, fix_if_missing=False, REQUEST=No
|
|||||||
]
|
]
|
||||||
except ScoException:
|
except ScoException:
|
||||||
log("creating default partition for %s" % formsemestre_id)
|
log("creating default partition for %s" % formsemestre_id)
|
||||||
partition_id = partition_create(
|
partition_id = partition_create(context, formsemestre_id, default=True)
|
||||||
context, formsemestre_id, default=True, REQUEST=REQUEST
|
group_id = createGroup(context, partition_id, default=True)
|
||||||
)
|
|
||||||
group_id = createGroup(context, partition_id, default=True, REQUEST=REQUEST)
|
|
||||||
return group_id
|
return group_id
|
||||||
# debug check
|
# debug check
|
||||||
if len(r) != 1:
|
if len(r) != 1:
|
||||||
@ -330,7 +332,7 @@ def get_etud_main_group(context, etudid, sem):
|
|||||||
if groups:
|
if groups:
|
||||||
return groups[0]
|
return groups[0]
|
||||||
else:
|
else:
|
||||||
return get_group(context, get_default_group(context, sem["formsemestre_id"]))
|
return get_group(context, get_default_group(sem["formsemestre_id"]))
|
||||||
|
|
||||||
|
|
||||||
def formsemestre_get_main_partition(context, formsemestre_id):
|
def formsemestre_get_main_partition(context, formsemestre_id):
|
||||||
@ -600,7 +602,7 @@ def setGroups(
|
|||||||
|
|
||||||
partition = get_partition(context, partition_id)
|
partition = get_partition(context, partition_id)
|
||||||
formsemestre_id = partition["formsemestre_id"]
|
formsemestre_id = partition["formsemestre_id"]
|
||||||
if not sco_permissions_check.can_change_groups(context, REQUEST, formsemestre_id):
|
if not sco_permissions_check.can_change_groups(formsemestre_id):
|
||||||
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
||||||
log("***setGroups: partition_id=%s" % partition_id)
|
log("***setGroups: partition_id=%s" % partition_id)
|
||||||
log("groupsLists=%s" % groupsLists)
|
log("groupsLists=%s" % groupsLists)
|
||||||
@ -669,7 +671,7 @@ def setGroups(
|
|||||||
# group_name = six.text_type(group_name, "utf-8").encode(
|
# group_name = six.text_type(group_name, "utf-8").encode(
|
||||||
# scu.SCO_ENCODING
|
# scu.SCO_ENCODING
|
||||||
# ) # #py3 #sco8
|
# ) # #py3 #sco8
|
||||||
group_id = createGroup(context, partition_id, group_name, REQUEST=REQUEST)
|
group_id = createGroup(context, partition_id, group_name)
|
||||||
# Place dans ce groupe les etudiants indiqués:
|
# Place dans ce groupe les etudiants indiqués:
|
||||||
for etudid in fs[1:-1]:
|
for etudid in fs[1:-1]:
|
||||||
change_etud_group_in_partition(
|
change_etud_group_in_partition(
|
||||||
@ -682,15 +684,11 @@ def setGroups(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def createGroup(context, partition_id, group_name="", default=False, REQUEST=None):
|
def createGroup(context, partition_id, group_name="", default=False):
|
||||||
"""Create a new group in this partition
|
"""Create a new group in this partition"""
|
||||||
(called from JS)
|
|
||||||
"""
|
|
||||||
partition = get_partition(context, partition_id)
|
partition = get_partition(context, partition_id)
|
||||||
formsemestre_id = partition["formsemestre_id"]
|
formsemestre_id = partition["formsemestre_id"]
|
||||||
if REQUEST and not sco_permissions_check.can_change_groups(
|
if not sco_permissions_check.can_change_groups(formsemestre_id):
|
||||||
context, REQUEST, formsemestre_id
|
|
||||||
):
|
|
||||||
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
||||||
#
|
#
|
||||||
if group_name:
|
if group_name:
|
||||||
@ -727,9 +725,7 @@ def suppressGroup(context, group_id, partition_id=None, REQUEST=None):
|
|||||||
else:
|
else:
|
||||||
partition_id = group["partition_id"]
|
partition_id = group["partition_id"]
|
||||||
partition = get_partition(context, partition_id)
|
partition = get_partition(context, partition_id)
|
||||||
if not sco_permissions_check.can_change_groups(
|
if not sco_permissions_check.can_change_groups(partition["formsemestre_id"]):
|
||||||
context, REQUEST, partition["formsemestre_id"]
|
|
||||||
):
|
|
||||||
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
||||||
log(
|
log(
|
||||||
"suppressGroup: group_id=%s group_name=%s partition_name=%s"
|
"suppressGroup: group_id=%s group_name=%s partition_name=%s"
|
||||||
@ -744,13 +740,10 @@ def partition_create(
|
|||||||
partition_name="",
|
partition_name="",
|
||||||
default=False,
|
default=False,
|
||||||
numero=None,
|
numero=None,
|
||||||
REQUEST=None,
|
|
||||||
redirect=1,
|
redirect=1,
|
||||||
):
|
):
|
||||||
"""Create a new partition"""
|
"""Create a new partition"""
|
||||||
if REQUEST and not sco_permissions_check.can_change_groups(
|
if not sco_permissions_check.can_change_groups(formsemestre_id):
|
||||||
context, REQUEST, formsemestre_id
|
|
||||||
):
|
|
||||||
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
||||||
if partition_name:
|
if partition_name:
|
||||||
partition_name = partition_name.strip()
|
partition_name = partition_name.strip()
|
||||||
@ -774,8 +767,12 @@ def partition_create(
|
|||||||
log("createPartition: created partition_id=%s" % partition_id)
|
log("createPartition: created partition_id=%s" % partition_id)
|
||||||
#
|
#
|
||||||
if redirect:
|
if redirect:
|
||||||
return REQUEST.RESPONSE.redirect(
|
return flask.redirect(
|
||||||
"editPartitionForm?formsemestre_id=" + formsemestre_id
|
url_for(
|
||||||
|
"scolar.editPartitionForm",
|
||||||
|
scodoc_dept=g.scodoc_dept,
|
||||||
|
formsemestre_id=formsemestre_id,
|
||||||
|
)
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
return partition_id
|
return partition_id
|
||||||
@ -794,7 +791,7 @@ def getArrowIconsTags(context, REQUEST):
|
|||||||
def editPartitionForm(context, formsemestre_id=None, REQUEST=None):
|
def editPartitionForm(context, formsemestre_id=None, REQUEST=None):
|
||||||
"""Form to create/suppress partitions"""
|
"""Form to create/suppress partitions"""
|
||||||
# ad-hoc form
|
# ad-hoc form
|
||||||
if not sco_permissions_check.can_change_groups(context, REQUEST, formsemestre_id):
|
if not sco_permissions_check.can_change_groups(formsemestre_id):
|
||||||
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
||||||
partitions = get_partitions_list(context, formsemestre_id)
|
partitions = get_partitions_list(context, formsemestre_id)
|
||||||
arrow_up, arrow_down, arrow_none = getArrowIconsTags(context, REQUEST)
|
arrow_up, arrow_down, arrow_none = getArrowIconsTags(context, REQUEST)
|
||||||
@ -804,8 +801,6 @@ def editPartitionForm(context, formsemestre_id=None, REQUEST=None):
|
|||||||
#
|
#
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title="Partitions...",
|
page_title="Partitions...",
|
||||||
javascripts=["js/editPartitionForm.js"],
|
javascripts=["js/editPartitionForm.js"],
|
||||||
),
|
),
|
||||||
@ -924,7 +919,7 @@ def partition_set_attr(context, partition_id, attr, value, REQUEST=None):
|
|||||||
|
|
||||||
partition = get_partition(context, partition_id)
|
partition = get_partition(context, partition_id)
|
||||||
formsemestre_id = partition["formsemestre_id"]
|
formsemestre_id = partition["formsemestre_id"]
|
||||||
if not sco_permissions_check.can_change_groups(context, REQUEST, formsemestre_id):
|
if not sco_permissions_check.can_change_groups(formsemestre_id):
|
||||||
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
||||||
|
|
||||||
log("partition_set_attr(%s, %s, %s)" % (partition_id, attr, value))
|
log("partition_set_attr(%s, %s, %s)" % (partition_id, attr, value))
|
||||||
@ -947,7 +942,7 @@ def partition_delete(
|
|||||||
default partition cannot be suppressed (unless force)"""
|
default partition cannot be suppressed (unless force)"""
|
||||||
partition = get_partition(context, partition_id)
|
partition = get_partition(context, partition_id)
|
||||||
formsemestre_id = partition["formsemestre_id"]
|
formsemestre_id = partition["formsemestre_id"]
|
||||||
if not sco_permissions_check.can_change_groups(context, REQUEST, formsemestre_id):
|
if not sco_permissions_check.can_change_groups(formsemestre_id):
|
||||||
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
||||||
|
|
||||||
if not partition["partition_name"] and not force:
|
if not partition["partition_name"] and not force:
|
||||||
@ -991,7 +986,7 @@ def partition_move(context, partition_id, after=0, REQUEST=None, redirect=1):
|
|||||||
"""Move before/after previous one (decrement/increment numero)"""
|
"""Move before/after previous one (decrement/increment numero)"""
|
||||||
partition = get_partition(context, partition_id)
|
partition = get_partition(context, partition_id)
|
||||||
formsemestre_id = partition["formsemestre_id"]
|
formsemestre_id = partition["formsemestre_id"]
|
||||||
if not sco_permissions_check.can_change_groups(context, REQUEST, formsemestre_id):
|
if not sco_permissions_check.can_change_groups(formsemestre_id):
|
||||||
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
||||||
#
|
#
|
||||||
redirect = int(redirect)
|
redirect = int(redirect)
|
||||||
@ -1026,7 +1021,7 @@ def partition_rename(context, partition_id, REQUEST=None):
|
|||||||
"""Form to rename a partition"""
|
"""Form to rename a partition"""
|
||||||
partition = get_partition(context, partition_id)
|
partition = get_partition(context, partition_id)
|
||||||
formsemestre_id = partition["formsemestre_id"]
|
formsemestre_id = partition["formsemestre_id"]
|
||||||
if not sco_permissions_check.can_change_groups(context, REQUEST, formsemestre_id):
|
if not sco_permissions_check.can_change_groups(formsemestre_id):
|
||||||
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
||||||
H = ["<h2>Renommer une partition</h2>"]
|
H = ["<h2>Renommer une partition</h2>"]
|
||||||
tf = TrivialFormulator(
|
tf = TrivialFormulator(
|
||||||
@ -1049,7 +1044,7 @@ def partition_rename(context, partition_id, REQUEST=None):
|
|||||||
)
|
)
|
||||||
if tf[0] == 0:
|
if tf[0] == 0:
|
||||||
return (
|
return (
|
||||||
html_sco_header.sco_header(context, REQUEST)
|
html_sco_header.sco_header()
|
||||||
+ "\n".join(H)
|
+ "\n".join(H)
|
||||||
+ "\n"
|
+ "\n"
|
||||||
+ tf[1]
|
+ tf[1]
|
||||||
@ -1086,7 +1081,7 @@ def partition_set_name(context, partition_id, partition_name, REQUEST=None, redi
|
|||||||
"Partition %s déjà existante dans ce semestre !" % partition_name
|
"Partition %s déjà existante dans ce semestre !" % partition_name
|
||||||
)
|
)
|
||||||
|
|
||||||
if not sco_permissions_check.can_change_groups(context, REQUEST, formsemestre_id):
|
if not sco_permissions_check.can_change_groups(formsemestre_id):
|
||||||
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
||||||
redirect = int(redirect)
|
redirect = int(redirect)
|
||||||
cnx = ndb.GetDBConnexion()
|
cnx = ndb.GetDBConnexion()
|
||||||
@ -1111,7 +1106,7 @@ def group_set_name(context, group_id, group_name, REQUEST=None, redirect=1):
|
|||||||
if group["group_name"] is None:
|
if group["group_name"] is None:
|
||||||
raise ValueError("can't set a name to default group")
|
raise ValueError("can't set a name to default group")
|
||||||
formsemestre_id = group["formsemestre_id"]
|
formsemestre_id = group["formsemestre_id"]
|
||||||
if not sco_permissions_check.can_change_groups(context, REQUEST, formsemestre_id):
|
if not sco_permissions_check.can_change_groups(formsemestre_id):
|
||||||
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
||||||
redirect = int(redirect)
|
redirect = int(redirect)
|
||||||
cnx = ndb.GetDBConnexion()
|
cnx = ndb.GetDBConnexion()
|
||||||
@ -1128,7 +1123,7 @@ def group_rename(context, group_id, REQUEST=None):
|
|||||||
"""Form to rename a group"""
|
"""Form to rename a group"""
|
||||||
group = get_group(context, group_id)
|
group = get_group(context, group_id)
|
||||||
formsemestre_id = group["formsemestre_id"]
|
formsemestre_id = group["formsemestre_id"]
|
||||||
if not sco_permissions_check.can_change_groups(context, REQUEST, formsemestre_id):
|
if not sco_permissions_check.can_change_groups(formsemestre_id):
|
||||||
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
||||||
H = ["<h2>Renommer un groupe de %s</h2>" % group["partition_name"]]
|
H = ["<h2>Renommer un groupe de %s</h2>" % group["partition_name"]]
|
||||||
tf = TrivialFormulator(
|
tf = TrivialFormulator(
|
||||||
@ -1151,7 +1146,7 @@ def group_rename(context, group_id, REQUEST=None):
|
|||||||
)
|
)
|
||||||
if tf[0] == 0:
|
if tf[0] == 0:
|
||||||
return (
|
return (
|
||||||
html_sco_header.sco_header(context, REQUEST)
|
html_sco_header.sco_header()
|
||||||
+ "\n".join(H)
|
+ "\n".join(H)
|
||||||
+ "\n"
|
+ "\n"
|
||||||
+ tf[1]
|
+ tf[1]
|
||||||
@ -1178,7 +1173,7 @@ def groups_auto_repartition(context, partition_id=None, REQUEST=None):
|
|||||||
formsemestre_id = partition["formsemestre_id"]
|
formsemestre_id = partition["formsemestre_id"]
|
||||||
# renvoie sur page édition groupes
|
# renvoie sur page édition groupes
|
||||||
dest_url = "affectGroups?partition_id=%s" % partition_id
|
dest_url = "affectGroups?partition_id=%s" % partition_id
|
||||||
if not sco_permissions_check.can_change_groups(context, REQUEST, formsemestre_id):
|
if not sco_permissions_check.can_change_groups(formsemestre_id):
|
||||||
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
||||||
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
|
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
|
||||||
|
|
||||||
@ -1196,9 +1191,7 @@ def groups_auto_repartition(context, partition_id=None, REQUEST=None):
|
|||||||
]
|
]
|
||||||
|
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(page_title="Répartition des groupes"),
|
||||||
context, REQUEST, page_title="Répartition des groupes"
|
|
||||||
),
|
|
||||||
"<h2>Répartition des groupes de %s</h2>" % partition["partition_name"],
|
"<h2>Répartition des groupes de %s</h2>" % partition["partition_name"],
|
||||||
"<p>Semestre %s</p>" % sem["titreannee"],
|
"<p>Semestre %s</p>" % sem["titreannee"],
|
||||||
"""<p class="help">Les groupes existants seront <b>effacés</b> et remplacés par
|
"""<p class="help">Les groupes existants seront <b>effacés</b> et remplacés par
|
||||||
@ -1240,9 +1233,7 @@ def groups_auto_repartition(context, partition_id=None, REQUEST=None):
|
|||||||
# except:
|
# except:
|
||||||
# H.append('<p class="warning">Nom de groupe invalide: %s</p>'%group_name)
|
# H.append('<p class="warning">Nom de groupe invalide: %s</p>'%group_name)
|
||||||
# return '\n'.join(H) + tf[1] + html_sco_header.sco_footer( REQUEST)
|
# return '\n'.join(H) + tf[1] + html_sco_header.sco_footer( REQUEST)
|
||||||
group_ids.append(
|
group_ids.append(createGroup(context, partition_id, group_name))
|
||||||
createGroup(context, partition_id, group_name, REQUEST=REQUEST)
|
|
||||||
)
|
|
||||||
#
|
#
|
||||||
nt = sco_cache.NotesTableCache.get(formsemestre_id) # > identdict
|
nt = sco_cache.NotesTableCache.get(formsemestre_id) # > identdict
|
||||||
identdict = nt.identdict
|
identdict = nt.identdict
|
||||||
|
@ -40,15 +40,11 @@ def affectGroups(context, partition_id, REQUEST=None):
|
|||||||
# Ported from DTML and adapted to new group management (nov 2009)
|
# Ported from DTML and adapted to new group management (nov 2009)
|
||||||
partition = sco_groups.get_partition(context, partition_id)
|
partition = sco_groups.get_partition(context, partition_id)
|
||||||
formsemestre_id = partition["formsemestre_id"]
|
formsemestre_id = partition["formsemestre_id"]
|
||||||
if not sco_groups.sco_permissions_check.can_change_groups(
|
if not sco_groups.sco_permissions_check.can_change_groups(formsemestre_id):
|
||||||
context, REQUEST, formsemestre_id
|
|
||||||
):
|
|
||||||
raise AccessDenied("vous n'avez pas la permission d'effectuer cette opération")
|
raise AccessDenied("vous n'avez pas la permission d'effectuer cette opération")
|
||||||
|
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title="Affectation aux groupes",
|
page_title="Affectation aux groupes",
|
||||||
javascripts=["js/groupmgr.js"],
|
javascripts=["js/groupmgr.js"],
|
||||||
cssstyles=["css/groups.css"],
|
cssstyles=["css/groups.css"],
|
||||||
|
@ -105,8 +105,6 @@ def groups_view(
|
|||||||
|
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
javascripts=JAVASCRIPTS,
|
javascripts=JAVASCRIPTS,
|
||||||
cssstyles=CSSSTYLES,
|
cssstyles=CSSSTYLES,
|
||||||
init_qtip=True,
|
init_qtip=True,
|
||||||
@ -170,9 +168,7 @@ def form_groups_choice(
|
|||||||
|
|
||||||
Si submit_on_change, ajoute une classe "submit_on_change" qui est utilisee en JS
|
Si submit_on_change, ajoute une classe "submit_on_change" qui est utilisee en JS
|
||||||
"""
|
"""
|
||||||
default_group_id = sco_groups.get_default_group(
|
default_group_id = sco_groups.get_default_group(groups_infos.formsemestre_id)
|
||||||
context, groups_infos.formsemestre_id
|
|
||||||
)
|
|
||||||
|
|
||||||
H = [
|
H = [
|
||||||
"""<form id="group_selector" method="get">
|
"""<form id="group_selector" method="get">
|
||||||
@ -202,9 +198,7 @@ def menu_groups_choice(context, groups_infos, submit_on_change=False):
|
|||||||
et doit comporter au moins un élément, sauf si formsemestre_id est spécifié.
|
et doit comporter au moins un élément, sauf si formsemestre_id est spécifié.
|
||||||
(utilisé pour retrouver le semestre et proposer la liste des autres groupes)
|
(utilisé pour retrouver le semestre et proposer la liste des autres groupes)
|
||||||
"""
|
"""
|
||||||
default_group_id = sco_groups.get_default_group(
|
default_group_id = sco_groups.get_default_group(groups_infos.formsemestre_id)
|
||||||
context, groups_infos.formsemestre_id
|
|
||||||
)
|
|
||||||
|
|
||||||
if submit_on_change:
|
if submit_on_change:
|
||||||
klass = "submit_on_change"
|
klass = "submit_on_change"
|
||||||
@ -334,7 +328,7 @@ class DisplayedGroupsInfos(object):
|
|||||||
if not formsemestre_id:
|
if not formsemestre_id:
|
||||||
raise Exception("missing parameter formsemestre_id or group_ids")
|
raise Exception("missing parameter formsemestre_id or group_ids")
|
||||||
if select_all_when_unspecified:
|
if select_all_when_unspecified:
|
||||||
group_ids = [sco_groups.get_default_group(context, formsemestre_id)]
|
group_ids = [sco_groups.get_default_group(formsemestre_id)]
|
||||||
else:
|
else:
|
||||||
# selectionne le premier groupe trouvé, s'il y en a un
|
# selectionne le premier groupe trouvé, s'il y en a un
|
||||||
partition = sco_groups.get_partitions_list(
|
partition = sco_groups.get_partitions_list(
|
||||||
@ -344,7 +338,7 @@ class DisplayedGroupsInfos(object):
|
|||||||
if groups:
|
if groups:
|
||||||
group_ids = [groups[0]["group_id"]]
|
group_ids = [groups[0]["group_id"]]
|
||||||
else:
|
else:
|
||||||
group_ids = [sco_groups.get_default_group(context, formsemestre_id)]
|
group_ids = [sco_groups.get_default_group(formsemestre_id)]
|
||||||
|
|
||||||
gq = []
|
gq = []
|
||||||
for group_id in group_ids:
|
for group_id in group_ids:
|
||||||
@ -861,7 +855,7 @@ def tab_absences_html(context, groups_infos, etat=None, REQUEST=None):
|
|||||||
H.append('<h3>Opérations diverses</h3><ul class="ul_misc">')
|
H.append('<h3>Opérations diverses</h3><ul class="ul_misc">')
|
||||||
# Lien pour verif codes INE/NIP
|
# Lien pour verif codes INE/NIP
|
||||||
# (pour tous les etudiants du semestre)
|
# (pour tous les etudiants du semestre)
|
||||||
group_id = sco_groups.get_default_group(context, groups_infos.formsemestre_id)
|
group_id = sco_groups.get_default_group(groups_infos.formsemestre_id)
|
||||||
if authuser.has_permission(Permission.ScoEtudInscrit):
|
if authuser.has_permission(Permission.ScoEtudInscrit):
|
||||||
H.append(
|
H.append(
|
||||||
'<li><a class="stdlink" href="check_group_apogee?group_id=%s&etat=%s">Vérifier codes Apogée</a> (de tous les groupes)</li>'
|
'<li><a class="stdlink" href="check_group_apogee?group_id=%s&etat=%s">Vérifier codes Apogée</a> (de tous les groupes)</li>'
|
||||||
|
@ -241,9 +241,7 @@ def students_import_excel(
|
|||||||
dest = "formsemestre_status?formsemestre_id=%s" % formsemestre_id
|
dest = "formsemestre_status?formsemestre_id=%s" % formsemestre_id
|
||||||
else:
|
else:
|
||||||
dest = scu.NotesURL()
|
dest = scu.NotesURL()
|
||||||
H = [
|
H = [html_sco_header.sco_header(page_title="Import etudiants")]
|
||||||
html_sco_header.sco_header(context, REQUEST, page_title="Import etudiants")
|
|
||||||
]
|
|
||||||
H.append("<ul>")
|
H.append("<ul>")
|
||||||
for d in diag:
|
for d in diag:
|
||||||
H.append("<li>%s</li>" % d)
|
H.append("<li>%s</li>" % d)
|
||||||
@ -503,11 +501,7 @@ def students_import_admission(
|
|||||||
type_admission=type_admission,
|
type_admission=type_admission,
|
||||||
)
|
)
|
||||||
if REQUEST:
|
if REQUEST:
|
||||||
H = [
|
H = [html_sco_header.sco_header(page_title="Import données admissions")]
|
||||||
html_sco_header.sco_header(
|
|
||||||
context, REQUEST, page_title="Import données admissions"
|
|
||||||
)
|
|
||||||
]
|
|
||||||
H.append("<p>Import terminé !</p>")
|
H.append("<p>Import terminé !</p>")
|
||||||
H.append(
|
H.append(
|
||||||
'<p><a class="stdlink" href="%s">Continuer</a></p>'
|
'<p><a class="stdlink" href="%s">Continuer</a></p>'
|
||||||
@ -618,7 +612,7 @@ def scolars_import_admission(
|
|||||||
|
|
||||||
log("scolars_import_admission: formsemestre_id=%s" % formsemestre_id)
|
log("scolars_import_admission: formsemestre_id=%s" % formsemestre_id)
|
||||||
members = sco_groups.get_group_members(
|
members = sco_groups.get_group_members(
|
||||||
context, sco_groups.get_default_group(context, formsemestre_id)
|
context, sco_groups.get_default_group(formsemestre_id)
|
||||||
)
|
)
|
||||||
etuds_by_nomprenom = {} # { nomprenom : etud }
|
etuds_by_nomprenom = {} # { nomprenom : etud }
|
||||||
diag = []
|
diag = []
|
||||||
|
@ -287,9 +287,7 @@ def formsemestre_inscr_passage(
|
|||||||
# -- check lock
|
# -- check lock
|
||||||
if sem["etat"] != "1":
|
if sem["etat"] != "1":
|
||||||
raise ScoValueError("opération impossible: semestre verrouille")
|
raise ScoValueError("opération impossible: semestre verrouille")
|
||||||
header = html_sco_header.sco_header(
|
header = html_sco_header.sco_header(page_title="Passage des étudiants")
|
||||||
context, REQUEST, page_title="Passage des étudiants"
|
|
||||||
)
|
|
||||||
footer = html_sco_header.sco_footer()
|
footer = html_sco_header.sco_footer()
|
||||||
H = [header]
|
H = [header]
|
||||||
if type(etuds) == type(""):
|
if type(etuds) == type(""):
|
||||||
|
@ -246,7 +246,7 @@ def _make_table_notes(
|
|||||||
keep_numeric = False
|
keep_numeric = False
|
||||||
# Si pas de groupe, affiche tout
|
# Si pas de groupe, affiche tout
|
||||||
if not group_ids:
|
if not group_ids:
|
||||||
group_ids = [sco_groups.get_default_group(context, M["formsemestre_id"])]
|
group_ids = [sco_groups.get_default_group(M["formsemestre_id"])]
|
||||||
groups = sco_groups.listgroups(context, group_ids)
|
groups = sco_groups.listgroups(context, group_ids)
|
||||||
|
|
||||||
gr_title = sco_groups.listgroups_abbrev(groups)
|
gr_title = sco_groups.listgroups_abbrev(groups)
|
||||||
|
@ -84,8 +84,6 @@ def scodoc_table_etuds_lycees(context, format="html", REQUEST=None):
|
|||||||
return t
|
return t
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title=tab.page_title,
|
page_title=tab.page_title,
|
||||||
init_google_maps=True,
|
init_google_maps=True,
|
||||||
init_qtip=True,
|
init_qtip=True,
|
||||||
@ -199,8 +197,6 @@ def formsemestre_etuds_lycees(
|
|||||||
]
|
]
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title=tab.page_title,
|
page_title=tab.page_title,
|
||||||
init_google_maps=True,
|
init_google_maps=True,
|
||||||
init_qtip=True,
|
init_qtip=True,
|
||||||
|
@ -71,8 +71,6 @@ def moduleimpl_inscriptions_edit(
|
|||||||
if sem["etat"] != "1":
|
if sem["etat"] != "1":
|
||||||
raise ScoValueError("opération impossible: semestre verrouille")
|
raise ScoValueError("opération impossible: semestre verrouille")
|
||||||
header = html_sco_header.sco_header(
|
header = html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title="Inscription au module",
|
page_title="Inscription au module",
|
||||||
init_qtip=True,
|
init_qtip=True,
|
||||||
javascripts=["js/etud_info.js"],
|
javascripts=["js/etud_info.js"],
|
||||||
|
@ -60,7 +60,7 @@ def moduleimpl_evaluation_menu(context, evaluation_id, nbnotes=0, REQUEST=None):
|
|||||||
context, moduleimpl_id=E["moduleimpl_id"]
|
context, moduleimpl_id=E["moduleimpl_id"]
|
||||||
)[0]
|
)[0]
|
||||||
|
|
||||||
group_id = sco_groups.get_default_group(context, modimpl["formsemestre_id"])
|
group_id = sco_groups.get_default_group(modimpl["formsemestre_id"])
|
||||||
|
|
||||||
if (
|
if (
|
||||||
sco_permissions_check.can_edit_notes(
|
sco_permissions_check.can_edit_notes(
|
||||||
@ -185,9 +185,7 @@ def moduleimpl_status(context, moduleimpl_id=None, partition_id=None, REQUEST=No
|
|||||||
arrow_up, arrow_down, arrow_none = sco_groups.getArrowIconsTags(context, REQUEST)
|
arrow_up, arrow_down, arrow_none = sco_groups.getArrowIconsTags(context, REQUEST)
|
||||||
#
|
#
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(page_title="Module %(titre)s" % Mod),
|
||||||
context, REQUEST, page_title="Module %(titre)s" % Mod
|
|
||||||
),
|
|
||||||
"""<h2 class="formsemestre">Module <tt>%(code)s</tt> %(titre)s</h2>""" % Mod,
|
"""<h2 class="formsemestre">Module <tt>%(code)s</tt> %(titre)s</h2>""" % Mod,
|
||||||
# XXX """caneditevals=%s caneditnotes=%s""" % (caneditevals,caneditnotes),
|
# XXX """caneditevals=%s caneditnotes=%s""" % (caneditevals,caneditnotes),
|
||||||
"""<div class="moduleimpl_tableaubord">
|
"""<div class="moduleimpl_tableaubord">
|
||||||
@ -285,7 +283,7 @@ def moduleimpl_status(context, moduleimpl_id=None, partition_id=None, REQUEST=No
|
|||||||
Permission.ScoAbsChange
|
Permission.ScoAbsChange
|
||||||
) and sco_formsemestre.sem_est_courant(context, sem):
|
) and sco_formsemestre.sem_est_courant(context, sem):
|
||||||
datelundi = sco_abs.ddmmyyyy(time.strftime("%d/%m/%Y")).prev_monday()
|
datelundi = sco_abs.ddmmyyyy(time.strftime("%d/%m/%Y")).prev_monday()
|
||||||
group_id = sco_groups.get_default_group(context, formsemestre_id)
|
group_id = sco_groups.get_default_group(formsemestre_id)
|
||||||
H.append(
|
H.append(
|
||||||
f"""
|
f"""
|
||||||
<span class="moduleimpl_abs_link"><a class="stdlink"
|
<span class="moduleimpl_abs_link"><a class="stdlink"
|
||||||
|
@ -279,7 +279,7 @@ def ficheEtud(context, etudid=None, REQUEST=None):
|
|||||||
alist = []
|
alist = []
|
||||||
annos = sco_etud.etud_annotations_list(cnx, args={"etudid": etudid})
|
annos = sco_etud.etud_annotations_list(cnx, args={"etudid": etudid})
|
||||||
for a in annos:
|
for a in annos:
|
||||||
if not sco_permissions_check.can_suppress_annotation(context, a["id"], REQUEST):
|
if not sco_permissions_check.can_suppress_annotation(a["id"]):
|
||||||
a["dellink"] = ""
|
a["dellink"] = ""
|
||||||
else:
|
else:
|
||||||
a[
|
a[
|
||||||
@ -355,7 +355,7 @@ def ficheEtud(context, etudid=None, REQUEST=None):
|
|||||||
|
|
||||||
# Devenir de l'étudiant:
|
# Devenir de l'étudiant:
|
||||||
has_debouche = True # info['debouche']
|
has_debouche = True # info['debouche']
|
||||||
if sco_permissions_check.can_edit_suivi(context, REQUEST):
|
if sco_permissions_check.can_edit_suivi():
|
||||||
suivi_readonly = "0"
|
suivi_readonly = "0"
|
||||||
link_add_suivi = """<li class="adddebouche">
|
link_add_suivi = """<li class="adddebouche">
|
||||||
<a id="adddebouchelink" class="stdlink" href="#">ajouter une ligne</a>
|
<a id="adddebouchelink" class="stdlink" href="#">ajouter une ligne</a>
|
||||||
@ -478,8 +478,6 @@ def ficheEtud(context, etudid=None, REQUEST=None):
|
|||||||
</div>
|
</div>
|
||||||
"""
|
"""
|
||||||
header = html_sco_header.sco_header(
|
header = html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title="Fiche étudiant %(prenom)s %(nom)s" % info,
|
page_title="Fiche étudiant %(prenom)s %(nom)s" % info,
|
||||||
cssstyles=["libjs/jQuery-tagEditor/jquery.tag-editor.css"],
|
cssstyles=["libjs/jQuery-tagEditor/jquery.tag-editor.css"],
|
||||||
javascripts=[
|
javascripts=[
|
||||||
@ -547,12 +545,7 @@ def etud_info_html(context, etudid, with_photo="1", REQUEST=None, debug=False):
|
|||||||
context = context
|
context = context
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
# log('etud_info_html: %s' % REQUEST.QUERY_STRING)
|
formsemestre_id = sco_formsemestre_status.retreive_formsemestre_from_request()
|
||||||
formsemestre_id = sco_formsemestre_status.retreive_formsemestre_from_request(
|
|
||||||
context, REQUEST
|
|
||||||
)
|
|
||||||
# log('etud_info_html: formsemestre_id=%s' % formsemestre_id)
|
|
||||||
|
|
||||||
with_photo = int(with_photo)
|
with_photo = int(with_photo)
|
||||||
etud = sco_etud.get_etud_info(filled=1, REQUEST=REQUEST)[0]
|
etud = sco_etud.get_etud_info(filled=1, REQUEST=REQUEST)[0]
|
||||||
photo_html = sco_photos.etud_photo_html(
|
photo_html = sco_photos.etud_photo_html(
|
||||||
|
@ -62,7 +62,6 @@ def can_edit_evaluation(moduleimpl_id=None):
|
|||||||
# was _evaluation_check_write_access
|
# was _evaluation_check_write_access
|
||||||
# AccessDenied("Modification évaluation impossible pour %s" % (uid,))
|
# AccessDenied("Modification évaluation impossible pour %s" % (uid,))
|
||||||
from app.scodoc import sco_formsemestre
|
from app.scodoc import sco_formsemestre
|
||||||
from app.scodoc import sco_moduleimpl
|
|
||||||
|
|
||||||
# acces pour resp. moduleimpl et resp. form semestre (dir etud)
|
# acces pour resp. moduleimpl et resp. form semestre (dir etud)
|
||||||
if moduleimpl_id is None:
|
if moduleimpl_id is None:
|
||||||
@ -85,7 +84,7 @@ def can_edit_evaluation(moduleimpl_id=None):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
def can_suppress_annotation(context, annotation_id, REQUEST):
|
def can_suppress_annotation(annotation_id):
|
||||||
"""True if current user can suppress this annotation
|
"""True if current user can suppress this annotation
|
||||||
Seuls l'auteur de l'annotation et le chef de dept peuvent supprimer
|
Seuls l'auteur de l'annotation et le chef de dept peuvent supprimer
|
||||||
une annotation.
|
une annotation.
|
||||||
@ -95,51 +94,48 @@ def can_suppress_annotation(context, annotation_id, REQUEST):
|
|||||||
if len(annos) != 1:
|
if len(annos) != 1:
|
||||||
raise sco_exceptions.ScoValueError("annotation inexistante !")
|
raise sco_exceptions.ScoValueError("annotation inexistante !")
|
||||||
anno = annos[0]
|
anno = annos[0]
|
||||||
authuser = REQUEST.AUTHENTICATED_USER
|
|
||||||
return (
|
return (
|
||||||
str(authuser) == anno["zope_authenticated_user"]
|
current_user.user_name == anno["zope_authenticated_user"]
|
||||||
) or authuser.has_permission(Permission.ScoEtudAddAnnotations)
|
) or current_user.has_permission(Permission.ScoEtudAddAnnotations)
|
||||||
|
|
||||||
|
|
||||||
def can_edit_suivi(context, REQUEST=None):
|
def can_edit_suivi():
|
||||||
"""Vrai si l'utilisateur peut modifier les informations de suivi sur la page etud" """
|
"""Vrai si l'utilisateur peut modifier les informations de suivi sur la page etud" """
|
||||||
authuser = REQUEST.AUTHENTICATED_USER
|
return current_user.has_permission(Permission.ScoEtudChangeAdr)
|
||||||
return authuser.has_permission(Permission.ScoEtudChangeAdr)
|
|
||||||
|
|
||||||
|
|
||||||
def can_validate_sem(context, REQUEST, formsemestre_id):
|
def can_validate_sem(formsemestre_id):
|
||||||
"Vrai si utilisateur peut saisir decision de jury dans ce semestre"
|
"Vrai si utilisateur peut saisir decision de jury dans ce semestre"
|
||||||
from app.scodoc import sco_formsemestre
|
from app.scodoc import sco_formsemestre
|
||||||
|
|
||||||
|
context = None # XXX #context
|
||||||
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
|
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
|
||||||
if sem["etat"] != "1":
|
if sem["etat"] != "1":
|
||||||
return False # semestre verrouillé
|
return False # semestre verrouillé
|
||||||
|
|
||||||
return is_chef_or_diretud(context, REQUEST, sem)
|
return is_chef_or_diretud(sem)
|
||||||
|
|
||||||
|
|
||||||
def can_edit_pv(context, REQUEST, formsemestre_id):
|
def can_edit_pv(formsemestre_id):
|
||||||
"Vrai si utilisateur peut editer un PV de jury de ce semestre"
|
"Vrai si utilisateur peut editer un PV de jury de ce semestre"
|
||||||
from app.scodoc import sco_formsemestre
|
from app.scodoc import sco_formsemestre
|
||||||
|
|
||||||
|
context = None # XXX #context
|
||||||
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
|
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
|
||||||
if is_chef_or_diretud(context, REQUEST, sem):
|
if is_chef_or_diretud(sem):
|
||||||
return True
|
return True
|
||||||
# Autorise les secrétariats, repérés via la permission ScoEtudChangeAdr
|
# Autorise les secrétariats, repérés via la permission ScoEtudChangeAdr
|
||||||
# (ceci nous évite d'ajouter une permission Zope aux installations existantes)
|
# (ceci nous évite d'ajouter une permission Zope aux installations existantes)
|
||||||
authuser = REQUEST.AUTHENTICATED_USER
|
return current_user.has_permission(Permission.ScoEtudChangeAdr)
|
||||||
return authuser.has_permission(Permission.ScoEtudChangeAdr)
|
|
||||||
|
|
||||||
|
|
||||||
def is_chef_or_diretud(context, REQUEST, sem):
|
def is_chef_or_diretud(sem):
|
||||||
"Vrai si utilisateur est admin, chef dept ou responsable du semestre"
|
"Vrai si utilisateur est admin, chef dept ou responsable du semestre"
|
||||||
authuser = REQUEST.AUTHENTICATED_USER
|
if (
|
||||||
if authuser.has_permission(Permission.ScoImplement):
|
current_user.has_permission(Permission.ScoImplement)
|
||||||
return True # admin, chef dept
|
or current_user.user_name in sem["responsables"]
|
||||||
uid = str(authuser)
|
):
|
||||||
if uid in sem["responsables"]:
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
@ -151,21 +147,20 @@ def check_access_diretud(
|
|||||||
"""
|
"""
|
||||||
from app.scodoc import sco_formsemestre
|
from app.scodoc import sco_formsemestre
|
||||||
|
|
||||||
authuser = REQUEST.AUTHENTICATED_USER
|
|
||||||
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
|
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
|
||||||
header = html_sco_header.sco_header(
|
header = html_sco_header.sco_header(
|
||||||
context, page_title="Accès interdit", REQUEST=REQUEST
|
context, page_title="Accès interdit", REQUEST=REQUEST
|
||||||
)
|
)
|
||||||
footer = html_sco_header.sco_footer()
|
footer = html_sco_header.sco_footer()
|
||||||
if (str(authuser) not in sem["responsables"]) and not authuser.has_permission(
|
if (
|
||||||
required_permission
|
current_user.user_name not in sem["responsables"]
|
||||||
):
|
) and not current_user.has_permission(required_permission):
|
||||||
return (
|
return (
|
||||||
False,
|
False,
|
||||||
"\n".join(
|
"\n".join(
|
||||||
[
|
[
|
||||||
header,
|
header,
|
||||||
"<h2>Opération non autorisée pour %s</h2>" % authuser,
|
"<h2>Opération non autorisée pour %s</h2>" % current_user,
|
||||||
"<p>Responsable de ce semestre : <b>%s</b></p>"
|
"<p>Responsable de ce semestre : <b>%s</b></p>"
|
||||||
% ", ".join(sem["responsables"]),
|
% ", ".join(sem["responsables"]),
|
||||||
footer,
|
footer,
|
||||||
@ -176,18 +171,17 @@ def check_access_diretud(
|
|||||||
return True, ""
|
return True, ""
|
||||||
|
|
||||||
|
|
||||||
def can_change_groups(context, REQUEST, formsemestre_id):
|
def can_change_groups(formsemestre_id):
|
||||||
"Vrai si l'utilisateur peut changer les groupes dans ce semestre"
|
"Vrai si l'utilisateur peut changer les groupes dans ce semestre"
|
||||||
from app.scodoc import sco_formsemestre
|
from app.scodoc import sco_formsemestre
|
||||||
|
|
||||||
|
context = None # XXX #context
|
||||||
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
|
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
|
||||||
if sem["etat"] != "1":
|
if sem["etat"] != "1":
|
||||||
return False # semestre verrouillé
|
return False # semestre verrouillé
|
||||||
authuser = REQUEST.AUTHENTICATED_USER
|
if current_user.has_permission(Permission.ScoEtudChangeGroups):
|
||||||
if authuser.has_permission(Permission.ScoEtudChangeGroups):
|
|
||||||
return True # admin, chef dept
|
return True # admin, chef dept
|
||||||
uid = str(authuser)
|
if current_user.user_name in sem["responsables"]:
|
||||||
if uid in sem["responsables"]:
|
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@ -412,7 +412,7 @@ def placement_eval_selectetuds(context, evaluation_id, REQUEST=None):
|
|||||||
page_title = 'Placement "%s"' % theeval["description"]
|
page_title = 'Placement "%s"' % theeval["description"]
|
||||||
else:
|
else:
|
||||||
page_title = "Placement des étudiants"
|
page_title = "Placement des étudiants"
|
||||||
H = [html_sco_header.sco_header(context, REQUEST, page_title=page_title)]
|
H = [html_sco_header.sco_header(page_title=page_title)]
|
||||||
|
|
||||||
formid = "placementfile"
|
formid = "placementfile"
|
||||||
if not REQUEST.form.get("%s-submitted" % formid, False):
|
if not REQUEST.form.get("%s-submitted" % formid, False):
|
||||||
|
@ -170,7 +170,7 @@ def formsemestre_poursuite_report(
|
|||||||
"""Table avec informations "poursuite" """
|
"""Table avec informations "poursuite" """
|
||||||
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
|
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
|
||||||
etuds = _getEtudInfoGroupes(
|
etuds = _getEtudInfoGroupes(
|
||||||
context, [sco_groups.get_default_group(context, formsemestre_id)]
|
context, [sco_groups.get_default_group(formsemestre_id)]
|
||||||
)
|
)
|
||||||
|
|
||||||
infos = []
|
infos = []
|
||||||
|
@ -1958,7 +1958,7 @@ class BasePreferences(object):
|
|||||||
|
|
||||||
context = None # XXX TO REMOVE #context
|
context = None # XXX TO REMOVE #context
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(context, REQUEST, page_title="Préférences"),
|
html_sco_header.sco_header(page_title="Préférences"),
|
||||||
"<h2>Préférences globales pour %s</h2>" % scu.ScoURL(),
|
"<h2>Préférences globales pour %s</h2>" % scu.ScoURL(),
|
||||||
"""<p class="help">Ces paramètres s'appliquent par défaut à tous les semestres, sauf si ceux-ci définissent des valeurs spécifiques.</p>
|
"""<p class="help">Ces paramètres s'appliquent par défaut à tous les semestres, sauf si ceux-ci définissent des valeurs spécifiques.</p>
|
||||||
<p class="msg">Attention: cliquez sur "Enregistrer les modifications" en bas de page pour appliquer vos changements !</p>
|
<p class="msg">Attention: cliquez sur "Enregistrer les modifications" en bas de page pour appliquer vos changements !</p>
|
||||||
|
@ -516,7 +516,7 @@ def formsemestre_pvjury(
|
|||||||
if not dpv:
|
if not dpv:
|
||||||
if format == "html":
|
if format == "html":
|
||||||
return (
|
return (
|
||||||
html_sco_header.sco_header(context, REQUEST)
|
html_sco_header.sco_header()
|
||||||
+ "<h2>Aucune information disponible !</h2>"
|
+ "<h2>Aucune information disponible !</h2>"
|
||||||
+ footer
|
+ footer
|
||||||
)
|
)
|
||||||
@ -634,7 +634,7 @@ def formsemestre_pvjury_pdf(
|
|||||||
etuddescr = ""
|
etuddescr = ""
|
||||||
if not group_ids:
|
if not group_ids:
|
||||||
# tous les inscrits du semestre
|
# tous les inscrits du semestre
|
||||||
group_ids = [sco_groups.get_default_group(context, formsemestre_id)]
|
group_ids = [sco_groups.get_default_group(formsemestre_id)]
|
||||||
|
|
||||||
groups_infos = sco_groups_view.DisplayedGroupsInfos(
|
groups_infos = sco_groups_view.DisplayedGroupsInfos(
|
||||||
context, group_ids, formsemestre_id=formsemestre_id, REQUEST=REQUEST
|
context, group_ids, formsemestre_id=formsemestre_id, REQUEST=REQUEST
|
||||||
@ -818,7 +818,7 @@ def formsemestre_lettres_individuelles(
|
|||||||
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
|
sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
|
||||||
if not group_ids:
|
if not group_ids:
|
||||||
# tous les inscrits du semestre
|
# tous les inscrits du semestre
|
||||||
group_ids = [sco_groups.get_default_group(context, formsemestre_id)]
|
group_ids = [sco_groups.get_default_group(formsemestre_id)]
|
||||||
groups_infos = sco_groups_view.DisplayedGroupsInfos(
|
groups_infos = sco_groups_view.DisplayedGroupsInfos(
|
||||||
context, group_ids, formsemestre_id=formsemestre_id, REQUEST=REQUEST
|
context, group_ids, formsemestre_id=formsemestre_id, REQUEST=REQUEST
|
||||||
)
|
)
|
||||||
|
@ -95,8 +95,6 @@ def formsemestre_recapcomplet(
|
|||||||
if not isFile:
|
if not isFile:
|
||||||
H += [
|
H += [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title="Récapitulatif",
|
page_title="Récapitulatif",
|
||||||
no_side_bar=True,
|
no_side_bar=True,
|
||||||
init_qtip=True,
|
init_qtip=True,
|
||||||
@ -173,7 +171,7 @@ def formsemestre_recapcomplet(
|
|||||||
"""<p><a class="stdlink" href="formsemestre_pvjury?formsemestre_id=%s">Voir les décisions du jury</a></p>"""
|
"""<p><a class="stdlink" href="formsemestre_pvjury?formsemestre_id=%s">Voir les décisions du jury</a></p>"""
|
||||||
% formsemestre_id
|
% formsemestre_id
|
||||||
)
|
)
|
||||||
if sco_permissions_check.can_validate_sem(context, REQUEST, formsemestre_id):
|
if sco_permissions_check.can_validate_sem(formsemestre_id):
|
||||||
H.append("<p>")
|
H.append("<p>")
|
||||||
if modejury:
|
if modejury:
|
||||||
H.append(
|
H.append(
|
||||||
|
@ -365,7 +365,7 @@ def formsemestre_report_counts(
|
|||||||
if format != "html":
|
if format != "html":
|
||||||
return t
|
return t
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(context, REQUEST, page_title=title),
|
html_sco_header.sco_header(page_title=title),
|
||||||
t,
|
t,
|
||||||
"\n".join(F),
|
"\n".join(F),
|
||||||
"""<p class="help">Le tableau affiche le nombre d'étudiants de ce semestre dans chacun
|
"""<p class="help">Le tableau affiche le nombre d'étudiants de ce semestre dans chacun
|
||||||
@ -756,7 +756,7 @@ def formsemestre_suivi_cohorte(
|
|||||||
)
|
)
|
||||||
|
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(context, REQUEST, page_title=tab.page_title),
|
html_sco_header.sco_header(page_title=tab.page_title),
|
||||||
"""<h2 class="formsemestre">Suivi cohorte: devenir des étudiants de ce semestre</h2>""",
|
"""<h2 class="formsemestre">Suivi cohorte: devenir des étudiants de ce semestre</h2>""",
|
||||||
_gen_form_selectetuds(
|
_gen_form_selectetuds(
|
||||||
formsemestre_id,
|
formsemestre_id,
|
||||||
@ -1229,8 +1229,6 @@ def formsemestre_suivi_parcours(
|
|||||||
|
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title=tab.page_title,
|
page_title=tab.page_title,
|
||||||
init_qtip=True,
|
init_qtip=True,
|
||||||
javascripts=["js/etud_info.js"],
|
javascripts=["js/etud_info.js"],
|
||||||
@ -1559,8 +1557,6 @@ def formsemestre_graph_parcours(
|
|||||||
|
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title="Parcours étudiants de %(titreannee)s" % sem,
|
page_title="Parcours étudiants de %(titreannee)s" % sem,
|
||||||
no_side_bar=True,
|
no_side_bar=True,
|
||||||
),
|
),
|
||||||
|
@ -311,7 +311,7 @@ def do_evaluation_set_missing(
|
|||||||
diag = "Valeur %s invalide" % value
|
diag = "Valeur %s invalide" % value
|
||||||
if diag:
|
if diag:
|
||||||
return (
|
return (
|
||||||
html_sco_header.sco_header(context, REQUEST)
|
html_sco_header.sco_header()
|
||||||
+ '<h2>%s</h2><p><a href="saisie_notes?evaluation_id=%s">Recommencer</a>'
|
+ '<h2>%s</h2><p><a href="saisie_notes?evaluation_id=%s">Recommencer</a>'
|
||||||
% (diag, evaluation_id)
|
% (diag, evaluation_id)
|
||||||
+ html_sco_header.sco_footer()
|
+ html_sco_header.sco_footer()
|
||||||
@ -348,7 +348,7 @@ def do_evaluation_set_missing(
|
|||||||
url=mod["url"],
|
url=mod["url"],
|
||||||
)
|
)
|
||||||
return (
|
return (
|
||||||
html_sco_header.sco_header(context, REQUEST)
|
html_sco_header.sco_header()
|
||||||
+ """<h2>%d notes changées</h2>
|
+ """<h2>%d notes changées</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a class="stdlink" href="saisie_notes?evaluation_id=%s">
|
<li><a class="stdlink" href="saisie_notes?evaluation_id=%s">
|
||||||
@ -429,11 +429,7 @@ def evaluation_suppress_alln(context, evaluation_id, REQUEST, dialog_confirmed=F
|
|||||||
url=mod["url"],
|
url=mod["url"],
|
||||||
)
|
)
|
||||||
|
|
||||||
return (
|
return html_sco_header.sco_header() + "\n".join(H) + html_sco_header.sco_footer()
|
||||||
html_sco_header.sco_header(context, REQUEST)
|
|
||||||
+ "\n".join(H)
|
|
||||||
+ html_sco_header.sco_footer()
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def _notes_add(context, uid, evaluation_id, notes, comment=None, do_it=True):
|
def _notes_add(context, uid, evaluation_id, notes, comment=None, do_it=True):
|
||||||
@ -578,7 +574,7 @@ def saisie_notes_tableur(context, evaluation_id, group_ids=[], REQUEST=None):
|
|||||||
formsemestre_id = M["formsemestre_id"]
|
formsemestre_id = M["formsemestre_id"]
|
||||||
if not sco_permissions_check.can_edit_notes(context, authuser, E["moduleimpl_id"]):
|
if not sco_permissions_check.can_edit_notes(context, authuser, E["moduleimpl_id"]):
|
||||||
return (
|
return (
|
||||||
html_sco_header.sco_header(context, REQUEST)
|
html_sco_header.sco_header()
|
||||||
+ "<h2>Modification des notes impossible pour %s</h2>" % authusername
|
+ "<h2>Modification des notes impossible pour %s</h2>" % authusername
|
||||||
+ """<p>(vérifiez que le semestre n'est pas verrouillé et que vous
|
+ """<p>(vérifiez que le semestre n'est pas verrouillé et que vous
|
||||||
avez l'autorisation d'effectuer cette opération)</p>
|
avez l'autorisation d'effectuer cette opération)</p>
|
||||||
@ -605,8 +601,6 @@ def saisie_notes_tableur(context, evaluation_id, group_ids=[], REQUEST=None):
|
|||||||
|
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title=page_title,
|
page_title=page_title,
|
||||||
javascripts=sco_groups_view.JAVASCRIPTS,
|
javascripts=sco_groups_view.JAVASCRIPTS,
|
||||||
cssstyles=sco_groups_view.CSSSTYLES,
|
cssstyles=sco_groups_view.CSSSTYLES,
|
||||||
@ -859,7 +853,7 @@ def saisie_notes(context, evaluation_id, group_ids=[], REQUEST=None):
|
|||||||
# (admin, respformation, and responsable_id)
|
# (admin, respformation, and responsable_id)
|
||||||
if not sco_permissions_check.can_edit_notes(context, authuser, E["moduleimpl_id"]):
|
if not sco_permissions_check.can_edit_notes(context, authuser, E["moduleimpl_id"]):
|
||||||
return (
|
return (
|
||||||
html_sco_header.sco_header(context, REQUEST)
|
html_sco_header.sco_header()
|
||||||
+ "<h2>Modification des notes impossible pour %s</h2>" % authusername
|
+ "<h2>Modification des notes impossible pour %s</h2>" % authusername
|
||||||
+ """<p>(vérifiez que le semestre n'est pas verrouillé et que vous
|
+ """<p>(vérifiez que le semestre n'est pas verrouillé et que vous
|
||||||
avez l'autorisation d'effectuer cette opération)</p>
|
avez l'autorisation d'effectuer cette opération)</p>
|
||||||
@ -887,8 +881,6 @@ def saisie_notes(context, evaluation_id, group_ids=[], REQUEST=None):
|
|||||||
# HTML page:
|
# HTML page:
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title=page_title,
|
page_title=page_title,
|
||||||
javascripts=sco_groups_view.JAVASCRIPTS + ["js/saisie_notes.js"],
|
javascripts=sco_groups_view.JAVASCRIPTS + ["js/saisie_notes.js"],
|
||||||
cssstyles=sco_groups_view.CSSSTYLES,
|
cssstyles=sco_groups_view.CSSSTYLES,
|
||||||
|
@ -135,9 +135,9 @@ class SemSet(dict):
|
|||||||
self["semlinks"] = [(pattern % sem) for sem in self.sems]
|
self["semlinks"] = [(pattern % sem) for sem in self.sems]
|
||||||
self["semtitles_str"] = "<br/>".join(self["semlinks"])
|
self["semtitles_str"] = "<br/>".join(self["semlinks"])
|
||||||
|
|
||||||
def fill_formsemestres(self, REQUEST):
|
def fill_formsemestres(self):
|
||||||
for sem in self.sems:
|
for sem in self.sems:
|
||||||
sco_formsemestre_status.fill_formsemestre(self.context, sem, REQUEST)
|
sco_formsemestre_status.fill_formsemestre(sem)
|
||||||
ets = sco_etape_apogee.apo_get_sem_etapes(self.context, sem)
|
ets = sco_etape_apogee.apo_get_sem_etapes(self.context, sem)
|
||||||
sem["etapes_apo_str"] = sco_formsemestre.etapes_apo_str(sorted(list(ets)))
|
sem["etapes_apo_str"] = sco_formsemestre.etapes_apo_str(sorted(list(ets)))
|
||||||
|
|
||||||
@ -467,8 +467,6 @@ def semset_page(context, format="html", REQUEST=None):
|
|||||||
page_title = "Ensembles de semestres"
|
page_title = "Ensembles de semestres"
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title=page_title,
|
page_title=page_title,
|
||||||
init_qtip=True,
|
init_qtip=True,
|
||||||
javascripts=["libjs/jinplace-1.2.1.min.js"],
|
javascripts=["libjs/jinplace-1.2.1.min.js"],
|
||||||
|
@ -107,9 +107,7 @@ def formsemestre_synchro_etuds(
|
|||||||
"""
|
"""
|
||||||
% sem
|
% sem
|
||||||
)
|
)
|
||||||
header = html_sco_header.sco_header(
|
header = html_sco_header.sco_header(page_title="Synchronisation étudiants")
|
||||||
context, REQUEST, page_title="Synchronisation étudiants"
|
|
||||||
)
|
|
||||||
footer = html_sco_header.sco_footer()
|
footer = html_sco_header.sco_footer()
|
||||||
base_url = "%s?formsemestre_id=%s" % (REQUEST.URL0, formsemestre_id)
|
base_url = "%s?formsemestre_id=%s" % (REQUEST.URL0, formsemestre_id)
|
||||||
if anneeapogee:
|
if anneeapogee:
|
||||||
@ -522,9 +520,7 @@ def list_all(context, etudsapo_set):
|
|||||||
|
|
||||||
|
|
||||||
def formsemestre_synchro_etuds_help(context, sem):
|
def formsemestre_synchro_etuds_help(context, sem):
|
||||||
sem["default_group_id"] = sco_groups.get_default_group(
|
sem["default_group_id"] = sco_groups.get_default_group(sem["formsemestre_id"])
|
||||||
context, sem["formsemestre_id"]
|
|
||||||
)
|
|
||||||
return (
|
return (
|
||||||
"""<div class="pas_help pas_help_left"><h3><a name="help">Explications</a></h3>
|
"""<div class="pas_help pas_help_left"><h3><a name="help">Explications</a></h3>
|
||||||
<p>Cette page permet d'importer dans le semestre destination
|
<p>Cette page permet d'importer dans le semestre destination
|
||||||
|
@ -101,7 +101,7 @@ def trombino(
|
|||||||
|
|
||||||
|
|
||||||
def _trombino_html_header(context, REQUEST):
|
def _trombino_html_header(context, REQUEST):
|
||||||
return html_sco_header.sco_header(context, REQUEST, javascripts=["js/trombino.js"])
|
return html_sco_header.sco_header(javascripts=["js/trombino.js"])
|
||||||
|
|
||||||
|
|
||||||
def trombino_html(context, groups_infos, REQUEST=None):
|
def trombino_html(context, groups_infos, REQUEST=None):
|
||||||
@ -257,9 +257,7 @@ def trombino_copy_photos(context, group_ids=[], REQUEST=None, dialog_confirmed=F
|
|||||||
back_url = "groups_view?%s&curtab=tab-photos" % groups_infos.groups_query_args
|
back_url = "groups_view?%s&curtab=tab-photos" % groups_infos.groups_query_args
|
||||||
|
|
||||||
portal_url = sco_portal_apogee.get_portal_url(context)
|
portal_url = sco_portal_apogee.get_portal_url(context)
|
||||||
header = html_sco_header.sco_header(
|
header = html_sco_header.sco_header(page_title="Chargement des photos")
|
||||||
context, REQUEST, page_title="Chargement des photos"
|
|
||||||
)
|
|
||||||
footer = html_sco_header.sco_footer()
|
footer = html_sco_header.sco_footer()
|
||||||
if not portal_url:
|
if not portal_url:
|
||||||
return (
|
return (
|
||||||
@ -507,9 +505,7 @@ def photos_import_files_form(context, group_ids=[], REQUEST=None):
|
|||||||
back_url = "groups_view?%s&curtab=tab-photos" % groups_infos.groups_query_args
|
back_url = "groups_view?%s&curtab=tab-photos" % groups_infos.groups_query_args
|
||||||
|
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(page_title="Import des photos des étudiants"),
|
||||||
context, REQUEST, page_title="Import des photos des étudiants"
|
|
||||||
),
|
|
||||||
"""<h2 class="formsemestre">Téléchargement des photos des étudiants</h2>
|
"""<h2 class="formsemestre">Téléchargement des photos des étudiants</h2>
|
||||||
<p><b>Vous pouvez aussi charger les photos individuellement via la fiche de chaque étudiant (menu "Etudiant" / "Changer la photo").</b></p>
|
<p><b>Vous pouvez aussi charger les photos individuellement via la fiche de chaque étudiant (menu "Etudiant" / "Changer la photo").</b></p>
|
||||||
<p class="help">Cette page permet de charger en une seule fois les photos de plusieurs étudiants.<br/>
|
<p class="help">Cette page permet de charger en une seule fois les photos de plusieurs étudiants.<br/>
|
||||||
|
@ -298,8 +298,6 @@ def user_info_page(context, user_name=None, REQUEST=None):
|
|||||||
raise ScoValueError("invalid user_name")
|
raise ScoValueError("invalid user_name")
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title="Utilisateur %s" % user.user_name,
|
page_title="Utilisateur %s" % user.user_name,
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
@ -868,9 +868,7 @@ def confirm_dialog(
|
|||||||
H.append('<p class="help">' + helpmsg + "</p>")
|
H.append('<p class="help">' + helpmsg + "</p>")
|
||||||
if add_headers and REQUEST:
|
if add_headers and REQUEST:
|
||||||
return (
|
return (
|
||||||
html_sco_header.sco_header(context, REQUEST)
|
html_sco_header.sco_header() + "\n".join(H) + html_sco_header.sco_footer()
|
||||||
+ "\n".join(H)
|
|
||||||
+ html_sco_header.sco_footer()
|
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
return "\n".join(H)
|
return "\n".join(H)
|
||||||
|
@ -136,8 +136,6 @@ def index_html(context, REQUEST=None):
|
|||||||
|
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title="Gestion des absences",
|
page_title="Gestion des absences",
|
||||||
cssstyles=["css/calabs.css"],
|
cssstyles=["css/calabs.css"],
|
||||||
javascripts=["js/calabs.js"],
|
javascripts=["js/calabs.js"],
|
||||||
@ -956,8 +954,6 @@ def EtatAbsencesGr(
|
|||||||
html_sortable=True,
|
html_sortable=True,
|
||||||
html_class="table_leftalign",
|
html_class="table_leftalign",
|
||||||
html_header=html_sco_header.sco_header(
|
html_header=html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title=title,
|
page_title=title,
|
||||||
init_qtip=True,
|
init_qtip=True,
|
||||||
javascripts=["js/etud_info.js"],
|
javascripts=["js/etud_info.js"],
|
||||||
@ -1151,7 +1147,7 @@ def AddBilletAbsenceForm(context, etudid, REQUEST=None):
|
|||||||
etud = sco_etud.get_etud_info(etudid=etudid, filled=1, REQUEST=REQUEST)[0]
|
etud = sco_etud.get_etud_info(etudid=etudid, filled=1, REQUEST=REQUEST)[0]
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context, REQUEST, page_title="Billet d'absence de %s" % etud["nomprenom"]
|
page_title="Billet d'absence de %s" % etud["nomprenom"]
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
tf = TrivialFormulator(
|
tf = TrivialFormulator(
|
||||||
@ -1292,9 +1288,7 @@ def listeBillets(context, REQUEST=None):
|
|||||||
tab = _tableBillets(context, billets)
|
tab = _tableBillets(context, billets)
|
||||||
T = tab.html()
|
T = tab.html()
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(page_title="Billet d'absence non traités"),
|
||||||
context, REQUEST, page_title="Billet d'absence non traités"
|
|
||||||
),
|
|
||||||
"<h2>Billets d'absence en attente de traitement (%d)</h2>" % len(billets),
|
"<h2>Billets d'absence en attente de traitement (%d)</h2>" % len(billets),
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -1425,8 +1419,6 @@ def ProcessBilletAbsenceForm(context, billet_id, REQUEST=None):
|
|||||||
|
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title="Traitement billet d'absence de %s" % etud["nomprenom"],
|
page_title="Traitement billet d'absence de %s" % etud["nomprenom"],
|
||||||
),
|
),
|
||||||
'<h2>Traitement du billet %s : <a class="discretelink" href="%s">%s</a></h2>'
|
'<h2>Traitement du billet %s : <a class="discretelink" href="%s">%s</a></h2>'
|
||||||
|
@ -56,8 +56,7 @@ import calendar
|
|||||||
|
|
||||||
def entreprise_header(context, REQUEST=None, page_title=""):
|
def entreprise_header(context, REQUEST=None, page_title=""):
|
||||||
"common header for all Entreprises pages"
|
"common header for all Entreprises pages"
|
||||||
return html_sco_header.sco_header(
|
return html_sco_header.sco_header( page_title=page_title
|
||||||
context, REQUEST, container=context, page_title=page_title
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -78,7 +77,7 @@ def sidebar(REQUEST):
|
|||||||
H = [
|
H = [
|
||||||
"""<div id="sidebar-container">
|
"""<div id="sidebar-container">
|
||||||
<div class="sidebar">""",
|
<div class="sidebar">""",
|
||||||
html_sidebar.sidebar_common(REQUEST),
|
html_sidebar.sidebar_common(),
|
||||||
"""<h2 class="insidebar"><a href="%(ScoURL)s/Entreprises" class="sidebar">Entreprises</a></h2>
|
"""<h2 class="insidebar"><a href="%(ScoURL)s/Entreprises" class="sidebar">Entreprises</a></h2>
|
||||||
<ul class="insidebar">"""
|
<ul class="insidebar">"""
|
||||||
% params,
|
% params,
|
||||||
|
@ -237,11 +237,7 @@ sco_publish(
|
|||||||
sco_formsemestre_status.formsemestre_description,
|
sco_formsemestre_status.formsemestre_description,
|
||||||
Permission.ScoView,
|
Permission.ScoView,
|
||||||
)
|
)
|
||||||
sco_publish(
|
|
||||||
"/formsemestre_status_menubar",
|
|
||||||
sco_formsemestre_status.formsemestre_status_menubar,
|
|
||||||
Permission.ScoView,
|
|
||||||
)
|
|
||||||
sco_publish(
|
sco_publish(
|
||||||
"/formation_create",
|
"/formation_create",
|
||||||
sco_edit_formation.formation_create,
|
sco_edit_formation.formation_create,
|
||||||
@ -384,9 +380,7 @@ def index_html(context, REQUEST=None):
|
|||||||
editable = REQUEST.AUTHENTICATED_USER.has_permission(Permission.ScoChangeFormation)
|
editable = REQUEST.AUTHENTICATED_USER.has_permission(Permission.ScoChangeFormation)
|
||||||
|
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(page_title="Programmes formations"),
|
||||||
context, REQUEST, page_title="Programmes formations"
|
|
||||||
),
|
|
||||||
"""<h2>Programmes pédagogiques</h2>
|
"""<h2>Programmes pédagogiques</h2>
|
||||||
""",
|
""",
|
||||||
]
|
]
|
||||||
@ -1325,7 +1319,7 @@ def formsemestre_desinscription(
|
|||||||
)
|
)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
html_sco_header.sco_header(context, REQUEST)
|
html_sco_header.sco_header()
|
||||||
+ '<p>Etudiant désinscrit !</p><p><a class="stdlink" href="%s">retour à la fiche</a>'
|
+ '<p>Etudiant désinscrit !</p><p><a class="stdlink" href="%s">retour à la fiche</a>'
|
||||||
% url_for("scolar.ficheEtud", scodoc_dept=g.scodoc_dept, etudid=etudid)
|
% url_for("scolar.ficheEtud", scodoc_dept=g.scodoc_dept, etudid=etudid)
|
||||||
+ html_sco_header.sco_footer()
|
+ html_sco_header.sco_footer()
|
||||||
@ -1527,8 +1521,6 @@ 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":
|
||||||
H = html_sco_header.sco_header(
|
H = html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
cssstyles=["css/verticalhisto.css"],
|
cssstyles=["css/verticalhisto.css"],
|
||||||
javascripts=["js/etud_info.js"],
|
javascripts=["js/etud_info.js"],
|
||||||
init_qtip=True,
|
init_qtip=True,
|
||||||
@ -1730,7 +1722,7 @@ def formsemestre_bulletins_mailetuds(
|
|||||||
nt = sco_cache.NotesTableCache.get(formsemestre_id) # > get_etudids
|
nt = sco_cache.NotesTableCache.get(formsemestre_id) # > get_etudids
|
||||||
etudids = nt.get_etudids()
|
etudids = nt.get_etudids()
|
||||||
#
|
#
|
||||||
if not sco_bulletins.can_send_bulletin_by_mail(context, formsemestre_id, REQUEST):
|
if not sco_bulletins.can_send_bulletin_by_mail(context, formsemestre_id):
|
||||||
raise AccessDenied("vous n'avez pas le droit d'envoyer les bulletins")
|
raise AccessDenied("vous n'avez pas le droit d'envoyer les bulletins")
|
||||||
# Confirmation dialog
|
# Confirmation dialog
|
||||||
if not dialog_confirmed:
|
if not dialog_confirmed:
|
||||||
@ -1764,7 +1756,7 @@ def formsemestre_bulletins_mailetuds(
|
|||||||
nb_send += 1
|
nb_send += 1
|
||||||
#
|
#
|
||||||
return (
|
return (
|
||||||
html_sco_header.sco_header(context, REQUEST)
|
html_sco_header.sco_header()
|
||||||
+ '<p>%d bulletins sur %d envoyés par mail !</p><p><a class="stdlink" href="formsemestre_status?formsemestre_id=%s">continuer</a></p>'
|
+ '<p>%d bulletins sur %d envoyés par mail !</p><p><a class="stdlink" href="formsemestre_status?formsemestre_id=%s">continuer</a></p>'
|
||||||
% (nb_send, len(etudids), formsemestre_id)
|
% (nb_send, len(etudids), formsemestre_id)
|
||||||
+ html_sco_header.sco_footer()
|
+ html_sco_header.sco_footer()
|
||||||
@ -1829,7 +1821,7 @@ def appreciation_add_form(
|
|||||||
else:
|
else:
|
||||||
a = "Ajout"
|
a = "Ajout"
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(context, REQUEST)
|
html_sco_header.sco_header()
|
||||||
+ "<h2>%s d'une appréciation sur %s</h2>" % (a, etud["nomprenom"])
|
+ "<h2>%s d'une appréciation sur %s</h2>" % (a, etud["nomprenom"])
|
||||||
]
|
]
|
||||||
F = html_sco_header.sco_footer()
|
F = html_sco_header.sco_footer()
|
||||||
@ -1906,9 +1898,7 @@ def formsemestre_validation_etud_form(
|
|||||||
REQUEST=None,
|
REQUEST=None,
|
||||||
):
|
):
|
||||||
"Formulaire choix jury pour un étudiant"
|
"Formulaire choix jury pour un étudiant"
|
||||||
readonly = not sco_permissions_check.can_validate_sem(
|
readonly = not sco_permissions_check.can_validate_sem(formsemestre_id)
|
||||||
context, REQUEST, formsemestre_id
|
|
||||||
)
|
|
||||||
return sco_formsemestre_validation.formsemestre_validation_etud_form(
|
return sco_formsemestre_validation.formsemestre_validation_etud_form(
|
||||||
context,
|
context,
|
||||||
formsemestre_id,
|
formsemestre_id,
|
||||||
@ -1935,7 +1925,7 @@ def formsemestre_validation_etud(
|
|||||||
REQUEST=None,
|
REQUEST=None,
|
||||||
):
|
):
|
||||||
"Enregistre choix jury pour un étudiant"
|
"Enregistre choix jury pour un étudiant"
|
||||||
if not sco_permissions_check.can_validate_sem(context, REQUEST, formsemestre_id):
|
if not sco_permissions_check.can_validate_sem(formsemestre_id):
|
||||||
return scu.confirm_dialog(
|
return scu.confirm_dialog(
|
||||||
context,
|
context,
|
||||||
message="<p>Opération non autorisée pour %s</h2>"
|
message="<p>Opération non autorisée pour %s</h2>"
|
||||||
@ -1971,7 +1961,7 @@ def formsemestre_validation_etud_manu(
|
|||||||
REQUEST=None,
|
REQUEST=None,
|
||||||
):
|
):
|
||||||
"Enregistre choix jury pour un étudiant"
|
"Enregistre choix jury pour un étudiant"
|
||||||
if not sco_permissions_check.can_validate_sem(context, REQUEST, formsemestre_id):
|
if not sco_permissions_check.can_validate_sem(formsemestre_id):
|
||||||
return scu.confirm_dialog(
|
return scu.confirm_dialog(
|
||||||
context,
|
context,
|
||||||
message="<p>Opération non autorisée pour %s</h2>"
|
message="<p>Opération non autorisée pour %s</h2>"
|
||||||
@ -2001,7 +1991,7 @@ def formsemestre_validate_previous_ue(
|
|||||||
context, formsemestre_id, etudid=None, REQUEST=None
|
context, formsemestre_id, etudid=None, REQUEST=None
|
||||||
):
|
):
|
||||||
"Form. saisie UE validée hors ScoDoc "
|
"Form. saisie UE validée hors ScoDoc "
|
||||||
if not sco_permissions_check.can_validate_sem(context, REQUEST, formsemestre_id):
|
if not sco_permissions_check.can_validate_sem(formsemestre_id):
|
||||||
return scu.confirm_dialog(
|
return scu.confirm_dialog(
|
||||||
context,
|
context,
|
||||||
message="<p>Opération non autorisée pour %s</h2>"
|
message="<p>Opération non autorisée pour %s</h2>"
|
||||||
@ -2029,7 +2019,7 @@ def formsemestre_ext_edit_ue_validations(
|
|||||||
context, formsemestre_id, etudid=None, REQUEST=None
|
context, formsemestre_id, etudid=None, REQUEST=None
|
||||||
):
|
):
|
||||||
"Form. edition UE semestre extérieur"
|
"Form. edition UE semestre extérieur"
|
||||||
if not sco_permissions_check.can_validate_sem(context, REQUEST, formsemestre_id):
|
if not sco_permissions_check.can_validate_sem(formsemestre_id):
|
||||||
return scu.confirm_dialog(
|
return scu.confirm_dialog(
|
||||||
context,
|
context,
|
||||||
message="<p>Opération non autorisée pour %s</h2>"
|
message="<p>Opération non autorisée pour %s</h2>"
|
||||||
@ -2054,7 +2044,7 @@ sco_publish(
|
|||||||
@scodoc7func(context)
|
@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 sco_permissions_check.can_validate_sem(context, REQUEST, formsemestre_id):
|
if not sco_permissions_check.can_validate_sem(formsemestre_id):
|
||||||
return scu.confirm_dialog(
|
return scu.confirm_dialog(
|
||||||
context,
|
context,
|
||||||
message="<p>Opération non autorisée pour %s</h2>"
|
message="<p>Opération non autorisée pour %s</h2>"
|
||||||
@ -2072,7 +2062,7 @@ def etud_ue_suppress_validation(context, etudid, formsemestre_id, ue_id, REQUEST
|
|||||||
@scodoc7func(context)
|
@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 sco_permissions_check.can_validate_sem(context, REQUEST, formsemestre_id):
|
if not sco_permissions_check.can_validate_sem(formsemestre_id):
|
||||||
return scu.confirm_dialog(
|
return scu.confirm_dialog(
|
||||||
context,
|
context,
|
||||||
message="<p>Opération non autorisée pour %s</h2>"
|
message="<p>Opération non autorisée pour %s</h2>"
|
||||||
@ -2091,7 +2081,7 @@ def formsemestre_validation_auto(context, formsemestre_id, REQUEST):
|
|||||||
@scodoc7func(context)
|
@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 sco_permissions_check.can_validate_sem(context, REQUEST, formsemestre_id):
|
if not sco_permissions_check.can_validate_sem(formsemestre_id):
|
||||||
return scu.confirm_dialog(
|
return scu.confirm_dialog(
|
||||||
context,
|
context,
|
||||||
message="<p>Opération non autorisée pour %s</h2>"
|
message="<p>Opération non autorisée pour %s</h2>"
|
||||||
@ -2112,7 +2102,7 @@ def formsemestre_validation_suppress_etud(
|
|||||||
context, formsemestre_id, etudid, REQUEST=None, dialog_confirmed=False
|
context, formsemestre_id, etudid, REQUEST=None, dialog_confirmed=False
|
||||||
):
|
):
|
||||||
"""Suppression des decisions de jury pour un etudiant."""
|
"""Suppression des decisions de jury pour un etudiant."""
|
||||||
if not sco_permissions_check.can_validate_sem(context, REQUEST, formsemestre_id):
|
if not sco_permissions_check.can_validate_sem(formsemestre_id):
|
||||||
return scu.confirm_dialog(
|
return scu.confirm_dialog(
|
||||||
context,
|
context,
|
||||||
message="<p>Opération non autorisée pour %s</h2>"
|
message="<p>Opération non autorisée pour %s</h2>"
|
||||||
|
@ -155,10 +155,7 @@ def about(context, REQUEST):
|
|||||||
)
|
)
|
||||||
d = ""
|
d = ""
|
||||||
return (
|
return (
|
||||||
html_sco_header.sco_header(context, REQUEST)
|
html_sco_header.sco_header() + "\n".join(H) + d + html_sco_header.sco_footer()
|
||||||
+ "\n".join(H)
|
|
||||||
+ d
|
|
||||||
+ html_sco_header.sco_footer()
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -519,9 +516,7 @@ def doAddAnnotation(context, etudid, comment, REQUEST):
|
|||||||
@scodoc7func(context)
|
@scodoc7func(context)
|
||||||
def doSuppressAnnotation(context, etudid, annotation_id, REQUEST):
|
def doSuppressAnnotation(context, etudid, annotation_id, REQUEST):
|
||||||
"""Suppression annotation."""
|
"""Suppression annotation."""
|
||||||
if not sco_permissions_check.can_suppress_annotation(
|
if not sco_permissions_check.can_suppress_annotation(annotation_id):
|
||||||
context, annotation_id, REQUEST
|
|
||||||
):
|
|
||||||
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
||||||
|
|
||||||
cnx = ndb.GetDBConnexion()
|
cnx = ndb.GetDBConnexion()
|
||||||
@ -560,7 +555,7 @@ def formChangeCoordonnees(context, etudid, REQUEST):
|
|||||||
% etud
|
% etud
|
||||||
]
|
]
|
||||||
header = html_sco_header.sco_header(
|
header = html_sco_header.sco_header(
|
||||||
context, REQUEST, page_title="Changement adresse de %(nomprenom)s" % etud
|
page_title="Changement adresse de %(nomprenom)s" % etud
|
||||||
)
|
)
|
||||||
|
|
||||||
tf = TrivialFormulator(
|
tf = TrivialFormulator(
|
||||||
@ -722,7 +717,7 @@ def etud_photo_orig_page(context, etudid=None, REQUEST=None):
|
|||||||
"Page with photo in orig. size"
|
"Page with photo in orig. size"
|
||||||
etud = sco_etud.get_etud_info(etudid=etudid, filled=1, REQUEST=REQUEST)[0]
|
etud = sco_etud.get_etud_info(etudid=etudid, filled=1, REQUEST=REQUEST)[0]
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(context, REQUEST, page_title=etud["nomprenom"]),
|
html_sco_header.sco_header(page_title=etud["nomprenom"]),
|
||||||
"<h2>%s</h2>" % etud["nomprenom"],
|
"<h2>%s</h2>" % etud["nomprenom"],
|
||||||
'<div><a href="%s">'
|
'<div><a href="%s">'
|
||||||
% url_for("scolar.ficheEtud", scodoc_dept=g.scodoc_dept, etudid=etudid),
|
% url_for("scolar.ficheEtud", scodoc_dept=g.scodoc_dept, etudid=etudid),
|
||||||
@ -744,7 +739,7 @@ def formChangePhoto(context, etudid=None, REQUEST=None):
|
|||||||
else:
|
else:
|
||||||
etud["photoloc"] = "externe"
|
etud["photoloc"] = "externe"
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(context, REQUEST, page_title="Changement de photo"),
|
html_sco_header.sco_header(page_title="Changement de photo"),
|
||||||
"""<h2>Changement de la photo de %(nomprenom)s</h2>
|
"""<h2>Changement de la photo de %(nomprenom)s</h2>
|
||||||
<p>Photo actuelle (%(photoloc)s):
|
<p>Photo actuelle (%(photoloc)s):
|
||||||
"""
|
"""
|
||||||
@ -868,8 +863,6 @@ def _formDem_of_Def(
|
|||||||
etud["operation_name"] = operation_name
|
etud["operation_name"] = operation_name
|
||||||
#
|
#
|
||||||
header = html_sco_header.sco_header(
|
header = html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title="%(operation_name)s de %(nomprenom)s (du semestre %(semtitre)s)"
|
page_title="%(operation_name)s de %(nomprenom)s (du semestre %(semtitre)s)"
|
||||||
% etud,
|
% etud,
|
||||||
)
|
)
|
||||||
@ -1101,7 +1094,7 @@ def etudident_edit_form(context, REQUEST=None):
|
|||||||
|
|
||||||
def _etudident_create_or_edit_form(context, REQUEST, edit):
|
def _etudident_create_or_edit_form(context, REQUEST, edit):
|
||||||
"Le formulaire HTML"
|
"Le formulaire HTML"
|
||||||
H = [html_sco_header.sco_header(context, REQUEST, init_jquery_ui=True)]
|
H = [html_sco_header.sco_header(init_jquery_ui=True)]
|
||||||
F = html_sco_header.sco_footer()
|
F = html_sco_header.sco_footer()
|
||||||
etudid = REQUEST.form.get("etudid", None)
|
etudid = REQUEST.form.get("etudid", None)
|
||||||
cnx = ndb.GetDBConnexion()
|
cnx = ndb.GetDBConnexion()
|
||||||
@ -1740,7 +1733,7 @@ def form_students_import_excel(context, REQUEST, formsemestre_id=None):
|
|||||||
if sem and sem["etat"] != "1":
|
if sem and sem["etat"] != "1":
|
||||||
raise ScoValueError("Modification impossible: semestre verrouille")
|
raise ScoValueError("Modification impossible: semestre verrouille")
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(context, REQUEST, page_title="Import etudiants"),
|
html_sco_header.sco_header(page_title="Import etudiants"),
|
||||||
"""<h2 class="formsemestre">Téléchargement d\'une nouvelle liste d\'etudiants</h2>
|
"""<h2 class="formsemestre">Téléchargement d\'une nouvelle liste d\'etudiants</h2>
|
||||||
<div style="color: red">
|
<div style="color: red">
|
||||||
<p>A utiliser pour importer de <b>nouveaux</b> étudiants (typiquement au
|
<p>A utiliser pour importer de <b>nouveaux</b> étudiants (typiquement au
|
||||||
@ -1886,9 +1879,7 @@ def import_generate_excel_sample(context, REQUEST, with_codesemestre="1"):
|
|||||||
@scodoc7func(context)
|
@scodoc7func(context)
|
||||||
def import_generate_admission_sample(context, REQUEST, formsemestre_id):
|
def import_generate_admission_sample(context, REQUEST, formsemestre_id):
|
||||||
"une feuille excel pour importation données admissions"
|
"une feuille excel pour importation données admissions"
|
||||||
group = sco_groups.get_group(
|
group = sco_groups.get_group(context, sco_groups.get_default_group(formsemestre_id))
|
||||||
context, sco_groups.get_default_group(context, formsemestre_id)
|
|
||||||
)
|
|
||||||
fmt = sco_import_etuds.sco_import_format()
|
fmt = sco_import_etuds.sco_import_format()
|
||||||
data = sco_import_etuds.sco_import_generate_excel_sample(
|
data = sco_import_etuds.sco_import_generate_excel_sample(
|
||||||
fmt,
|
fmt,
|
||||||
@ -1913,8 +1904,6 @@ def form_students_import_infos_admissions(context, REQUEST, formsemestre_id=None
|
|||||||
# autorise juste l'export
|
# autorise juste l'export
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(
|
||||||
context,
|
|
||||||
REQUEST,
|
|
||||||
page_title="Export données admissions (Parcoursup ou autre)",
|
page_title="Export données admissions (Parcoursup ou autre)",
|
||||||
),
|
),
|
||||||
"""<h2 class="formsemestre">Téléchargement des informations sur l'admission des étudiants</h2>
|
"""<h2 class="formsemestre">Téléchargement des informations sur l'admission des étudiants</h2>
|
||||||
@ -1929,9 +1918,7 @@ def form_students_import_infos_admissions(context, REQUEST, formsemestre_id=None
|
|||||||
|
|
||||||
# On a le droit d'importer:
|
# On a le droit d'importer:
|
||||||
H = [
|
H = [
|
||||||
html_sco_header.sco_header(
|
html_sco_header.sco_header(page_title="Import données admissions Parcoursup"),
|
||||||
context, REQUEST, page_title="Import données admissions Parcoursup"
|
|
||||||
),
|
|
||||||
"""<h2 class="formsemestre">Téléchargement des informations sur l'admission des étudiants depuis feuilles import Parcoursup</h2>
|
"""<h2 class="formsemestre">Téléchargement des informations sur l'admission des étudiants depuis feuilles import Parcoursup</h2>
|
||||||
<div style="color: red">
|
<div style="color: red">
|
||||||
<p>A utiliser pour renseigner les informations sur l'origine des étudiants (lycées, bac, etc). Ces informations sont facultatives mais souvent utiles pour mieux connaitre les étudiants et aussi pour effectuer des statistiques (résultats suivant le type de bac...). Les données sont affichées sur les fiches individuelles des étudiants.</p>
|
<p>A utiliser pour renseigner les informations sur l'origine des étudiants (lycées, bac, etc). Ces informations sont facultatives mais souvent utiles pour mieux connaitre les étudiants et aussi pour effectuer des statistiques (résultats suivant le type de bac...). Les données sont affichées sur les fiches individuelles des étudiants.</p>
|
||||||
|
@ -98,7 +98,7 @@ def create_user_form(context, REQUEST, user_name=None, edit=0):
|
|||||||
auth_dept = current_user.dept
|
auth_dept = current_user.dept
|
||||||
initvalues = {}
|
initvalues = {}
|
||||||
edit = int(edit)
|
edit = int(edit)
|
||||||
H = [html_sco_header.sco_header(context, REQUEST, bodyOnLoad="init_tf_form('')")]
|
H = [html_sco_header.sco_header(bodyOnLoad="init_tf_form('')")]
|
||||||
F = html_sco_header.sco_footer()
|
F = html_sco_header.sco_footer()
|
||||||
if edit:
|
if edit:
|
||||||
if not user_name:
|
if not user_name:
|
||||||
@ -503,7 +503,7 @@ def form_change_password(REQUEST, user_name=None):
|
|||||||
u = current_user
|
u = current_user
|
||||||
else:
|
else:
|
||||||
u = User.query.filter_by(user_name=user_name).first()
|
u = User.query.filter_by(user_name=user_name).first()
|
||||||
H = [html_sco_header.sco_header(context, REQUEST, user_check=False)]
|
H = [html_sco_header.sco_header(user_check=False)]
|
||||||
F = html_sco_header.sco_footer()
|
F = html_sco_header.sco_footer()
|
||||||
# check access
|
# check access
|
||||||
if not can_handle_passwd(u):
|
if not can_handle_passwd(u):
|
||||||
@ -586,7 +586,7 @@ def change_password(user_name, password, password2, REQUEST):
|
|||||||
+ '<a href="%s" class="stdlink">Continuer</a></body></html>'
|
+ '<a href="%s" class="stdlink">Continuer</a></body></html>'
|
||||||
% scu.ScoURL()
|
% scu.ScoURL()
|
||||||
)
|
)
|
||||||
return html_sco_header.sco_header(context, REQUEST) + "\n".join(H) + F
|
return html_sco_header.sco_header() + "\n".join(H) + F
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/delete_user_form", methods=["GET", "POST"])
|
@bp.route("/delete_user_form", methods=["GET", "POST"])
|
||||||
@ -599,7 +599,7 @@ def delete_user_form(REQUEST, user_name, dialog_confirmed=False):
|
|||||||
if not can_handle_passwd(u):
|
if not can_handle_passwd(u):
|
||||||
# access denied (or non existent user)
|
# access denied (or non existent user)
|
||||||
return (
|
return (
|
||||||
html_sco_header.sco_header(context, REQUEST, user_check=False)
|
html_sco_header.sco_header(user_check=False)
|
||||||
+ "<p>Vous n'avez pas la permission de supprimer cet utilisateur</p>"
|
+ "<p>Vous n'avez pas la permission de supprimer cet utilisateur</p>"
|
||||||
+ html_sco_header.sco_footer()
|
+ html_sco_header.sco_footer()
|
||||||
)
|
)
|
||||||
|
@ -233,7 +233,7 @@ class ScoFake(object):
|
|||||||
etapes=None,
|
etapes=None,
|
||||||
responsables=["bach"],
|
responsables=["bach"],
|
||||||
):
|
):
|
||||||
oid = sco_formsemestre.do_formsemestre_create(self.context, locals(), REQUEST)
|
oid = sco_formsemestre.do_formsemestre_create(locals())
|
||||||
# oids = self.context.do_formsemestre_list(args={"formsemestre_id": oid})
|
# oids = self.context.do_formsemestre_list(args={"formsemestre_id": oid})
|
||||||
oids = sco_formsemestre.do_formsemestre_list(
|
oids = sco_formsemestre.do_formsemestre_list(
|
||||||
self.context, args={"formsemestre_id": oid}
|
self.context, args={"formsemestre_id": oid}
|
||||||
|
@ -203,9 +203,7 @@ _ = sco_groups.partition_create(
|
|||||||
REQUEST=REQUEST,
|
REQUEST=REQUEST,
|
||||||
)
|
)
|
||||||
li1 = sco_groups.get_partitions_list(context.Scolarite, sem["formsemestre_id"])
|
li1 = sco_groups.get_partitions_list(context.Scolarite, sem["formsemestre_id"])
|
||||||
_ = sco_groups.createGroup(
|
_ = sco_groups.createGroup(context.Scolarite, li1[0]["partition_id"], "Groupe 1")
|
||||||
context.Scolarite, li1[0]["partition_id"], "Groupe 1", REQUEST=REQUEST
|
|
||||||
)
|
|
||||||
|
|
||||||
# --- Affectation des élèves dans des groupes
|
# --- Affectation des élèves dans des groupes
|
||||||
|
|
||||||
|
@ -90,9 +90,7 @@ _ = sco_groups.partition_create(
|
|||||||
REQUEST=REQUEST,
|
REQUEST=REQUEST,
|
||||||
)
|
)
|
||||||
li1 = sco_groups.get_partitions_list(context.Scolarite, sem["formsemestre_id"])
|
li1 = sco_groups.get_partitions_list(context.Scolarite, sem["formsemestre_id"])
|
||||||
_ = sco_groups.createGroup(
|
_ = sco_groups.createGroup(context.Scolarite, li1[0]["partition_id"], "Groupe 1")
|
||||||
context.Scolarite, li1[0]["partition_id"], "Groupe 1", REQUEST=REQUEST
|
|
||||||
)
|
|
||||||
|
|
||||||
# --- Affectation des élèves dans des groupes
|
# --- Affectation des élèves dans des groupes
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import sco_formations
|
import sco_formations
|
||||||
import json
|
import json
|
||||||
import random
|
import random
|
||||||
|
|
||||||
# La variable context est définie par le script de lancement
|
# La variable context est définie par le script de lancement
|
||||||
# l'affecte ainsi pour évietr les warnins pylint:
|
# l'affecte ainsi pour évietr les warnins pylint:
|
||||||
context = context # pylint: disable=undefined-variable
|
context = context # pylint: disable=undefined-variable
|
||||||
@ -56,14 +57,14 @@ sem4 = G.create_formsemestre(
|
|||||||
|
|
||||||
li_module = context.Notes.do_module_list()
|
li_module = context.Notes.do_module_list()
|
||||||
mods_imp = []
|
mods_imp = []
|
||||||
for mod in li_module :
|
for mod in li_module:
|
||||||
if mod["semestre_id"] == 1 :
|
if mod["semestre_id"] == 1:
|
||||||
formsemestre_id = sem1["formsemestre_id"]
|
formsemestre_id = sem1["formsemestre_id"]
|
||||||
elif mod["semestre_id"] == 2 :
|
elif mod["semestre_id"] == 2:
|
||||||
formsemestre_id = sem2["formsemestre_id"]
|
formsemestre_id = sem2["formsemestre_id"]
|
||||||
elif mod["semestre_id"] == 3 :
|
elif mod["semestre_id"] == 3:
|
||||||
formsemestre_id = sem3["formsemestre_id"]
|
formsemestre_id = sem3["formsemestre_id"]
|
||||||
else :
|
else:
|
||||||
formsemestre_id = sem4["formsemestre_id"]
|
formsemestre_id = sem4["formsemestre_id"]
|
||||||
|
|
||||||
mi = G.create_moduleimpl(
|
mi = G.create_moduleimpl(
|
||||||
@ -75,7 +76,7 @@ for mod in li_module :
|
|||||||
|
|
||||||
# --- Création des étudiants
|
# --- Création des étudiants
|
||||||
|
|
||||||
etuds=[]
|
etuds = []
|
||||||
for nom, prenom in [
|
for nom, prenom in [
|
||||||
("Semestre11", "EtudiantNumero1"),
|
("Semestre11", "EtudiantNumero1"),
|
||||||
("Semestre12", "EtudiantNumero2"),
|
("Semestre12", "EtudiantNumero2"),
|
||||||
@ -84,8 +85,8 @@ for nom, prenom in [
|
|||||||
("Semestre35", "EtudiantNumero5"),
|
("Semestre35", "EtudiantNumero5"),
|
||||||
("Semestre36", "EtudiantNumero6"),
|
("Semestre36", "EtudiantNumero6"),
|
||||||
("Semestre47", "EtudiantNumero7"),
|
("Semestre47", "EtudiantNumero7"),
|
||||||
("Semestre48", "EtudiantNumero8")
|
("Semestre48", "EtudiantNumero8"),
|
||||||
] :
|
]:
|
||||||
etud = G.create_etud(
|
etud = G.create_etud(
|
||||||
nom=nom,
|
nom=nom,
|
||||||
prenom=prenom,
|
prenom=prenom,
|
||||||
@ -108,16 +109,24 @@ for etud in etuds[6:]:
|
|||||||
|
|
||||||
# --- Création d'une évaluation pour chaque UE
|
# --- Création d'une évaluation pour chaque UE
|
||||||
|
|
||||||
lim_sem1 = sco_moduleimpl.do_moduleimpl_list(context.Notes, formsemestre_id=sem1["formsemestre_id"], REQUEST=REQUEST)
|
lim_sem1 = sco_moduleimpl.do_moduleimpl_list(
|
||||||
|
context.Notes, formsemestre_id=sem1["formsemestre_id"], REQUEST=REQUEST
|
||||||
|
)
|
||||||
load_lim_sem1 = json.loads(lim_sem1)
|
load_lim_sem1 = json.loads(lim_sem1)
|
||||||
|
|
||||||
lim_sem2 = sco_moduleimpl.do_moduleimpl_list(context.Notes, formsemestre_id=sem2["formsemestre_id"], REQUEST=REQUEST)
|
lim_sem2 = sco_moduleimpl.do_moduleimpl_list(
|
||||||
|
context.Notes, formsemestre_id=sem2["formsemestre_id"], REQUEST=REQUEST
|
||||||
|
)
|
||||||
load_lim_sem2 = json.loads(lim_sem2)
|
load_lim_sem2 = json.loads(lim_sem2)
|
||||||
|
|
||||||
lim_sem3 = sco_moduleimpl.do_moduleimpl_list(context.Notes, formsemestre_id=sem3["formsemestre_id"], REQUEST=REQUEST)
|
lim_sem3 = sco_moduleimpl.do_moduleimpl_list(
|
||||||
|
context.Notes, formsemestre_id=sem3["formsemestre_id"], REQUEST=REQUEST
|
||||||
|
)
|
||||||
load_lim_sem3 = json.loads(lim_sem3)
|
load_lim_sem3 = json.loads(lim_sem3)
|
||||||
|
|
||||||
lim_sem4 = sco_moduleimpl.do_moduleimpl_list(context.Notes, formsemestre_id=sem4["formsemestre_id"], REQUEST=REQUEST)
|
lim_sem4 = sco_moduleimpl.do_moduleimpl_list(
|
||||||
|
context.Notes, formsemestre_id=sem4["formsemestre_id"], REQUEST=REQUEST
|
||||||
|
)
|
||||||
load_lim_sem4 = json.loads(lim_sem4)
|
load_lim_sem4 = json.loads(lim_sem4)
|
||||||
|
|
||||||
|
|
||||||
@ -132,45 +141,74 @@ for moduleimpl_id, jour, description, coefficient in [
|
|||||||
(load_lim_sem4[3]["moduleimpl_id"], "03/02/2021", "InterroTestSemestre4", 1.0),
|
(load_lim_sem4[3]["moduleimpl_id"], "03/02/2021", "InterroTestSemestre4", 1.0),
|
||||||
(load_lim_sem4[9]["moduleimpl_id"], "04/02/2021", "InterroTestSemestre4", 1.0),
|
(load_lim_sem4[9]["moduleimpl_id"], "04/02/2021", "InterroTestSemestre4", 1.0),
|
||||||
(load_lim_sem4[13]["moduleimpl_id"], "05/02/2021", "InterroTestSemestre4", 1.0),
|
(load_lim_sem4[13]["moduleimpl_id"], "05/02/2021", "InterroTestSemestre4", 1.0),
|
||||||
] :
|
]:
|
||||||
e = G.create_evaluation(moduleimpl_id=moduleimpl_id, jour=jour, description=description, coefficient=coefficient)
|
e = G.create_evaluation(
|
||||||
|
moduleimpl_id=moduleimpl_id,
|
||||||
|
jour=jour,
|
||||||
|
description=description,
|
||||||
|
coefficient=coefficient,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
# --- Saisie des notes des étudiants (un élève a 12, un autre a 7 pour chaque semestre)
|
# --- Saisie des notes des étudiants (un élève a 12, un autre a 7 pour chaque semestre)
|
||||||
|
|
||||||
lie1 = context.Notes.do_evaluation_list_in_formsemestre(formsemestre_id=sem1["formsemestre_id"])
|
lie1 = context.Notes.do_evaluation_list_in_formsemestre(
|
||||||
lie2 = context.Notes.do_evaluation_list_in_formsemestre(formsemestre_id=sem2["formsemestre_id"])
|
formsemestre_id=sem1["formsemestre_id"]
|
||||||
lie3 = context.Notes.do_evaluation_list_in_formsemestre(formsemestre_id=sem3["formsemestre_id"])
|
)
|
||||||
lie4 = context.Notes.do_evaluation_list_in_formsemestre(formsemestre_id=sem4["formsemestre_id"])
|
lie2 = context.Notes.do_evaluation_list_in_formsemestre(
|
||||||
|
formsemestre_id=sem2["formsemestre_id"]
|
||||||
|
)
|
||||||
|
lie3 = context.Notes.do_evaluation_list_in_formsemestre(
|
||||||
|
formsemestre_id=sem3["formsemestre_id"]
|
||||||
|
)
|
||||||
|
lie4 = context.Notes.do_evaluation_list_in_formsemestre(
|
||||||
|
formsemestre_id=sem4["formsemestre_id"]
|
||||||
|
)
|
||||||
|
|
||||||
for eval in lie1 :
|
for eval in lie1:
|
||||||
for etud in etuds[:2] :
|
for etud in etuds[:2]:
|
||||||
if etud == etuds[0] :
|
if etud == etuds[0]:
|
||||||
nb_changed, nb_suppress, existing_decisions = G.create_note(evaluation=eval, etud=etud, note=12.0)
|
nb_changed, nb_suppress, existing_decisions = G.create_note(
|
||||||
else :
|
evaluation=eval, etud=etud, note=12.0
|
||||||
nb_changed, nb_suppress, existing_decisions = G.create_note(evaluation=eval, etud=etud, note=7.0)
|
)
|
||||||
|
else:
|
||||||
|
nb_changed, nb_suppress, existing_decisions = G.create_note(
|
||||||
|
evaluation=eval, etud=etud, note=7.0
|
||||||
|
)
|
||||||
|
|
||||||
for eval in lie2 :
|
for eval in lie2:
|
||||||
for etud in etuds[2:4] :
|
for etud in etuds[2:4]:
|
||||||
if etud == etuds[2] :
|
if etud == etuds[2]:
|
||||||
nb_changed, nb_suppress, existing_decisions = G.create_note(evaluation=eval, etud=etud, note=12.0)
|
nb_changed, nb_suppress, existing_decisions = G.create_note(
|
||||||
else :
|
evaluation=eval, etud=etud, note=12.0
|
||||||
nb_changed, nb_suppress, existing_decisions = G.create_note(evaluation=eval, etud=etud, note=7.0)
|
)
|
||||||
|
else:
|
||||||
|
nb_changed, nb_suppress, existing_decisions = G.create_note(
|
||||||
|
evaluation=eval, etud=etud, note=7.0
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
for eval in lie3 :
|
for eval in lie3:
|
||||||
for etud in etuds[4:6] :
|
for etud in etuds[4:6]:
|
||||||
if etud == etuds[4] :
|
if etud == etuds[4]:
|
||||||
nb_changed, nb_suppress, existing_decisions = G.create_note(evaluation=eval, etud=etud, note=12.0)
|
nb_changed, nb_suppress, existing_decisions = G.create_note(
|
||||||
else :
|
evaluation=eval, etud=etud, note=12.0
|
||||||
nb_changed, nb_suppress, existing_decisions = G.create_note(evaluation=eval, etud=etud, note=7.0)
|
)
|
||||||
|
else:
|
||||||
|
nb_changed, nb_suppress, existing_decisions = G.create_note(
|
||||||
|
evaluation=eval, etud=etud, note=7.0
|
||||||
|
)
|
||||||
|
|
||||||
for eval in lie4 :
|
for eval in lie4:
|
||||||
for etud in etuds[6:] :
|
for etud in etuds[6:]:
|
||||||
if etud == etuds[6] :
|
if etud == etuds[6]:
|
||||||
nb_changed, nb_suppress, existing_decisions = G.create_note(evaluation=eval, etud=etud, note=12.0)
|
nb_changed, nb_suppress, existing_decisions = G.create_note(
|
||||||
else :
|
evaluation=eval, etud=etud, note=12.0
|
||||||
nb_changed, nb_suppress, existing_decisions = G.create_note(evaluation=eval, etud=etud, note=7.0)
|
)
|
||||||
|
else:
|
||||||
|
nb_changed, nb_suppress, existing_decisions = G.create_note(
|
||||||
|
evaluation=eval, etud=etud, note=7.0
|
||||||
|
)
|
||||||
|
|
||||||
# --- Département
|
# --- Département
|
||||||
|
|
||||||
@ -184,7 +222,9 @@ load_lif = json.loads(lif)
|
|||||||
assert len(load_lif) == 1
|
assert len(load_lif) == 1
|
||||||
assert load_lif[0]["formation_id"] == f[0]
|
assert load_lif[0]["formation_id"] == f[0]
|
||||||
|
|
||||||
exp = sco_formations.formation_export(context.Notes, formation_id=f[0], format="json", REQUEST=REQUEST)
|
exp = sco_formations.formation_export(
|
||||||
|
context.Notes, formation_id=f[0], format="json", REQUEST=REQUEST
|
||||||
|
)
|
||||||
load_exp = json.loads(exp)
|
load_exp = json.loads(exp)
|
||||||
assert load_exp["acronyme"] == "DUT Info"
|
assert load_exp["acronyme"] == "DUT Info"
|
||||||
assert load_exp["titre_officiel"] == "DUT Informatique"
|
assert load_exp["titre_officiel"] == "DUT Informatique"
|
||||||
@ -192,37 +232,58 @@ assert load_exp["formation_code"] == "FCOD2"
|
|||||||
|
|
||||||
# --- Semestre
|
# --- Semestre
|
||||||
|
|
||||||
li_sem = context.Notes.formsemestre_list(formation_id=f[0], format = "json", REQUEST=REQUEST)
|
li_sem = context.Notes.formsemestre_list(
|
||||||
|
formation_id=f[0], format="json", REQUEST=REQUEST
|
||||||
|
)
|
||||||
load_li_sem = json.loads(li_sem)
|
load_li_sem = json.loads(li_sem)
|
||||||
assert len(load_li_sem) == 4
|
assert len(load_li_sem) == 4
|
||||||
|
|
||||||
# --- Création des groupes
|
# --- Création des groupes
|
||||||
|
|
||||||
_ = sco_groups.partition_create(context.Scolarite, formsemestre_id=sem1["formsemestre_id"], partition_name="Eleve 1ere annee", REQUEST=REQUEST)
|
_ = sco_groups.partition_create(
|
||||||
|
context.Scolarite,
|
||||||
|
formsemestre_id=sem1["formsemestre_id"],
|
||||||
|
partition_name="Eleve 1ere annee",
|
||||||
|
REQUEST=REQUEST,
|
||||||
|
)
|
||||||
|
|
||||||
li1 = sco_groups.get_partitions_list(context.Scolarite, sem1["formsemestre_id"])
|
li1 = sco_groups.get_partitions_list(context.Scolarite, sem1["formsemestre_id"])
|
||||||
|
|
||||||
_ = sco_groups.createGroup(context.Scolarite, li1[0]["partition_id"], "Groupe S1A", REQUEST=REQUEST)
|
_ = sco_groups.createGroup(context.Scolarite, li1[0]["partition_id"], "Groupe S1A")
|
||||||
|
|
||||||
li_grp1 = sco_groups.get_partition_groups(context.Scolarite, li1[0])
|
li_grp1 = sco_groups.get_partition_groups(context.Scolarite, li1[0])
|
||||||
|
|
||||||
for etud in etuds[0:2] :
|
for etud in etuds[0:2]:
|
||||||
sco_groups.set_group(context.Scolarite, etud["etudid"], li_grp1[0]["group_id"])
|
sco_groups.set_group(context.Scolarite, etud["etudid"], li_grp1[0]["group_id"])
|
||||||
|
|
||||||
|
|
||||||
# --- Groupes
|
# --- Groupes
|
||||||
|
|
||||||
li_part = sco_groups.formsemestre_partition_list(context.Scolarite, formsemestre_id=sem1["formsemestre_id"], format = "json", REQUEST=REQUEST)
|
li_part = sco_groups.formsemestre_partition_list(
|
||||||
|
context.Scolarite,
|
||||||
|
formsemestre_id=sem1["formsemestre_id"],
|
||||||
|
format="json",
|
||||||
|
REQUEST=REQUEST,
|
||||||
|
)
|
||||||
load_li_part = json.loads(li_part)
|
load_li_part = json.loads(li_part)
|
||||||
assert len(load_li_part) == 2 # 2 partition (defaut et eleve 1ere annee)
|
assert len(load_li_part) == 2 # 2 partition (defaut et eleve 1ere annee)
|
||||||
assert load_li_part[0]["formsemestre_id"] == sem1["formsemestre_id"]
|
assert load_li_part[0]["formsemestre_id"] == sem1["formsemestre_id"]
|
||||||
assert len(load_li_part[0]["group"]) == 1 # 2 groupes S1A
|
assert len(load_li_part[0]["group"]) == 1 # 2 groupes S1A
|
||||||
assert load_li_part[0]["group"][0]["group_name"] == "Groupe S1A"
|
assert load_li_part[0]["group"][0]["group_name"] == "Groupe S1A"
|
||||||
assert load_li_part[0]["group"][0]["group_id"] == li_grp1[0]["group_id"]
|
assert load_li_part[0]["group"][0]["group_id"] == li_grp1[0]["group_id"]
|
||||||
assert load_li_part[0]["partition_id"] == load_li_part[0]["group"][0]["partition_id"] == li1[0]["partition_id"]
|
assert (
|
||||||
|
load_li_part[0]["partition_id"]
|
||||||
|
== load_li_part[0]["group"][0]["partition_id"]
|
||||||
|
== li1[0]["partition_id"]
|
||||||
|
)
|
||||||
assert load_li_part[0]["partition_name"] == "Eleve 1ere annee"
|
assert load_li_part[0]["partition_name"] == "Eleve 1ere annee"
|
||||||
|
|
||||||
vue_g1 = sco_groups_view.groups_view(context.Scolarite, group_ids = [li_grp1[0]["group_id"]], format = "json", REQUEST=REQUEST)
|
vue_g1 = sco_groups_view.groups_view(
|
||||||
|
context.Scolarite,
|
||||||
|
group_ids=[li_grp1[0]["group_id"]],
|
||||||
|
format="json",
|
||||||
|
REQUEST=REQUEST,
|
||||||
|
)
|
||||||
load_vue_g1 = json.loads(vue_g1)
|
load_vue_g1 = json.loads(vue_g1)
|
||||||
assert len(load_vue_g1) == 2
|
assert len(load_vue_g1) == 2
|
||||||
assert load_vue_g1[0][li1[0]["partition_id"]] == li_grp1[0]["group_name"]
|
assert load_vue_g1[0][li1[0]["partition_id"]] == li_grp1[0]["group_name"]
|
||||||
@ -230,7 +291,9 @@ assert load_vue_g1[0][li1[0]["partition_id"]] == li_grp1[0]["group_name"]
|
|||||||
|
|
||||||
# --- Etudiant
|
# --- Etudiant
|
||||||
|
|
||||||
etudi = context.Scolarite.etud_info(etudid=etuds[0]["etudid"], format="json", REQUEST=REQUEST)
|
etudi = context.Scolarite.etud_info(
|
||||||
|
etudid=etuds[0]["etudid"], format="json", REQUEST=REQUEST
|
||||||
|
)
|
||||||
load_etudi = json.loads(etudi)
|
load_etudi = json.loads(etudi)
|
||||||
assert load_etudi["prenom"] == "Etudiantnumero1"
|
assert load_etudi["prenom"] == "Etudiantnumero1"
|
||||||
assert load_etudi["nom"] == "SEMESTRE11"
|
assert load_etudi["nom"] == "SEMESTRE11"
|
||||||
@ -241,21 +304,36 @@ assert load_etudi["etudid"] == etuds[0]["etudid"]
|
|||||||
for debut, fin, demijournee in [
|
for debut, fin, demijournee in [
|
||||||
("18/01/2021", "18/01/2021", 1),
|
("18/01/2021", "18/01/2021", 1),
|
||||||
("19/01/2021", "19/01/2021", 0),
|
("19/01/2021", "19/01/2021", 0),
|
||||||
] :
|
]:
|
||||||
sco_abs_views.doSignaleAbsence(context.Absences, datedebut=debut, datefin=fin, demijournee=demijournee, etudid=etuds[0]["etudid"], REQUEST=REQUEST)
|
sco_abs_views.doSignaleAbsence(
|
||||||
|
context.Absences,
|
||||||
|
datedebut=debut,
|
||||||
|
datefin=fin,
|
||||||
|
demijournee=demijournee,
|
||||||
|
etudid=etuds[0]["etudid"],
|
||||||
|
REQUEST=REQUEST,
|
||||||
|
)
|
||||||
|
|
||||||
nb_abs = context.Absences.CountAbs(etuds[0]["etudid"], debut="09/01/2020", fin="02/01/2021")
|
nb_abs = context.Absences.CountAbs(
|
||||||
|
etuds[0]["etudid"], debut="09/01/2020", fin="02/01/2021"
|
||||||
|
)
|
||||||
assert nb_abs == 2
|
assert nb_abs == 2
|
||||||
|
|
||||||
liste_abs = sco_abs_views.ListeAbsEtud(context.Absences, etuds[0]["etudid"], format='json', REQUEST=REQUEST)
|
liste_abs = sco_abs_views.ListeAbsEtud(
|
||||||
|
context.Absences, etuds[0]["etudid"], format="json", REQUEST=REQUEST
|
||||||
|
)
|
||||||
load_liste_abs = json.loads(liste_abs)
|
load_liste_abs = json.loads(liste_abs)
|
||||||
assert len(load_liste_abs) == 2
|
assert len(load_liste_abs) == 2
|
||||||
|
|
||||||
_ = sco_abs_views.doAnnuleAbsence(context.Absences, "15/01/2021", "15/01/2021", 1, etudid=etuds[0]["etudid"], REQUEST=REQUEST)
|
_ = sco_abs_views.doAnnuleAbsence(
|
||||||
|
context.Absences,
|
||||||
|
"15/01/2021",
|
||||||
|
"15/01/2021",
|
||||||
|
1,
|
||||||
|
etudid=etuds[0]["etudid"],
|
||||||
|
REQUEST=REQUEST,
|
||||||
|
)
|
||||||
|
|
||||||
# --- Module
|
# --- Module
|
||||||
|
|
||||||
#Voir test dans test_formation.
|
# Voir test dans test_formation.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -74,11 +74,11 @@ f = G.create_formation(
|
|||||||
acronyme="DUTI",
|
acronyme="DUTI",
|
||||||
titre="DUT Info",
|
titre="DUT Info",
|
||||||
titre_officiel="DUT Informatique",
|
titre_officiel="DUT Informatique",
|
||||||
)
|
)
|
||||||
|
|
||||||
assert f["acronyme"]=="DUTI"
|
assert f["acronyme"] == "DUTI"
|
||||||
assert f["titre"]=="DUT Info"
|
assert f["titre"] == "DUT Info"
|
||||||
assert f["titre_officiel"]=="DUT Informatique"
|
assert f["titre_officiel"] == "DUT Informatique"
|
||||||
|
|
||||||
|
|
||||||
# --- Création d'UE, matière, module pour les premieres années
|
# --- Création d'UE, matière, module pour les premieres années
|
||||||
@ -96,14 +96,14 @@ mod1 = G.create_module(
|
|||||||
)
|
)
|
||||||
|
|
||||||
assert ue1["formation_id"] == f["formation_id"]
|
assert ue1["formation_id"] == f["formation_id"]
|
||||||
assert ue1["acronyme"]=="UE11"
|
assert ue1["acronyme"] == "UE11"
|
||||||
assert ue1["titre"]=="UE1S1"
|
assert ue1["titre"] == "UE1S1"
|
||||||
|
|
||||||
assert mod1["matiere_id"]==mat1["matiere_id"]
|
assert mod1["matiere_id"] == mat1["matiere_id"]
|
||||||
assert mod1["code"]=="M1S1"
|
assert mod1["code"] == "M1S1"
|
||||||
assert mod1["titre"]=="mod1"
|
assert mod1["titre"] == "mod1"
|
||||||
assert mod1["ue_id"]==ue1["ue_id"]
|
assert mod1["ue_id"] == ue1["ue_id"]
|
||||||
assert mod1["formation_id"]==f["formation_id"]
|
assert mod1["formation_id"] == f["formation_id"]
|
||||||
|
|
||||||
# --- Création d'UE, matière, module pour les deuxieme années
|
# --- Création d'UE, matière, module pour les deuxieme années
|
||||||
|
|
||||||
@ -128,10 +128,10 @@ sem1 = G.create_formsemestre(
|
|||||||
date_fin="01/02/2021",
|
date_fin="01/02/2021",
|
||||||
)
|
)
|
||||||
|
|
||||||
assert sem1["formation_id"]==f["formation_id"]
|
assert sem1["formation_id"] == f["formation_id"]
|
||||||
assert sem1["semestre_id"]==1
|
assert sem1["semestre_id"] == 1
|
||||||
assert sem1["date_debut"]=="01/09/2020"
|
assert sem1["date_debut"] == "01/09/2020"
|
||||||
assert sem1["date_fin"]=="01/02/2021"
|
assert sem1["date_fin"] == "01/02/2021"
|
||||||
|
|
||||||
sem2 = G.create_formsemestre(
|
sem2 = G.create_formsemestre(
|
||||||
formation_id=f["formation_id"],
|
formation_id=f["formation_id"],
|
||||||
@ -147,9 +147,9 @@ mi1 = G.create_moduleimpl(
|
|||||||
responsable_id="bach",
|
responsable_id="bach",
|
||||||
)
|
)
|
||||||
|
|
||||||
assert mi1["module_id" ]==mod1["module_id"]
|
assert mi1["module_id"] == mod1["module_id"]
|
||||||
assert mi1["formsemestre_id"]==sem1["formsemestre_id"]
|
assert mi1["formsemestre_id"] == sem1["formsemestre_id"]
|
||||||
assert mi1["responsable_id"]=="bach"
|
assert mi1["responsable_id"] == "bach"
|
||||||
|
|
||||||
mi2 = G.create_moduleimpl(
|
mi2 = G.create_moduleimpl(
|
||||||
module_id=mod2["module_id"],
|
module_id=mod2["module_id"],
|
||||||
@ -160,16 +160,26 @@ mi2 = G.create_moduleimpl(
|
|||||||
|
|
||||||
# --- Inscription des étudiants
|
# --- Inscription des étudiants
|
||||||
|
|
||||||
for etud in etuds[:10] :
|
for etud in etuds[:10]:
|
||||||
G.inscrit_etudiant(sem1, etud)
|
G.inscrit_etudiant(sem1, etud)
|
||||||
|
|
||||||
for etud in etuds [10:] :
|
for etud in etuds[10:]:
|
||||||
G.inscrit_etudiant(sem2, etud)
|
G.inscrit_etudiant(sem2, etud)
|
||||||
|
|
||||||
# --- Création de 2 partitions
|
# --- Création de 2 partitions
|
||||||
|
|
||||||
_ = sco_groups.partition_create(context.Scolarite, formsemestre_id=sem1["formsemestre_id"], partition_name="Eleve 1ere annee", REQUEST=REQUEST)
|
_ = sco_groups.partition_create(
|
||||||
_ = sco_groups.partition_create(context.Scolarite, formsemestre_id=sem2["formsemestre_id"], partition_name="Eleve 2eme annee", REQUEST=REQUEST)
|
context.Scolarite,
|
||||||
|
formsemestre_id=sem1["formsemestre_id"],
|
||||||
|
partition_name="Eleve 1ere annee",
|
||||||
|
REQUEST=REQUEST,
|
||||||
|
)
|
||||||
|
_ = sco_groups.partition_create(
|
||||||
|
context.Scolarite,
|
||||||
|
formsemestre_id=sem2["formsemestre_id"],
|
||||||
|
partition_name="Eleve 2eme annee",
|
||||||
|
REQUEST=REQUEST,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
li1 = sco_groups.get_partitions_list(context.Scolarite, sem1["formsemestre_id"])
|
li1 = sco_groups.get_partitions_list(context.Scolarite, sem1["formsemestre_id"])
|
||||||
@ -178,51 +188,61 @@ li2 = sco_groups.get_partitions_list(context.Scolarite, sem2["formsemestre_id"])
|
|||||||
|
|
||||||
# --- Création des groupes
|
# --- Création des groupes
|
||||||
|
|
||||||
_ = sco_groups.createGroup(context.Scolarite, li1[0]["partition_id"], "Groupe S1A", REQUEST=REQUEST)
|
_ = sco_groups.createGroup(context.Scolarite, li1[0]["partition_id"], "Groupe S1A")
|
||||||
_ = sco_groups.createGroup(context.Scolarite, li1[0]["partition_id"], "Groupe S1B", REQUEST=REQUEST)
|
_ = sco_groups.createGroup(context.Scolarite, li1[0]["partition_id"], "Groupe S1B")
|
||||||
_ = sco_groups.createGroup(context.Scolarite, li2[0]["partition_id"], "Groupe S3A", REQUEST=REQUEST)
|
_ = sco_groups.createGroup(context.Scolarite, li2[0]["partition_id"], "Groupe S3A")
|
||||||
_ = sco_groups.createGroup(context.Scolarite, li2[0]["partition_id"], "Groupe S3B", REQUEST=REQUEST)
|
_ = sco_groups.createGroup(context.Scolarite, li2[0]["partition_id"], "Groupe S3B")
|
||||||
_ = sco_groups.createGroup(context.Scolarite, li2[0]["partition_id"], "Groupe TEST", REQUEST=REQUEST)
|
_ = sco_groups.createGroup(context.Scolarite, li2[0]["partition_id"], "Groupe TEST")
|
||||||
|
|
||||||
li_grp1 = sco_groups.get_partition_groups(context.Scolarite, li1[0])
|
li_grp1 = sco_groups.get_partition_groups(context.Scolarite, li1[0])
|
||||||
li_grp2 = sco_groups.get_partition_groups(context.Scolarite, li2[0])
|
li_grp2 = sco_groups.get_partition_groups(context.Scolarite, li2[0])
|
||||||
li_grp3 = sco_groups.get_partition_groups(context.Scolarite, li1[1]) #liste groupe defaut
|
li_grp3 = sco_groups.get_partition_groups(
|
||||||
|
context.Scolarite, li1[1]
|
||||||
|
) # liste groupe defaut
|
||||||
|
|
||||||
assert len(li_grp1) == 2 #test de get_partition_groups # 2
|
assert len(li_grp1) == 2 # test de get_partition_groups # 2
|
||||||
assert len(li_grp2) == 3 #test de get_partition_groups # 3
|
assert len(li_grp2) == 3 # test de get_partition_groups # 3
|
||||||
assert li_grp1[0]["group_name"] == "Groupe S1A"
|
assert li_grp1[0]["group_name"] == "Groupe S1A"
|
||||||
|
|
||||||
|
|
||||||
# --- Affectation des élèves dans les groupes
|
# --- Affectation des élèves dans les groupes
|
||||||
|
|
||||||
for etud in etuds[:5] :
|
for etud in etuds[:5]:
|
||||||
sco_groups.set_group(context.Scolarite, etud["etudid"], li_grp1[0]["group_id"])
|
sco_groups.set_group(context.Scolarite, etud["etudid"], li_grp1[0]["group_id"])
|
||||||
|
|
||||||
for etud in etuds[5:10] :
|
for etud in etuds[5:10]:
|
||||||
sco_groups.set_group(context.Scolarite, etud["etudid"], li_grp1[1]["group_id"])
|
sco_groups.set_group(context.Scolarite, etud["etudid"], li_grp1[1]["group_id"])
|
||||||
|
|
||||||
for etud in etuds[10:15] :
|
for etud in etuds[10:15]:
|
||||||
sco_groups.set_group(context.Scolarite, etud["etudid"], li_grp2[0]["group_id"])
|
sco_groups.set_group(context.Scolarite, etud["etudid"], li_grp2[0]["group_id"])
|
||||||
|
|
||||||
for etud in etuds[15:] :
|
for etud in etuds[15:]:
|
||||||
sco_groups.set_group(context.Scolarite, etud["etudid"], li_grp2[1]["group_id"])
|
sco_groups.set_group(context.Scolarite, etud["etudid"], li_grp2[1]["group_id"])
|
||||||
|
|
||||||
# --- Vérification si les élèves sont bien dans les bons groupes
|
# --- Vérification si les élèves sont bien dans les bons groupes
|
||||||
|
|
||||||
for etud in etuds[:5] :
|
for etud in etuds[:5]:
|
||||||
grp = sco_groups.get_etud_groups(context.Scolarite, etud["etudid"], sem1, exclude_default=True)
|
grp = sco_groups.get_etud_groups(
|
||||||
|
context.Scolarite, etud["etudid"], sem1, exclude_default=True
|
||||||
|
)
|
||||||
assert grp[0]["group_name"] == "Groupe S1A"
|
assert grp[0]["group_name"] == "Groupe S1A"
|
||||||
|
|
||||||
for etud in etuds[5:10] :
|
for etud in etuds[5:10]:
|
||||||
grp = sco_groups.get_etud_groups(context.Scolarite, etud["etudid"], sem1, exclude_default=True)
|
grp = sco_groups.get_etud_groups(
|
||||||
|
context.Scolarite, etud["etudid"], sem1, exclude_default=True
|
||||||
|
)
|
||||||
assert grp[0]["group_name"] == "Groupe S1B"
|
assert grp[0]["group_name"] == "Groupe S1B"
|
||||||
|
|
||||||
for etud in etuds[10:15] :
|
for etud in etuds[10:15]:
|
||||||
grp = sco_groups.get_etud_groups(context.Scolarite, etud["etudid"], sem2, exclude_default=True)
|
grp = sco_groups.get_etud_groups(
|
||||||
|
context.Scolarite, etud["etudid"], sem2, exclude_default=True
|
||||||
|
)
|
||||||
assert grp[0]["group_name"] == "Groupe S3A"
|
assert grp[0]["group_name"] == "Groupe S3A"
|
||||||
|
|
||||||
for etud in etuds[15:] :
|
for etud in etuds[15:]:
|
||||||
grp = sco_groups.get_etud_groups(context.Scolarite, etud["etudid"], sem2, exclude_default=True)
|
grp = sco_groups.get_etud_groups(
|
||||||
|
context.Scolarite, etud["etudid"], sem2, exclude_default=True
|
||||||
|
)
|
||||||
assert grp[0]["group_name"] == "Groupe S3B"
|
assert grp[0]["group_name"] == "Groupe S3B"
|
||||||
|
|
||||||
# --- Création d'une évaluation
|
# --- Création d'une évaluation
|
||||||
@ -243,33 +263,41 @@ e2 = G.create_evaluation(
|
|||||||
|
|
||||||
# --- Saisie des notes
|
# --- Saisie des notes
|
||||||
|
|
||||||
for etud in etuds[10:] :
|
for etud in etuds[10:]:
|
||||||
nb_changed, nb_suppress, existing_decisions = G.create_note(
|
nb_changed, nb_suppress, existing_decisions = G.create_note(
|
||||||
evaluation=e1, etud=etud, note=float(random.randint(0, 20))
|
evaluation=e1, etud=etud, note=float(random.randint(0, 20))
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
for etud in etuds[:10] :
|
for etud in etuds[:10]:
|
||||||
nb_changed, nb_suppress, existing_decisions = G.create_note(
|
nb_changed, nb_suppress, existing_decisions = G.create_note(
|
||||||
evaluation=e2, etud=etud, note=float(random.randint(0, 20))
|
evaluation=e2, etud=etud, note=float(random.randint(0, 20))
|
||||||
)
|
)
|
||||||
|
|
||||||
# --- Liste des étudiants inscrits aux evaluations
|
# --- Liste des étudiants inscrits aux evaluations
|
||||||
|
|
||||||
lie1 = sco_groups.do_evaluation_listeetuds_groups(context.Scolarite, e1["evaluation_id"], groups = li_grp1)
|
lie1 = sco_groups.do_evaluation_listeetuds_groups(
|
||||||
lie2 = sco_groups.do_evaluation_listeetuds_groups(context.Scolarite, e2["evaluation_id"], groups = li_grp2)
|
context.Scolarite, e1["evaluation_id"], groups=li_grp1
|
||||||
|
)
|
||||||
|
lie2 = sco_groups.do_evaluation_listeetuds_groups(
|
||||||
|
context.Scolarite, e2["evaluation_id"], groups=li_grp2
|
||||||
|
)
|
||||||
|
|
||||||
for etud in etuds[:10] :
|
for etud in etuds[:10]:
|
||||||
assert etud["etudid"] in lie1 # test de do_evaluation_listeetuds_groups
|
assert etud["etudid"] in lie1 # test de do_evaluation_listeetuds_groups
|
||||||
|
|
||||||
for etud in etuds[10:] :
|
for etud in etuds[10:]:
|
||||||
assert etud["etudid"] in lie2 # test de do_evaluation_listeetuds_groups
|
assert etud["etudid"] in lie2 # test de do_evaluation_listeetuds_groups
|
||||||
|
|
||||||
|
|
||||||
# --- Liste des groupes présents aux évaluation
|
# --- Liste des groupes présents aux évaluation
|
||||||
|
|
||||||
lig1 = sco_groups.do_evaluation_listegroupes(context.Scolarite, e1["evaluation_id"], include_default=False)
|
lig1 = sco_groups.do_evaluation_listegroupes(
|
||||||
lig2 = sco_groups.do_evaluation_listegroupes(context.Scolarite, e2["evaluation_id"], include_default=False)
|
context.Scolarite, e1["evaluation_id"], include_default=False
|
||||||
|
)
|
||||||
|
lig2 = sco_groups.do_evaluation_listegroupes(
|
||||||
|
context.Scolarite, e2["evaluation_id"], include_default=False
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
assert len(lig1) == 2
|
assert len(lig1) == 2
|
||||||
@ -278,20 +306,34 @@ assert li_grp1[0] and li_grp1[1] in lig1 # test do_evaluation_listegroupes
|
|||||||
assert li_grp2[0] and li_grp2[1] in lig2 # test do_evaluation_listegroupes
|
assert li_grp2[0] and li_grp2[1] in lig2 # test do_evaluation_listegroupes
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# --- Changement de groupe d'un élève
|
# --- Changement de groupe d'un élève
|
||||||
|
|
||||||
grp1 = sco_groups.get_etud_groups(context.Scolarite, etuds[0]["etudid"], sem1, exclude_default = True)
|
grp1 = sco_groups.get_etud_groups(
|
||||||
sco_groups.change_etud_group_in_partition(context.Scolarite, etuds[0]["etudid"], li_grp1[1]["group_id"], li1[0], REQUEST=REQUEST)
|
context.Scolarite, etuds[0]["etudid"], sem1, exclude_default=True
|
||||||
grp2 = sco_groups.get_etud_groups(context.Scolarite, etuds[0]["etudid"], sem1, exclude_default = True)
|
)
|
||||||
|
sco_groups.change_etud_group_in_partition(
|
||||||
|
context.Scolarite,
|
||||||
|
etuds[0]["etudid"],
|
||||||
|
li_grp1[1]["group_id"],
|
||||||
|
li1[0],
|
||||||
|
REQUEST=REQUEST,
|
||||||
|
)
|
||||||
|
grp2 = sco_groups.get_etud_groups(
|
||||||
|
context.Scolarite, etuds[0]["etudid"], sem1, exclude_default=True
|
||||||
|
)
|
||||||
assert grp1 != grp2
|
assert grp1 != grp2
|
||||||
assert grp1[0] == li_grp1[0] # test get_etud_groups
|
assert grp1[0] == li_grp1[0] # test get_etud_groups
|
||||||
assert grp2[0]["group_name"] == "Groupe S1B" #test du changement de groupe
|
assert grp2[0]["group_name"] == "Groupe S1B" # test du changement de groupe
|
||||||
|
|
||||||
|
|
||||||
# --- Liste des partitions en format json
|
# --- Liste des partitions en format json
|
||||||
|
|
||||||
lijson_s1 = sco_groups.formsemestre_partition_list(context.Scolarite, formsemestre_id=sem1["formsemestre_id"], format = "json", REQUEST=REQUEST)
|
lijson_s1 = sco_groups.formsemestre_partition_list(
|
||||||
|
context.Scolarite,
|
||||||
|
formsemestre_id=sem1["formsemestre_id"],
|
||||||
|
format="json",
|
||||||
|
REQUEST=REQUEST,
|
||||||
|
)
|
||||||
load_lijson_s1 = json.loads(lijson_s1)
|
load_lijson_s1 = json.loads(lijson_s1)
|
||||||
|
|
||||||
assert len(load_lijson_s1) == 2 # 2 partition (defaut et eleve 1ere annee)
|
assert len(load_lijson_s1) == 2 # 2 partition (defaut et eleve 1ere annee)
|
||||||
@ -299,76 +341,103 @@ assert load_lijson_s1[0]["formsemestre_id"] == sem1["formsemestre_id"]
|
|||||||
assert len(load_lijson_s1[0]["group"]) == 2 # 2 groupes S1A et S1B
|
assert len(load_lijson_s1[0]["group"]) == 2 # 2 groupes S1A et S1B
|
||||||
assert load_lijson_s1[0]["group"][0]["group_name"] == "Groupe S1A"
|
assert load_lijson_s1[0]["group"][0]["group_name"] == "Groupe S1A"
|
||||||
assert load_lijson_s1[0]["group"][0]["group_id"] == li_grp1[0]["group_id"]
|
assert load_lijson_s1[0]["group"][0]["group_id"] == li_grp1[0]["group_id"]
|
||||||
assert load_lijson_s1[0]["partition_id"] == load_lijson_s1[0]["group"][0]["partition_id"] == li1[0]["partition_id"]
|
assert (
|
||||||
|
load_lijson_s1[0]["partition_id"]
|
||||||
|
== load_lijson_s1[0]["group"][0]["partition_id"]
|
||||||
|
== li1[0]["partition_id"]
|
||||||
|
)
|
||||||
assert load_lijson_s1[0]["partition_name"] == "Eleve 1ere annee"
|
assert load_lijson_s1[0]["partition_name"] == "Eleve 1ere annee"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# --- Vue d'un groupes (liste d'élève en format json)
|
# --- Vue d'un groupes (liste d'élève en format json)
|
||||||
|
|
||||||
vue_g1 = sco_groups_view.groups_view(context.Scolarite, group_ids = [li_grp1[0]["group_id"]], format = "json", REQUEST=REQUEST)
|
vue_g1 = sco_groups_view.groups_view(
|
||||||
|
context.Scolarite,
|
||||||
|
group_ids=[li_grp1[0]["group_id"]],
|
||||||
|
format="json",
|
||||||
|
REQUEST=REQUEST,
|
||||||
|
)
|
||||||
load_vue_g1 = json.loads(vue_g1)
|
load_vue_g1 = json.loads(vue_g1)
|
||||||
|
|
||||||
assert len(load_vue_g1) == 4
|
assert len(load_vue_g1) == 4
|
||||||
assert load_vue_g1[0][li1[0]["partition_id"]] == li_grp1[0]["group_name"]
|
assert load_vue_g1[0][li1[0]["partition_id"]] == li_grp1[0]["group_name"]
|
||||||
|
|
||||||
vue_sem = sco_groups_view.groups_view(context.Scolarite, formsemestre_id=sem1["formsemestre_id"], format = "json", REQUEST=REQUEST)
|
vue_sem = sco_groups_view.groups_view(
|
||||||
|
context.Scolarite,
|
||||||
|
formsemestre_id=sem1["formsemestre_id"],
|
||||||
|
format="json",
|
||||||
|
REQUEST=REQUEST,
|
||||||
|
)
|
||||||
load_vue_sem = json.loads(vue_sem)
|
load_vue_sem = json.loads(vue_sem)
|
||||||
|
|
||||||
assert len(load_vue_sem) == 10
|
assert len(load_vue_sem) == 10
|
||||||
|
|
||||||
tab=[]
|
tab = []
|
||||||
val=False
|
val = False
|
||||||
for etud in etuds[:10] :
|
for etud in etuds[:10]:
|
||||||
for i in range(len(load_vue_sem)) :
|
for i in range(len(load_vue_sem)):
|
||||||
if etud["prenom"] == load_vue_sem[i]["prenom"] and etud["nom_disp"]==load_vue_sem[i]["nom_disp"] :
|
if (
|
||||||
|
etud["prenom"] == load_vue_sem[i]["prenom"]
|
||||||
|
and etud["nom_disp"] == load_vue_sem[i]["nom_disp"]
|
||||||
|
):
|
||||||
val = True
|
val = True
|
||||||
tab.append(val)
|
tab.append(val)
|
||||||
|
|
||||||
assert not False in tab #tout mes etudiants sont present dans vue_sem.
|
assert not False in tab # tout mes etudiants sont present dans vue_sem.
|
||||||
|
|
||||||
# --- Test des fonctions dans sco_groups
|
# --- Test des fonctions dans sco_groups
|
||||||
|
|
||||||
|
|
||||||
assert li_grp1[0] == sco_groups.get_group(context.Scolarite, li_grp1[0]["group_id"]) #test get_group
|
assert li_grp1[0] == sco_groups.get_group(
|
||||||
|
context.Scolarite, li_grp1[0]["group_id"]
|
||||||
|
) # test get_group
|
||||||
|
|
||||||
assert len(li_grp2) == 3
|
assert len(li_grp2) == 3
|
||||||
sco_groups.group_delete(context.Scolarite, li_grp2[2])
|
sco_groups.group_delete(context.Scolarite, li_grp2[2])
|
||||||
#assert len(li_grp2) == 2 #TEST DE group_delete, aucun changement sur la console mais se supprime sur scodoc web
|
# assert len(li_grp2) == 2 #TEST DE group_delete, aucun changement sur la console mais se supprime sur scodoc web
|
||||||
# mais pas dans la console comme pour countAbs()
|
# mais pas dans la console comme pour countAbs()
|
||||||
|
|
||||||
assert sco_groups.get_partition(context.Scolarite, li1[0]["partition_id"])== li1[0] # test de get_partition
|
|
||||||
assert sco_groups.get_partition(context.Scolarite, li2[0]["partition_id"])== li2[0] # test de get_partition
|
|
||||||
|
|
||||||
|
assert (
|
||||||
|
sco_groups.get_partition(context.Scolarite, li1[0]["partition_id"]) == li1[0]
|
||||||
|
) # test de get_partition
|
||||||
|
assert (
|
||||||
|
sco_groups.get_partition(context.Scolarite, li2[0]["partition_id"]) == li2[0]
|
||||||
|
) # test de get_partition
|
||||||
|
|
||||||
|
|
||||||
li1 = sco_groups.get_partitions_list(context.Scolarite, sem1["formsemestre_id"])
|
li1 = sco_groups.get_partitions_list(context.Scolarite, sem1["formsemestre_id"])
|
||||||
#assert p1 in li1 #test de get_partitions_list
|
# assert p1 in li1 #test de get_partitions_list
|
||||||
assert len(li1) == 2 #eleve de 1ere annee + la partition defaut
|
assert len(li1) == 2 # eleve de 1ere annee + la partition defaut
|
||||||
|
|
||||||
li2 = sco_groups.get_partitions_list(context.Scolarite, sem2["formsemestre_id"])
|
li2 = sco_groups.get_partitions_list(context.Scolarite, sem2["formsemestre_id"])
|
||||||
#assert p2 in li2 #test de get_partitions_list
|
# assert p2 in li2 #test de get_partitions_list
|
||||||
assert len(li2) == 2 #eleve de 2eme annee + la partition defaut
|
assert len(li2) == 2 # eleve de 2eme annee + la partition defaut
|
||||||
|
|
||||||
|
|
||||||
dp1 = sco_groups.get_default_partition(context.Scolarite, sem1["formsemestre_id"])
|
dp1 = sco_groups.get_default_partition(context.Scolarite, sem1["formsemestre_id"])
|
||||||
dp2 = sco_groups.get_default_partition(context.Scolarite, sem2["formsemestre_id"])
|
dp2 = sco_groups.get_default_partition(context.Scolarite, sem2["formsemestre_id"])
|
||||||
|
|
||||||
assert dp1 in li1 # test si dp1 est bien dans li1 et par consequent teste la fonction get_default_partition
|
assert (
|
||||||
assert dp2 in li2 # test si dp2 est bien dans li1 et par consequent teste la fonction get_default_partition
|
dp1 in li1
|
||||||
|
) # test si dp1 est bien dans li1 et par consequent teste la fonction get_default_partition
|
||||||
|
assert (
|
||||||
|
dp2 in li2
|
||||||
|
) # test si dp2 est bien dans li1 et par consequent teste la fonction get_default_partition
|
||||||
|
|
||||||
|
|
||||||
dg1 = sco_groups.get_default_group(context.Scolarite, sem1["formsemestre_id"], REQUEST=REQUEST)
|
dg1 = sco_groups.get_default_group(sem1["formsemestre_id"])
|
||||||
assert li_grp3[0]["group_id"] == dg1 #test de get_default_group
|
assert li_grp3[0]["group_id"] == dg1 # test de get_default_group
|
||||||
|
|
||||||
|
|
||||||
sg = sco_groups.get_sem_groups(context.Scolarite, sem1["formsemestre_id"])
|
sg = sco_groups.get_sem_groups(context.Scolarite, sem1["formsemestre_id"])
|
||||||
assert len(sg) == 3 #test de get_sem_groups
|
assert len(sg) == 3 # test de get_sem_groups
|
||||||
assert li_grp1[0] and li_grp1[1] in sg
|
assert li_grp1[0] and li_grp1[1] in sg
|
||||||
assert li_grp3[0] in sg # test de get_sem_groups
|
assert li_grp3[0] in sg # test de get_sem_groups
|
||||||
|
|
||||||
limembre = sco_groups.get_group_members(context.Scolarite, li_grp1[0]["group_id"])
|
limembre = sco_groups.get_group_members(context.Scolarite, li_grp1[0]["group_id"])
|
||||||
assert len(limembre) == 4 # car on a changé de groupe un etudiant de ce groupe donc 5-1=4
|
assert (
|
||||||
|
len(limembre) == 4
|
||||||
|
) # car on a changé de groupe un etudiant de ce groupe donc 5-1=4
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Commentaire :
|
Commentaire :
|
||||||
@ -377,19 +446,3 @@ Meme probleme que pour les groupes, lorsque l'on supprime un groupe il est toujo
|
|||||||
mais pas dans scodoc web.
|
mais pas dans scodoc web.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -53,8 +53,9 @@ def test_cache_evaluations(test_client):
|
|||||||
raise Exception("no evaluations")
|
raise Exception("no evaluations")
|
||||||
#
|
#
|
||||||
evaluation_id = sem_evals[0]["evaluation_id"]
|
evaluation_id = sem_evals[0]["evaluation_id"]
|
||||||
sco_evaluations.do_evaluation_get_all_notes(evaluation_id)
|
eval_notes = sco_evaluations.do_evaluation_get_all_notes(evaluation_id)
|
||||||
# should have been be cached:
|
# should have been be cached, except if empty
|
||||||
|
if eval_notes:
|
||||||
assert sco_cache.EvaluationCache.get(evaluation_id)
|
assert sco_cache.EvaluationCache.get(evaluation_id)
|
||||||
sco_cache.invalidate_formsemestre(sem["formsemestre_id"])
|
sco_cache.invalidate_formsemestre(sem["formsemestre_id"])
|
||||||
# should have been erased from cache:
|
# should have been erased from cache:
|
||||||
|
Loading…
Reference in New Issue
Block a user