gestion responsables de semestres

This commit is contained in:
Emmanuel Viennet 2021-08-22 13:24:36 +02:00
parent 2a38de8e89
commit d8dfa0201e
35 changed files with 158 additions and 169 deletions

View File

@ -107,7 +107,7 @@ def sidebar():
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=True, etudid=etudid)[0]
params.update(etud)
params["fiche_url"] = url_for(
"scolar.ficheEtud", scodoc_dept=g.scodoc_dept, etudid=etudid

View File

@ -147,7 +147,7 @@ def abs_notify_get_destinations(sem, prefs, etudid, date, nbabs, nbabsjust):
if prefs["abs_notify_email"]:
destinations.append(prefs["abs_notify_email"])
if prefs["abs_notify_etud"]:
etud = sco_etud.get_etud_info(etudid=etudid, filled=1)[0]
etud = sco_etud.get_etud_info(etudid=etudid, filled=True)[0]
if etud["email_default"]:
destinations.append(etud["email_default"])

View File

@ -71,7 +71,7 @@ def doSignaleAbsence(
description: str
etudid: etudiant concerné. Si non spécifié, cherche dans REQUEST.form
"""
etud = sco_etud.get_etud_info(filled=1, etudid=etudid, REQUEST=REQUEST)[0]
etud = sco_etud.get_etud_info(filled=True, etudid=etudid)[0]
etudid = etud["etudid"]
if not moduleimpl_id:
moduleimpl_id = None
@ -151,7 +151,7 @@ def doSignaleAbsence(
<hr>"""
% etud
)
H.append(sco_find_etud.form_search_etud(REQUEST))
H.append(sco_find_etud.form_search_etud())
H.append(html_sco_header.sco_footer())
return "\n".join(H)
@ -159,7 +159,7 @@ def doSignaleAbsence(
def SignaleAbsenceEtud(REQUEST=None): # etudid implied
"""Formulaire individuel simple de signalement d'une absence"""
# brute-force portage from very old dtml code ...
etud = sco_etud.get_etud_info(filled=1, REQUEST=REQUEST)[0]
etud = sco_etud.get_etud_info(filled=True)[0]
etudid = etud["etudid"]
disabled = False
if not etud["cursem"]:
@ -293,7 +293,7 @@ def doJustifAbsence(
description: str
etudid: etudiant concerné. Si non spécifié, cherche dans REQUEST.form
"""
etud = sco_etud.get_etud_info(filled=1, etudid=etudid, REQUEST=REQUEST)[0]
etud = sco_etud.get_etud_info(filled=True, etudid=etudid)[0]
etudid = etud["etudid"]
description_abs = description
dates = sco_abs.DateRangeISO(datedebut, datefin)
@ -352,7 +352,7 @@ def doJustifAbsence(
<hr>"""
% etud
)
H.append(sco_find_etud.form_search_etud(REQUEST))
H.append(sco_find_etud.form_search_etud())
H.append(html_sco_header.sco_footer())
return "\n".join(H)
@ -360,7 +360,7 @@ def doJustifAbsence(
def JustifAbsenceEtud(REQUEST=None): # etudid implied
"""Formulaire individuel simple de justification d'une absence"""
# brute-force portage from very old dtml code ...
etud = sco_etud.get_etud_info(filled=1, REQUEST=REQUEST)[0]
etud = sco_etud.get_etud_info(filled=True)[0]
etudid = etud["etudid"]
H = [
html_sco_header.sco_header(
@ -416,7 +416,7 @@ def doAnnuleAbsence(
datedebut, datefin, demijournee, etudid=False, REQUEST=None
): # etudid implied
"""Annulation des absences pour une demi journée"""
etud = sco_etud.get_etud_info(filled=1, etudid=etudid, REQUEST=REQUEST)[0]
etud = sco_etud.get_etud_info(filled=True, etudid=etudid)[0]
etudid = etud["etudid"]
dates = sco_abs.DateRangeISO(datedebut, datefin)
@ -457,7 +457,7 @@ autre absence pour <b>%(nomprenom)s</b></a></li>
<hr>"""
% etud
)
H.append(sco_find_etud.form_search_etud(REQUEST))
H.append(sco_find_etud.form_search_etud())
H.append(html_sco_header.sco_footer())
return "\n".join(H)
@ -465,7 +465,7 @@ autre absence pour <b>%(nomprenom)s</b></a></li>
def AnnuleAbsenceEtud(REQUEST=None): # etudid implied
"""Formulaire individuel simple d'annulation d'une absence"""
# brute-force portage from very old dtml code ...
etud = sco_etud.get_etud_info(filled=1, REQUEST=REQUEST)[0]
etud = sco_etud.get_etud_info(filled=True)[0]
etudid = etud["etudid"]
H = [
@ -550,7 +550,7 @@ def AnnuleAbsenceEtud(REQUEST=None): # etudid implied
def doAnnuleJustif(datedebut0, datefin0, demijournee, REQUEST=None): # etudid implied
"""Annulation d'une justification"""
etud = sco_etud.get_etud_info(filled=1, REQUEST=REQUEST)[0]
etud = sco_etud.get_etud_info(filled=True)[0]
etudid = etud["etudid"]
dates = sco_abs.DateRangeISO(datedebut0, datefin0)
nbadded = 0
@ -591,7 +591,7 @@ autre absence pour <b>%(nomprenom)s</b></a></li>
<hr>"""
% etud
)
H.append(sco_find_etud.form_search_etud(REQUEST))
H.append(sco_find_etud.form_search_etud())
H.append(html_sco_header.sco_footer())
return "\n".join(H)
@ -713,7 +713,7 @@ def CalAbs(etudid, sco_year=None):
"""Calendrier des absences d'un etudiant"""
# crude portage from 1999 DTML
REQUEST = None # XXX
etud = sco_etud.get_etud_info(filled=1, etudid=etudid, REQUEST=REQUEST)[0]
etud = sco_etud.get_etud_info(filled=True, etudid=etudid)[0]
etudid = etud["etudid"]
anneescolaire = int(scu.AnneeScolaire(sco_year))
datedebut = str(anneescolaire) + "-08-01"

View File

@ -131,7 +131,7 @@ def etud_upload_file_form(REQUEST, etudid):
raise AccessDenied(
"opération non autorisée pour %s" % str(REQUEST.AUTHENTICATED_USER)
)
etud = sco_etud.get_etud_info(filled=1, REQUEST=REQUEST)[0]
etud = sco_etud.get_etud_info(filled=True)[0]
H = [
html_sco_header.sco_header(
page_title="Chargement d'un document associé à %(nomprenom)s" % etud,
@ -194,7 +194,7 @@ def etud_delete_archive(REQUEST, etudid, archive_name, dialog_confirmed=False):
raise AccessDenied(
"opération non autorisée pour %s" % str(REQUEST.AUTHENTICATED_USER)
)
etud = sco_etud.get_etud_info(filled=1, REQUEST=REQUEST)[0]
etud = sco_etud.get_etud_info(filled=True)[0]
archive_id = EtudsArchive.get_id_from_name(etudid, archive_name)
if not dialog_confirmed:
return scu.confirm_dialog(

View File

@ -87,7 +87,7 @@ def make_context_dict(sem, etud):
C = sem.copy()
C["responsable"] = " ,".join(
[
sco_users.user_info(user_name=responsable_id)["prenomnom"]
sco_users.user_info(responsable_id)["prenomnom"]
for responsable_id in sem["responsables"]
]
)
@ -156,7 +156,7 @@ def formsemestre_bulletinetud_dict(
I["formation"]["type_parcours"]
)
# Infos sur l'etudiant
I["etud"] = sco_etud.get_etud_info(etudid=etudid, filled=1)[0]
I["etud"] = sco_etud.get_etud_info(etudid=etudid, filled=True)[0]
I["descr_situation"] = I["etud"]["inscriptionstr"]
if I["etud"]["inscription_formsemestre_id"]:
I[
@ -772,7 +772,7 @@ def formsemestre_bulletinetud(
):
"page bulletin de notes"
try:
etud = sco_etud.get_etud_info(filled=1, REQUEST=REQUEST)[0]
etud = sco_etud.get_etud_info(filled=True)[0]
etudid = etud["etudid"]
except:
return scu.log_unknown_etud(REQUEST, format=format)
@ -842,7 +842,7 @@ def can_send_bulletin_by_mail(formsemestre_id):
return (
sco_preferences.get_preference("bul_mail_allowed_for_all", formsemestre_id)
or current_user.has_permission(Permission.ScoImplement)
or current_user.user_name in sem["responsables"]
or current_user.id in sem["responsables"]
)
@ -1016,8 +1016,6 @@ def _formsemestre_bulletinetud_header_html(
version=None,
REQUEST=None,
):
authuser = REQUEST.AUTHENTICATED_USER
uid = str(authuser)
H = [
html_sco_header.sco_header(
page_title="Bulletin de %(nomprenom)s" % etud,
@ -1077,8 +1075,8 @@ def _formsemestre_bulletinetud_header_html(
"title": "Réglages bulletins",
"endpoint": "notes.formsemestre_edit_options",
"args": {"formsemestre_id": formsemestre_id, "target_url": qurl},
"enabled": (uid in sem["responsables"])
or authuser.has_permission(Permission.ScoImplement),
"enabled": (current_user.id in sem["responsables"])
or current_user.has_permission(Permission.ScoImplement),
},
{
"title": 'Version papier (pdf, format "%s")'
@ -1137,8 +1135,8 @@ def _formsemestre_bulletinetud_header_html(
"etudid": etudid,
},
"enabled": (
(authuser in sem["responsables"])
or (authuser.has_permission(Permission.ScoEtudInscrit))
(current_user.id in sem["responsables"])
or (current_user.has_permission(Permission.ScoEtudInscrit))
),
},
{
@ -1148,7 +1146,7 @@ def _formsemestre_bulletinetud_header_html(
"formsemestre_id": formsemestre_id,
"etudid": etudid,
},
"enabled": authuser.has_permission(Permission.ScoImplement),
"enabled": current_user.has_permission(Permission.ScoImplement),
},
{
"title": "Enregistrer une validation d'UE antérieure",

View File

@ -117,7 +117,7 @@ def formsemestre_bulletinetud_published_dict(
d.update(**el)
# Infos sur l'etudiant
etudinfo = sco_etud.get_etud_info(etudid=etudid, filled=1)[0]
etudinfo = sco_etud.get_etud_info(etudid=etudid, filled=True)[0]
d["etudiant"] = dict(
etudid=etudid,

View File

@ -314,7 +314,7 @@ class BulletinGeneratorLegacy(sco_bulletins_generator.BulletinGenerator):
# --- Appreciations
# le dir. des etud peut ajouter des appreciations,
# mais aussi le chef (perm. ScoEtudInscrit)
can_edit_app = (str(authuser) in self.infos["responsables"]) or (
can_edit_app = (authuser.id in self.infos["responsables"]) or (
authuser.has_permission(Permission.ScoEtudInscrit)
)
H.append('<div class="bull_appreciations">')

View File

@ -224,7 +224,7 @@ def get_etud_bulletins_pdf(etudid, REQUEST, version="selectedevals"):
"Bulletins pdf de tous les semestres de l'étudiant, et filename"
from app.scodoc import sco_bulletins
etud = sco_etud.get_etud_info(etudid=etudid, filled=1)[0]
etud = sco_etud.get_etud_info(etudid=etudid, filled=True)[0]
fragments = []
bookmarks = {}
filigrannes = {}

View File

@ -144,7 +144,7 @@ class BulletinGeneratorStandard(sco_bulletins_generator.BulletinGenerator):
# ---- APPRECIATIONS
# le dir. des etud peut ajouter des appreciations,
# mais aussi le chef (perm. ScoEtudInscrit)
can_edit_app = (str(self.authuser) in self.infos["responsables"]) or (
can_edit_app = (self.authuser.id in self.infos["responsables"]) or (
self.authuser.has_permission(Permission.ScoEtudInscrit)
)
H.append('<div class="bull_appreciations">')

View File

@ -111,7 +111,7 @@ def make_xml_formsemestre_bulletinetud(
is_appending = False
doc = x
# Infos sur l'etudiant
etudinfo = sco_etud.get_etud_info(etudid=etudid, filled=1)[0]
etudinfo = sco_etud.get_etud_info(etudid=etudid, filled=True)[0]
doc.append(
Element(
"etudiant",

View File

@ -162,7 +162,7 @@ def compute_user_formula(
if user_moy != "NA0" and user_moy != "NA":
user_moy = float(user_moy)
if (user_moy > 20) or (user_moy < 0):
etud = sco_etud.get_etud_info(etudid=etudid, filled=1)[0]
etud = sco_etud.get_etud_info(etudid=etudid, filled=True)[0]
raise ScoException(
"""valeur moyenne %s hors limite pour <a href="formsemestre_bulletinetud?formsemestre_id=%s&etudid=%s">%s</a>"""

View File

@ -108,7 +108,7 @@ def table_debouche_etudids(etudids, keep_numeric=True):
"""Rapport pour ces etudiants"""
L = []
for etudid in etudids:
etud = sco_etud.get_etud_info(filled=1, etudid=etudid)[0]
etud = sco_etud.get_etud_info(filled=True, etudid=etudid)[0]
# retrouve le "dernier" semestre (au sens de la date de fin)
sems = etud["sems"]
es = [(s["date_fin_iso"], i) for i, s in enumerate(sems)]

View File

@ -32,7 +32,7 @@
import os
import time
from flask import url_for, g
from flask import url_for, g, request
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
@ -630,10 +630,10 @@ etudident_edit = _etudidentEditor.edit
etudident_create = _etudidentEditor.create
def make_etud_args(etudid=None, code_nip=None, REQUEST=None, raise_exc=True):
def make_etud_args(etudid=None, code_nip=None, use_request=True, raise_exc=True):
"""forme args dict pour requete recherche etudiant
On peut specifier etudid
ou bien cherche dans REQUEST.form: etudid, code_nip, code_ine
ou bien (si use_request) cherche dans la requete http: etudid, code_nip, code_ine
(dans cet ordre).
"""
args = None
@ -641,19 +641,25 @@ def make_etud_args(etudid=None, code_nip=None, REQUEST=None, raise_exc=True):
args = {"etudid": etudid}
elif code_nip:
args = {"code_nip": code_nip}
elif REQUEST:
if "etudid" in REQUEST.form:
args = {"etudid": int(REQUEST.form["etudid"])}
elif "code_nip" in REQUEST.form:
args = {"code_nip": REQUEST.form["code_nip"]}
elif "code_ine" in REQUEST.form:
args = {"code_ine": REQUEST.form["code_ine"]}
elif use_request: # use form from current request (Flask global)
if request.method == "POST":
vals = request.form
elif request.method == "GET":
vals = request.args
else:
vals = {}
if "etudid" in vals:
args = {"etudid": int(vals["etudid"])}
elif "code_nip" in vals:
args = {"code_nip": str(vals["code_nip"])}
elif "code_ine" in vals:
args = {"code_ine": str(vals["code_ine"])}
if not args and raise_exc:
raise ValueError("getEtudInfo: no parameter !")
return args
def get_etud_info(etudid=False, code_nip=False, filled=False, REQUEST=None):
def get_etud_info(etudid=False, code_nip=False, filled=False):
"""infos sur un etudiant (API)
On peut specifier etudid ou conde_nip
ou bien cherche dans REQUEST.form: etudid, code_nip, code_ine
@ -662,7 +668,7 @@ def get_etud_info(etudid=False, code_nip=False, filled=False, REQUEST=None):
if etudid is None:
return []
cnx = ndb.GetDBConnexion()
args = make_etud_args(etudid=etudid, code_nip=code_nip, REQUEST=REQUEST)
args = make_etud_args(etudid=etudid, code_nip=code_nip)
etud = etudident_list(cnx, args=args)
if filled:

View File

@ -28,7 +28,7 @@
"""Recherche d'étudiants
"""
import flask
from flask import url_for, g
from flask import url_for, g, request
from flask_login import current_user
import app
@ -44,7 +44,6 @@ from app.scodoc import sco_preferences
def form_search_etud(
REQUEST=None,
dest_url=None,
parameters=None,
parameters_keys=None,
@ -77,7 +76,13 @@ def form_search_etud(
)
elif parameters_keys:
for key in parameters_keys.split(","):
v = REQUEST.form.get(key, False)
if request.method == "POST":
vals = request.form
elif request.method == "GET":
vals = request.args
else:
vals = {}
v = vals.get(key, False)
if v:
H.append('<input type="hidden" name="%s" value="%s"/>' % (key, v))
H.append(
@ -105,13 +110,14 @@ def search_etud_in_dept(expnom="", REQUEST=None):
Args:
expnom: string, regexp sur le nom ou un code_nip ou un etudid
"""
breakpoint()
if isinstance(expnom, int) or len(expnom) > 1:
try:
etudid = int(expnom)
except ValueError:
etudid = None
if etudid is not None:
etuds = sco_etud.get_etud_info(filled=1, etudid=expnom, REQUEST=REQUEST)
etuds = sco_etud.get_etud_info(filled=True, etudid=expnom)
if (etudid is None) or len(etuds) != 1:
if scu.is_valid_code_nip(expnom):
etuds = search_etuds_infos(code_nip=expnom)
@ -141,7 +147,6 @@ def search_etud_in_dept(expnom="", REQUEST=None):
dest_url=url_for(
"scolar.ficheEtud", scodoc_dept=g.scodoc_dept
), # sans l'etudid, post du form
REQUEST=REQUEST,
title="Autre recherche",
),
]
@ -174,7 +179,6 @@ def search_etud_in_dept(expnom="", REQUEST=None):
H.append(
form_search_etud(
dest_url=url_for("scolar.ficheEtud", scodoc_dept=g.scodoc_dept),
REQUEST=REQUEST,
title="Autre recherche",
)
)

View File

@ -267,9 +267,9 @@ def do_formsemestre_edit(sem, cnx=None, **kw):
) # > modif formsemestre
def read_formsemestre_responsables(formsemestre_id):
def read_formsemestre_responsables(formsemestre_id: int) -> list[int]: # py3.9+ syntax
"""recupere liste des responsables de ce semestre
:returns: liste de chaines
:returns: liste d'id
"""
r = ndb.SimpleDictFetch(
"""SELECT responsable_id

View File

@ -35,6 +35,7 @@ import time
import flask
from flask import url_for, g
from flask_login import current_user
import app.scodoc.sco_utils as scu
import app.scodoc.notesdb as ndb
@ -60,12 +61,12 @@ def formsemestre_ext_create(etudid, sem_params, REQUEST=None):
args={"formation_id": sem_params["formation_id"]}
)[0]
if etudid:
_etud = sco_etud.get_etud_info(etudid=etudid, filled=1)[0]
_etud = sco_etud.get_etud_info(etudid=etudid, filled=True)[0]
# Create formsemestre
sem_params["modalite"] = "EXT"
sem_params["etapes"] = None
sem_params["responsables"] = [str(REQUEST.AUTHENTICATED_USER)]
sem_params["responsables"] = [current_user.id]
formsemestre_id = sco_formsemestre.do_formsemestre_create(sem_params, silent=True)
# nota: le semestre est créé vide: pas de modules
@ -81,7 +82,7 @@ def formsemestre_ext_create(etudid, sem_params, REQUEST=None):
def formsemestre_ext_create_form(etudid, formsemestre_id, REQUEST=None):
"""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=True)[0]
H = [
html_sco_header.sco_header(),
"""<h2>Enregistrement d'une inscription antérieure dans un autre établissement</h2>

View File

@ -251,13 +251,12 @@ def formsemestre_inscription_with_modules_etud(
"""Form. inscription d'un étudiant au semestre.
Si etudid n'est pas specifié, form. choix etudiant.
"""
if not etudid:
if etudid is None:
return sco_find_etud.form_search_etud(
title="Choix de l'étudiant à inscrire dans ce semestre",
add_headers=True,
dest_url="formsemestre_inscription_with_modules_etud",
parameters={"formsemestre_id": formsemestre_id},
REQUEST=REQUEST,
)
return formsemestre_inscription_with_modules(
@ -269,7 +268,7 @@ def formsemestre_inscription_with_modules_form(etudid, only_ext=False):
"""Formulaire inscription de l'etud dans l'un des semestres existants.
Si only_ext, ne montre que les semestre extérieurs.
"""
etud = sco_etud.get_etud_info(etudid=etudid, filled=1)[0]
etud = sco_etud.get_etud_info(etudid=etudid, filled=True)[0]
H = [
html_sco_header.sco_header(),
"<h2>Inscription de %s" % etud["nomprenom"],
@ -329,7 +328,7 @@ def formsemestre_inscription_with_modules(
if multiple_ok:
multiple_ok = int(multiple_ok)
sem = sco_formsemestre.get_formsemestre(formsemestre_id)
etud = sco_etud.get_etud_info(etudid=etudid, filled=1)[0]
etud = sco_etud.get_etud_info(etudid=etudid, filled=True)[0]
H = [
html_sco_header.html_sem_header(
REQUEST,
@ -436,7 +435,7 @@ def formsemestre_inscription_option(etudid, formsemestre_id, REQUEST=None):
if not sem["etat"]:
raise ScoValueError("Modification impossible: semestre verrouille")
etud = sco_etud.get_etud_info(etudid=etudid, filled=1)[0]
etud = sco_etud.get_etud_info(etudid=etudid, filled=True)[0]
nt = sco_cache.NotesTableCache.get(formsemestre_id) # > get_etud_ue_status
F = html_sco_header.sco_footer()
@ -722,7 +721,7 @@ def est_inscrit_ailleurs(etudid, formsemestre_id):
temps que celui indiqué (par formsemestre_id).
Retourne la liste des semestres concernés (ou liste vide).
"""
etud = sco_etud.get_etud_info(etudid=etudid, filled=1)[0]
etud = sco_etud.get_etud_info(etudid=etudid, filled=True)[0]
sem = sco_formsemestre.get_formsemestre(formsemestre_id)
debut_s = sem["dateord"]
fin_s = ndb.DateDMYtoISO(sem["date_fin"])
@ -764,7 +763,7 @@ def formsemestre_inscrits_ailleurs(formsemestre_id, REQUEST=None):
insd = list_inscrits_ailleurs(formsemestre_id)
# liste ordonnée par nom
etudlist = [
sco_etud.get_etud_info(etudid=etudid, filled=1)[0]
sco_etud.get_etud_info(etudid=etudid, filled=True)[0]
for etudid in insd.keys()
if insd[etudid]
]

View File

@ -123,7 +123,6 @@ def _build_menu_stats(formsemestre_id):
def formsemestre_status_menubar(sem):
"""HTML to render menubar"""
uid = current_user.user_name
formsemestre_id = sem["formsemestre_id"]
if int(sem["etat"]):
change_lock_msg = "Verrouiller"
@ -156,10 +155,7 @@ def formsemestre_status_menubar(sem):
},
"enabled": (
current_user.has_permission(Permission.ScoImplement)
or (
current_user.user_name in sem["responsables"]
and sem["resp_can_edit"]
)
or (current_user.id in sem["responsables"] and sem["resp_can_edit"])
)
and (sem["etat"]),
"helpmsg": "Modifie le contenu du semestre (modules)",
@ -170,10 +166,7 @@ def formsemestre_status_menubar(sem):
"args": {"formsemestre_id": formsemestre_id},
"enabled": (
current_user.has_permission(Permission.ScoImplement)
or (
current_user.user_name in sem["responsables"]
and sem["resp_can_edit"]
)
or (current_user.id in sem["responsables"] and sem["resp_can_edit"])
)
and (sem["etat"]),
"helpmsg": "Préférences du semestre",
@ -182,7 +175,7 @@ def formsemestre_status_menubar(sem):
"title": "Réglages bulletins",
"endpoint": "notes.formsemestre_edit_options",
"args": {"formsemestre_id": formsemestre_id},
"enabled": (uid in sem["responsables"])
"enabled": (current_user.id in sem["responsables"])
or current_user.has_permission(Permission.ScoImplement),
"helpmsg": "Change les options",
},
@ -190,7 +183,7 @@ def formsemestre_status_menubar(sem):
"title": change_lock_msg,
"endpoint": "notes.formsemestre_change_lock",
"args": {"formsemestre_id": formsemestre_id},
"enabled": (uid in sem["responsables"])
"enabled": (current_user.id in sem["responsables"])
or current_user.has_permission(Permission.ScoImplement),
"helpmsg": "",
},
@ -1006,10 +999,7 @@ def formsemestre_status(formsemestre_id=None, REQUEST=None):
<th class="evals">Evaluations</th></tr>"""
)
mails_enseignants = set(
[
sco_users.user_info(ens_id, REQUEST)["email"]
for ens_id in sem["responsables"]
]
[sco_users.user_info(ens_id)["email"] for ens_id in sem["responsables"]]
) # adr. mail des enseignants
for M in Mlist:
Mod = M["module"]

View File

@ -540,7 +540,7 @@ def XMLgetGroupsInPartition(partition_id, REQUEST=None): # was XMLgetGroupesTD
)
doc.append(x_group)
for etudid in etuds_set:
etud = sco_etud.get_etud_info(etudid=etudid, filled=1)[0]
etud = sco_etud.get_etud_info(etudid=etudid, filled=True)[0]
x_group.append(
Element(
"etud",

View File

@ -293,7 +293,7 @@ def _make_table_notes(
for etudid in etudids:
css_row_class = None
# infos identite etudiant
etud = sco_etud.get_etud_info(etudid=etudid, filled=1)[0]
etud = sco_etud.get_etud_info(etudid=etudid, filled=True)[0]
# infos inscription
inscr = sco_formsemestre_inscriptions.do_formsemestre_inscription_list(
{"etudid": etudid, "formsemestre_id": M["formsemestre_id"]}

View File

@ -27,7 +27,8 @@
"""Fonctions sur les moduleimpl
"""
# codes anciens déplacés de ZEntreprise
from flask_login import current_user
import app.scodoc.sco_utils as scu
import app.scodoc.notesdb as ndb
@ -321,17 +322,15 @@ def can_change_module_resp(REQUEST, moduleimpl_id):
if not sem["etat"]:
raise ScoValueError("Modification impossible: semestre verrouille")
# -- check access
authuser = REQUEST.AUTHENTICATED_USER
uid = str(authuser)
# admin ou resp. semestre avec flag resp_can_change_resp
if not authuser.has_permission(Permission.ScoImplement) and (
(uid not in sem["responsables"]) or (not sem["resp_can_change_ens"])
if not current_user.has_permission(Permission.ScoImplement) and (
(current_user.id not in sem["responsables"]) or (not sem["resp_can_change_ens"])
):
raise AccessDenied("Modification impossible pour %s" % uid)
raise AccessDenied("Modification impossible pour %s" % current_user)
return M, sem
def can_change_ens(REQUEST, moduleimpl_id, raise_exc=True):
def can_change_ens(moduleimpl_id, raise_exc=True):
"check if current user can modify ens list (raise exception if not)"
M = do_moduleimpl_withmodule_list(moduleimpl_id=moduleimpl_id)[0]
# -- check lock
@ -342,16 +341,14 @@ def can_change_ens(REQUEST, moduleimpl_id, raise_exc=True):
else:
return False
# -- check access
authuser = REQUEST.AUTHENTICATED_USER
uid = str(authuser)
# admin, resp. module ou resp. semestre
if (
uid != M["responsable_id"]
and not authuser.has_permission(Permission.ScoImplement)
and (uid not in sem["responsables"])
current_user.id != M["responsable_id"]
and not current_user.has_permission(Permission.ScoImplement)
and (current_user.id not in sem["responsables"])
):
if raise_exc:
raise AccessDenied("Modification impossible pour %s" % uid)
raise AccessDenied("Modification impossible pour %s" % current_user)
else:
return False
return M, sem

View File

@ -204,7 +204,7 @@ def moduleimpl_status(moduleimpl_id=None, partition_id=None, REQUEST=None):
)
H.append("""</td><td>""")
try:
sco_moduleimpl.can_change_ens(REQUEST, moduleimpl_id)
sco_moduleimpl.can_change_ens(moduleimpl_id)
H.append(
"""<a class="stdlink" href="edit_enseignants_form?moduleimpl_id=%s">modifier les enseignants</a>"""
% moduleimpl_id
@ -247,7 +247,7 @@ def moduleimpl_status(moduleimpl_id=None, partition_id=None, REQUEST=None):
'<tr><td class="fichetitre2" colspan="4">Règle de calcul: <span class="formula" title="mode de calcul de la moyenne du module">moyenne=<tt>%s</tt></span>'
% M["computation_expr"]
)
if sco_moduleimpl.can_change_ens(REQUEST, moduleimpl_id, raise_exc=False):
if sco_moduleimpl.can_change_ens(moduleimpl_id, raise_exc=False):
H.append(
'<span class="fl"><a class="stdlink" href="edit_moduleimpl_expr?moduleimpl_id=%s">modifier</a></span>'
% moduleimpl_id
@ -257,7 +257,7 @@ def moduleimpl_status(moduleimpl_id=None, partition_id=None, REQUEST=None):
H.append(
'<tr><td colspan="4"><em title="mode de calcul de la moyenne du module">règle de calcul standard</em>'
)
if sco_moduleimpl.can_change_ens(REQUEST, moduleimpl_id, raise_exc=False):
if sco_moduleimpl.can_change_ens(moduleimpl_id, raise_exc=False):
H.append(
' (<a class="stdlink" href="edit_moduleimpl_expr?moduleimpl_id=%s">changer</a>)'
% moduleimpl_id

View File

@ -90,7 +90,7 @@ def add(typ, object=None, text="", url=None, max_frequency=False):
cnx = ndb.GetDBConnexion()
args = {
"authenticated_user": authuser_name,
"user_info": sco_users.user_info(user_name=authuser_name),
"user_info": sco_users.user_info(authuser_name),
"type": typ,
"object": object,
"text": text,
@ -163,8 +163,7 @@ def scolar_news_summary(n=5):
% infos
)
n["text"] += (
" par "
+ sco_users.user_info(user_name=n["authenticated_user"])["nomcomplet"]
" par " + sco_users.user_info(n["authenticated_user"])["nomcomplet"]
)
return news

View File

@ -144,14 +144,13 @@ def _menuScolarite(authuser, sem, etudid):
def ficheEtud(etudid=None, REQUEST=None):
"fiche d'informations sur un etudiant"
log("XXX ficheEtud etudid=%s" % etudid)
authuser = REQUEST.AUTHENTICATED_USER
cnx = ndb.GetDBConnexion()
if etudid and REQUEST:
# la sidebar est differente s'il y a ou pas un etudid
# voir html_sidebar.sidebar()
REQUEST.form["etudid"] = etudid
args = sco_etud.make_etud_args(etudid=etudid, REQUEST=REQUEST)
args = sco_etud.make_etud_args(etudid=etudid)
etuds = sco_etud.etudident_list(cnx, args)
if not etuds:
log("ficheEtud: etudid=%s REQUEST.form=%s" % (etudid, REQUEST.form))
@ -494,7 +493,7 @@ def menus_etud(REQUEST=None):
return ""
authuser = REQUEST.AUTHENTICATED_USER
etud = sco_etud.get_etud_info(filled=1, REQUEST=REQUEST)[0]
etud = sco_etud.get_etud_info(filled=True)[0]
menuEtud = [
{
@ -539,7 +538,7 @@ def etud_info_html(etudid, with_photo="1", REQUEST=None, debug=False):
"""
formsemestre_id = sco_formsemestre_status.retreive_formsemestre_from_request()
with_photo = int(with_photo)
etud = sco_etud.get_etud_info(filled=1, REQUEST=REQUEST)[0]
etud = sco_etud.get_etud_info(filled=True)[0]
photo_html = sco_photos.etud_photo_html(
etud, title="fiche de " + etud["nom"], REQUEST=REQUEST
)

View File

@ -6,6 +6,8 @@
from flask import g
from flask_login import current_user
from app.auth.models import User
import app.scodoc.notesdb as ndb
from app.scodoc.sco_permissions import Permission
from app.scodoc import html_sco_header
@ -24,7 +26,6 @@ def can_edit_notes(authuser, moduleimpl_id, allow_ens=True):
from app.scodoc import sco_formsemestre
from app.scodoc import sco_parcours_dut
uid = str(authuser)
M = sco_moduleimpl.do_moduleimpl_list(moduleimpl_id=moduleimpl_id)[0]
sem = sco_formsemestre.get_formsemestre(M["formsemestre_id"])
if not sem["etat"]:
@ -34,18 +35,18 @@ def can_edit_notes(authuser, moduleimpl_id, allow_ens=True):
# il y a des décisions de jury dans ce semestre !
return (
authuser.has_permission(Permission.ScoEditAllNotes)
or uid in sem["responsables"]
or authuser.id in sem["responsables"]
)
else:
if (
(not authuser.has_permission(Permission.ScoEditAllNotes))
and uid != M["responsable_id"]
and uid not in sem["responsables"]
and authuser.id != M["responsable_id"]
and authuser.id not in sem["responsables"]
):
# enseignant (chargé de TD) ?
if allow_ens:
for ens in M["ens"]:
if ens["ens_id"] == uid:
if ens["ens_id"] == authuser.id:
return True
return False
else:
@ -58,26 +59,23 @@ def can_edit_evaluation(moduleimpl_id=None):
Sinon, lance une exception.
(nb: n'implique pas le droit de saisir ou modifier des notes)
"""
# was _evaluation_check_write_access
# AccessDenied("Modification évaluation impossible pour %s" % (uid,))
from app.scodoc import sco_formsemestre
# acces pour resp. moduleimpl et resp. form semestre (dir etud)
if moduleimpl_id is None:
raise ValueError("no moduleimpl specified") # bug
uid = current_user.user_name
M = sco_moduleimpl.do_moduleimpl_list(moduleimpl_id=moduleimpl_id)[0]
sem = sco_formsemestre.get_formsemestre(M["formsemestre_id"])
if (
current_user.has_permission(Permission.ScoEditAllEvals)
or uid == M["responsable_id"]
or uid in sem["responsables"]
or current_user.id == M["responsable_id"]
or current_user.id in sem["responsables"]
):
return True
elif sem["ens_can_edit_eval"]:
for ens in M["ens"]:
if ens["ens_id"] == uid:
if ens["ens_id"] == current_user.id:
return True
return False
@ -130,7 +128,7 @@ def is_chef_or_diretud(sem):
"Vrai si utilisateur est admin, chef dept ou responsable du semestre"
if (
current_user.has_permission(Permission.ScoImplement)
or current_user.user_name in sem["responsables"]
or current_user.id in sem["responsables"]
):
return True
return False
@ -145,9 +143,9 @@ def check_access_diretud(formsemestre_id, required_permission=Permission.ScoImpl
sem = sco_formsemestre.get_formsemestre(formsemestre_id)
header = html_sco_header.sco_header(page_title="Accès interdit")
footer = html_sco_header.sco_footer()
if (
current_user.user_name not in sem["responsables"]
) and not current_user.has_permission(required_permission):
if (current_user.id not in sem["responsables"]) and not current_user.has_permission(
required_permission
):
return (
False,
"\n".join(
@ -155,7 +153,9 @@ def check_access_diretud(formsemestre_id, required_permission=Permission.ScoImpl
header,
"<h2>Opération non autorisée pour %s</h2>" % current_user,
"<p>Responsable de ce semestre : <b>%s</b></p>"
% ", ".join(sem["responsables"]),
% ", ".join(
[User.query.get(i).get_prenomnom() for i in sem["responsables"]]
),
footer,
]
),
@ -173,7 +173,7 @@ def can_change_groups(formsemestre_id):
return False # semestre verrouillé
if current_user.has_permission(Permission.ScoEtudChangeGroups):
return True # admin, chef dept
if current_user.user_name in sem["responsables"]:
if current_user.id in sem["responsables"]:
return True
return False

View File

@ -125,7 +125,7 @@ def get_photo_image(etudid=None, size="small", REQUEST=None):
if not etudid:
filename = UNKNOWN_IMAGE_PATH
else:
etud = sco_etud.get_etud_info(etudid=etudid, filled=1, REQUEST=REQUEST)[0]
etud = sco_etud.get_etud_info(filled=True, etudid=etudid)[0]
filename = photo_pathname(etud, size=size)
if not filename:
filename = UNKNOWN_IMAGE_PATH
@ -178,7 +178,7 @@ def etud_photo_html(etud=None, etudid=None, title=None, size="small", REQUEST=No
"""
if not etud:
if etudid:
etud = sco_etud.get_etud_info(etudid=etudid, filled=1, REQUEST=REQUEST)[0]
etud = sco_etud.get_etud_info(filled=True, etudid=etudid)[0]
else:
raise ValueError("etud_photo_html: either etud or etudid must be specified")
photo_url = etud_photo_url(etud, size=size)

View File

@ -609,7 +609,7 @@ def formsemestre_pvjury_pdf(formsemestre_id, group_ids=[], etudid=None, REQUEST=
groups_infos = None
if etudid:
# PV pour ce seul étudiant:
etud = sco_etud.get_etud_info(etudid=etudid, filled=1)[0]
etud = sco_etud.get_etud_info(etudid=etudid, filled=True)[0]
etuddescr = '<a class="discretelink" href="ficheEtud?etudid=%s">%s</a>' % (
etudid,
etud["nomprenom"],

View File

@ -42,6 +42,8 @@ from reportlab.lib.pagesizes import A4, landscape
from reportlab.lib import styles
from reportlab.lib.colors import Color
from flask import g
import app.scodoc.sco_utils as scu
from app.scodoc import sco_bulletins_pdf
from app.scodoc import sco_codes_parcours

View File

@ -194,7 +194,7 @@ def formsemestre_synchro_etuds(
if a_desinscrire or a_desinscrire_without_key:
H.append("<h3>Etudiants à désinscrire :</h3><ol>")
for key in a_desinscrire:
etud = sco_etud.get_etud_info(filled=1, code_nip=key)[0]
etud = sco_etud.get_etud_info(filled=True, code_nip=key)[0]
H.append('<li class="desinscription">%(nomprenom)s</li>' % etud)
for etudid in a_desinscrire_without_key:
etud = inscrits_without_key_all[etudid]
@ -794,7 +794,7 @@ def formsemestre_import_etud_admission(
for i in ins:
etudid = i["etudid"]
info = sco_etud.get_etud_info(etudid=etudid, filled=1)[0]
info = sco_etud.get_etud_info(etudid=etudid, filled=True)[0]
code_nip = info["code_nip"]
if not code_nip:
no_nip.append(etudid)

View File

@ -81,7 +81,6 @@ def external_ue_create(
acronyme="",
ue_type=sco_codes_parcours.UE_STANDARD,
ects=0.0,
REQUEST=None,
):
"""Crée UE/matiere/module/evaluation puis saisie les notes"""
log("external_ue_create( formsemestre_id=%s, titre=%s )" % (formsemestre_id, titre))
@ -127,9 +126,8 @@ def external_ue_create(
{
"module_id": module_id,
"formsemestre_id": formsemestre_id,
"responsable_id": sem["responsables"][
0
], # affecte le 1er responsable du semestre comme resp. du module
# affecte le 1er responsable du semestre comme resp. du module
"responsable_id": sem["responsables"][0],
},
)
@ -217,7 +215,7 @@ def external_ue_create_form(formsemestre_id, etudid, REQUEST=None):
if not sem["resp_can_edit"] or (current_user.id not in sem["responsables"]):
raise AccessDenied("vous n'avez pas le droit d'effectuer cette opération")
etud = sco_etud.get_etud_info(etudid=etudid, filled=1, REQUEST=REQUEST)[0]
etud = sco_etud.get_etud_info(filled=True, etudid=etudid)[0]
formation_id = sem["formation_id"]
existing_external_ue = get_existing_external_ue(formation_id)
@ -357,7 +355,6 @@ def external_ue_create_form(formsemestre_id, etudid, REQUEST=None):
)
moduleimpl_id = external_ue_create(
formsemestre_id,
REQUEST=REQUEST,
titre=tf[2]["titre"],
acronyme=acronyme,
ue_type=tf[2]["type"], # type de l'UE

View File

@ -238,17 +238,18 @@ def _user_list(user_name):
return None
def user_info(user_name=None, user=None):
def user_info(user_name_or_id=None, user=None):
"""Dict avec infos sur l'utilisateur (qui peut ne pas etre dans notre base).
Si user_name est specifie (string ou id), interroge la BD. Sinon, user doit etre une instance
de User.
"""
if user_name is not None:
if isinstance(user_name, int):
u = User.query.filter_by(id=user_name).first()
if user_name_or_id is not None:
if isinstance(user_name_or_id, int):
u = User.query.filter_by(id=user_name_or_id).first()
else:
u = User.query.filter_by(user_name=user_name).first()
u = User.query.filter_by(user_name=user_name_or_id).first()
if u:
user_name = u.user_name
info = u.to_dict()
else:
info = None

View File

@ -151,7 +151,7 @@ def index_html(REQUEST=None):
H.append(
"""<p>Pour signaler, annuler ou justifier une absence, choisissez d'abord l'étudiant concerné:</p>"""
)
H.append(sco_find_etud.form_search_etud(REQUEST))
H.append(sco_find_etud.form_search_etud())
if authuser.has_permission(Permission.ScoAbsChange):
H.extend(
(
@ -1070,9 +1070,7 @@ def AddBilletAbsence(
"""
t0 = time.time()
# check etudid
etuds = sco_etud.get_etud_info(
etudid=etudid, code_nip=code_nip, REQUEST=REQUEST, filled=True
)
etuds = sco_etud.get_etud_info(etudid=etudid, code_nip=code_nip, filled=True)
if not etuds:
return scu.log_unknown_etud(REQUEST=REQUEST)
etud = etuds[0]
@ -1117,7 +1115,7 @@ def AddBilletAbsenceForm(etudid, REQUEST=None):
"""Formulaire ajout billet (pour tests seulement, le vrai formulaire accessible aux etudiants
étant sur le portail étudiant).
"""
etud = sco_etud.get_etud_info(etudid=etudid, filled=1, REQUEST=REQUEST)[0]
etud = sco_etud.get_etud_info(filled=True, etudid=etudid)[0]
H = [
html_sco_header.sco_header(
page_title="Billet d'absence de %s" % etud["nomprenom"]
@ -1227,7 +1225,7 @@ def _tableBillets(billets, etud=None, title=""):
@scodoc7func
def listeBilletsEtud(etudid=False, REQUEST=None, format="html"):
"""Liste billets pour un etudiant"""
etuds = sco_etud.get_etud_info(etudid=etudid, filled=1, REQUEST=REQUEST)
etuds = sco_etud.get_etud_info(filled=True, etudid=etudid)
if not etuds:
return scu.log_unknown_etud(format=format, REQUEST=REQUEST)
@ -1386,7 +1384,7 @@ def ProcessBilletAbsenceForm(billet_id, REQUEST=None):
)
billet = billets[0]
etudid = billet["etudid"]
etud = sco_etud.get_etud_info(etudid=etudid, filled=1, REQUEST=REQUEST)[0]
etud = sco_etud.get_etud_info(filled=True, etudid=etudid)[0]
H = [
html_sco_header.sco_header(
@ -1470,7 +1468,7 @@ def ProcessBilletAbsenceForm(billet_id, REQUEST=None):
def XMLgetAbsEtud(beg_date="", end_date="", REQUEST=None):
"""returns list of absences in date interval"""
t0 = time.time()
etud = sco_etud.get_etud_info(REQUEST=REQUEST)[0]
etud = sco_etud.get_etud_info(filled=False)[0]
exp = re.compile(r"^(\d{4})\D?(0[1-9]|1[0-2])\D?([12]\d|0[1-9]|3[01])$")
if not exp.match(beg_date):
raise ScoValueError("invalid date: %s" % beg_date)

View File

@ -671,7 +671,7 @@ def formsemestre_custommenu_edit(REQUEST, formsemestre_id):
@scodoc7func
def edit_enseignants_form(REQUEST, moduleimpl_id):
"modif liste enseignants/moduleimpl"
M, sem = sco_moduleimpl.can_change_ens(REQUEST, moduleimpl_id)
M, sem = sco_moduleimpl.can_change_ens(moduleimpl_id)
# --
header = html_sco_header.html_sem_header(
REQUEST,
@ -915,7 +915,7 @@ def edit_moduleimpl_expr(REQUEST, moduleimpl_id):
"""Edition formule calcul moyenne module
Accessible par Admin, dir des etud et responsable module
"""
M, sem = sco_moduleimpl.can_change_ens(REQUEST, moduleimpl_id)
M, sem = sco_moduleimpl.can_change_ens(moduleimpl_id)
H = [
html_sco_header.html_sem_header(
REQUEST,
@ -1230,12 +1230,12 @@ def formsemestre_enseignants_list(REQUEST, formsemestre_id, format="html"):
@scodoc
@permission_required(Permission.ScoView)
@scodoc7func
def edit_enseignants_form_delete(REQUEST, moduleimpl_id, ens_id: int):
def edit_enseignants_form_delete(moduleimpl_id, ens_id: int):
"""remove ens from this modueimpl
ens_id: user.id
"""
M, _ = sco_moduleimpl.can_change_ens(REQUEST, moduleimpl_id)
M, _ = sco_moduleimpl.can_change_ens(moduleimpl_id)
# search ens_id
ok = False
for ens in M["ens"]:
@ -1319,7 +1319,7 @@ def formsemestre_desinscription(
% (etudid, formsemestre_id)
)
if not dialog_confirmed:
etud = sco_etud.get_etud_info(etudid=etudid, filled=1)[0]
etud = sco_etud.get_etud_info(etudid=etudid, filled=True)[0]
if sem["modalite"] != "EXT":
msg_ext = """
<p>%s sera désinscrit de tous les modules du semestre %s (%s - %s).</p>
@ -1867,7 +1867,7 @@ def appreciation_add_form(
logdb(cnx, method="appreciation_suppress", etudid=etudid, msg="")
return flask.redirect(bull_url)
#
etud = sco_etud.get_etud_info(etudid=etudid, filled=1)[0]
etud = sco_etud.get_etud_info(etudid=etudid, filled=True)[0]
if id:
a = "Edition"
else:
@ -2144,7 +2144,7 @@ def formsemestre_validation_suppress_etud(
)
if not dialog_confirmed:
sem = sco_formsemestre.get_formsemestre(formsemestre_id)
etud = sco_etud.get_etud_info(etudid=etudid, filled=1)[0]
etud = sco_etud.get_etud_info(etudid=etudid, filled=True)[0]
nt = sco_cache.NotesTableCache.get(formsemestre_id) # > get_etud_decision_sem
decision_jury = nt.get_etud_decision_sem(etudid)
if decision_jury:

View File

@ -34,7 +34,6 @@ Emmanuel Viennet, 2021
import sys
import time
# StringIO => io.StringIO or io.BytesIO for text and data respectively. #py3
from io import StringIO
from zipfile import ZipFile
@ -134,7 +133,7 @@ log("ScoDoc8 restarting...")
@scodoc
@permission_required(Permission.ScoView)
@scodoc7func
def about(REQUEST):
def about():
"version info"
H = [
"""<h2>Système de gestion scolarité</h2>
@ -180,18 +179,19 @@ def edit_preferences(REQUEST):
@scodoc7func
def formsemestre_edit_preferences(formsemestre_id, REQUEST):
"""Edit preferences for a semestre"""
authuser = REQUEST.AUTHENTICATED_USER
sem = sco_formsemestre.get_formsemestre(formsemestre_id)
ok = (
authuser.has_permission(Permission.ScoImplement)
or ((str(authuser) in sem["responsables"]) and sem["resp_can_edit"])
current_user.has_permission(Permission.ScoImplement)
or ((current_user.id in sem["responsables"]) and sem["resp_can_edit"])
) and (sem["etat"])
if ok:
return sco_preferences.SemPreferences(formsemestre_id=formsemestre_id).edit(
REQUEST=REQUEST
)
else:
raise AccessDenied("Modification impossible pour %s" % authuser)
raise AccessDenied(
"Modification impossible pour %s" % current_user.get_nomplogin()
)
@bp.route("/doc_preferences")
@ -217,7 +217,7 @@ def doc_preferences(REQUEST):
@scodoc7func
def showEtudLog(etudid, format="html", REQUEST=None):
"""Display log of operations on this student"""
etud = sco_etud.get_etud_info(filled=1, REQUEST=REQUEST)[0]
etud = sco_etud.get_etud_info(filled=True)[0]
ops = sco_etud.list_scolog(etudid)
@ -309,9 +309,7 @@ def getEtudInfo(etudid=False, code_nip=False, filled=False, REQUEST=None, format
ou bien cherche dans REQUEST.form: etudid, code_nip, code_ine
(dans cet ordre).
"""
etud = sco_etud.get_etud_info(
etudid=etudid, code_nip=code_nip, filled=filled, REQUEST=REQUEST
)
etud = sco_etud.get_etud_info(etudid=etudid, code_nip=code_nip, filled=filled)
if format is None:
return etud
else:
@ -339,7 +337,7 @@ sco_publish(
def etud_info(etudid=None, format="xml", REQUEST=None):
"Donne les informations sur un etudiant"
t0 = time.time()
args = sco_etud.make_etud_args(etudid=etudid, REQUEST=REQUEST)
args = sco_etud.make_etud_args(etudid=etudid)
cnx = ndb.GetDBConnexion()
etuds = sco_etud.etudident_list(cnx, args)
if not etuds:
@ -562,7 +560,7 @@ def doSuppressAnnotation(etudid, annotation_id, REQUEST):
def formChangeCoordonnees(etudid, REQUEST):
"edit coordonnees etudiant"
cnx = ndb.GetDBConnexion()
etud = sco_etud.get_etud_info(etudid=etudid, filled=1, REQUEST=REQUEST)[0]
etud = sco_etud.get_etud_info(filled=True, etudid=etudid)[0]
adrs = sco_etud.adresse_list(cnx, {"etudid": etudid})
if adrs:
adr = adrs[0]
@ -747,7 +745,7 @@ sco_publish("/etud_photo_html", sco_photos.etud_photo_html, Permission.ScoView)
@scodoc7func
def etud_photo_orig_page(etudid=None, REQUEST=None):
"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(filled=True, etudid=etudid)[0]
H = [
html_sco_header.sco_header(page_title=etud["nomprenom"]),
"<h2>%s</h2>" % etud["nomprenom"],
@ -766,7 +764,7 @@ def etud_photo_orig_page(etudid=None, REQUEST=None):
@scodoc7func
def formChangePhoto(etudid=None, REQUEST=None):
"""Formulaire changement photo étudiant"""
etud = sco_etud.get_etud_info(filled=1, REQUEST=REQUEST)[0]
etud = sco_etud.get_etud_info(filled=True)[0]
if sco_photos.etud_photo_is_local(etud):
etud["photoloc"] = "dans ScoDoc"
else:
@ -824,7 +822,7 @@ def formChangePhoto(etudid=None, REQUEST=None):
@scodoc7func
def formSuppressPhoto(etudid=None, REQUEST=None, dialog_confirmed=False):
"""Formulaire suppression photo étudiant"""
etud = sco_etud.get_etud_info(filled=1, REQUEST=REQUEST)[0]
etud = sco_etud.get_etud_info(filled=True)[0]
if not dialog_confirmed:
return scu.confirm_dialog(
"<p>Confirmer la suppression de la photo de %(nomprenom)s ?</p>" % etud,
@ -881,7 +879,7 @@ def _formDem_of_Def(
operation_method="",
):
"Formulaire démission ou défaillance Etudiant"
etud = sco_etud.get_etud_info(etudid=etudid, filled=1, REQUEST=REQUEST)[0]
etud = sco_etud.get_etud_info(filled=True, etudid=etudid)[0]
sem = sco_formsemestre.get_formsemestre(formsemestre_id)
if not sem["etat"]:
raise ScoValueError("Modification impossible: semestre verrouille")

View File

@ -84,7 +84,7 @@ def index_html(REQUEST, all_depts=False, with_inactives=False, format="html"):
@permission_required(Permission.ScoUsersView)
@scodoc7func
def user_info(user_name, format="json", REQUEST=None):
info = sco_users.user_info(user_name=user_name)
info = sco_users.user_info(user_name)
return scu.sendResult(REQUEST, info, name="user", format=format)