forked from ScoDoc/ScoDoc
restrictions/département. Utilise partout Justificatif.get_justificatif.
This commit is contained in:
parent
5f49355ec3
commit
2944fb0795
@ -11,6 +11,7 @@ from flask_json import as_json
|
||||
from flask import g, request
|
||||
from flask_login import login_required, current_user
|
||||
from flask_sqlalchemy.query import Query
|
||||
from werkzeug.exceptions import NotFound
|
||||
|
||||
import app.scodoc.sco_assiduites as scass
|
||||
import app.scodoc.sco_utils as scu
|
||||
@ -150,7 +151,7 @@ def justificatifs(etudid: int = None, nip=None, ine=None, with_query: bool = Fal
|
||||
@as_json
|
||||
@permission_required(Permission.ScoView)
|
||||
def justificatifs_dept(dept_id: int = None, with_query: bool = False):
|
||||
""" """
|
||||
"""XXX TODO missing doc"""
|
||||
|
||||
# Récupération du département et des étudiants du département
|
||||
dept: Departement = Departement.query.get_or_404(dept_id)
|
||||
@ -373,7 +374,7 @@ def _create_one(
|
||||
date_debut=deb,
|
||||
date_fin=fin,
|
||||
etat=etat,
|
||||
etud=etud,
|
||||
etudiant=etud,
|
||||
raison=raison,
|
||||
user_id=current_user.id,
|
||||
external_data=external_data,
|
||||
@ -419,9 +420,7 @@ def justif_edit(justif_id: int):
|
||||
"""
|
||||
|
||||
# Récupération du justificatif à modifier
|
||||
justificatif_unique: Query = Justificatif.query.filter_by(
|
||||
id=justif_id
|
||||
).first_or_404()
|
||||
justificatif_unique = Justificatif.get_justificatif(justif_id)
|
||||
|
||||
errors: list[str] = []
|
||||
data = request.get_json(force=True)
|
||||
@ -497,7 +496,7 @@ def justif_edit(justif_id: int):
|
||||
retour = {
|
||||
"couverture": {
|
||||
"avant": avant_ids,
|
||||
"après": compute_assiduites_justified(
|
||||
"apres": compute_assiduites_justified(
|
||||
justificatif_unique.etudid,
|
||||
[justificatif_unique],
|
||||
True,
|
||||
@ -561,12 +560,10 @@ def _delete_one(justif_id: int) -> tuple[int, str]:
|
||||
message : OK si réussi, message d'erreur sinon
|
||||
"""
|
||||
# Récupération du justificatif à supprimer
|
||||
justificatif_unique: Justificatif = Justificatif.query.filter_by(
|
||||
id=justif_id
|
||||
).first()
|
||||
if justificatif_unique is None:
|
||||
try:
|
||||
justificatif_unique = Justificatif.get_justificatif(justif_id)
|
||||
except NotFound:
|
||||
return (404, "Justificatif non existant")
|
||||
|
||||
# Récupération de l'archive du justificatif
|
||||
archive_name: str = justificatif_unique.fichier
|
||||
|
||||
@ -612,10 +609,7 @@ def justif_import(justif_id: int = None):
|
||||
return json_error(404, "Il n'y a pas de fichier joint")
|
||||
|
||||
# On récupère le justificatif auquel on va importer le fichier
|
||||
query: Query = Justificatif.query.filter_by(id=justif_id)
|
||||
if g.scodoc_dept:
|
||||
query = query.join(Identite).filter_by(dept_id=g.scodoc_dept_id)
|
||||
justificatif_unique: Justificatif = query.first_or_404()
|
||||
justificatif_unique = Justificatif.get_justificatif(justif_id)
|
||||
|
||||
# Récupération de l'archive si elle existe
|
||||
archive_name: str = justificatif_unique.fichier
|
||||
@ -658,10 +652,7 @@ def justif_export(justif_id: int | None = None, filename: str | None = None):
|
||||
La permission est ScoView + (AbsJustifView ou être l'auteur du justifcatif)
|
||||
"""
|
||||
# On récupère le justificatif concerné
|
||||
query: Query = Justificatif.query.filter_by(id=justif_id)
|
||||
if g.scodoc_dept:
|
||||
query = query.join(Identite).filter_by(dept_id=g.scodoc_dept_id)
|
||||
justificatif_unique: Justificatif = query.first_or_404()
|
||||
justificatif_unique = Justificatif.get_justificatif(justif_id)
|
||||
|
||||
# Vérification des permissions
|
||||
if not (
|
||||
@ -694,6 +685,7 @@ def justif_export(justif_id: int | None = None, filename: str | None = None):
|
||||
@as_json
|
||||
@permission_required(Permission.AbsChange)
|
||||
def justif_remove(justif_id: int = None):
|
||||
# XXX TODO pas de test unitaire
|
||||
"""
|
||||
Supression d'un fichier ou d'une archive
|
||||
{
|
||||
@ -710,10 +702,7 @@ def justif_remove(justif_id: int = None):
|
||||
data: dict = request.get_json(force=True)
|
||||
|
||||
# On récupère le justificatif concerné
|
||||
query: Query = Justificatif.query.filter_by(id=justif_id)
|
||||
if g.scodoc_dept:
|
||||
query = query.join(Identite).filter_by(dept_id=g.scodoc_dept_id)
|
||||
justificatif_unique: Justificatif = query.first_or_404()
|
||||
justificatif_unique = Justificatif.get_justificatif(justif_id)
|
||||
|
||||
# On récupère l'archive
|
||||
archive_name: str = justificatif_unique.fichier
|
||||
@ -775,10 +764,7 @@ def justif_list(justif_id: int = None):
|
||||
"""
|
||||
|
||||
# Récupération du justificatif concerné
|
||||
query: Query = Justificatif.query.filter_by(id=justif_id)
|
||||
if g.scodoc_dept:
|
||||
query = query.join(Identite).filter_by(dept_id=g.scodoc_dept_id)
|
||||
justificatif_unique: Justificatif = query.first_or_404()
|
||||
justificatif_unique = Justificatif.get_justificatif(justif_id)
|
||||
|
||||
# Récupération de l'archive avec l'archiver
|
||||
archive_name: str = justificatif_unique.fichier
|
||||
@ -820,10 +806,7 @@ def justif_justifies(justif_id: int = None):
|
||||
"""
|
||||
|
||||
# On récupère le justificatif concerné
|
||||
query: Query = Justificatif.query.filter_by(id=justif_id)
|
||||
if g.scodoc_dept:
|
||||
query = query.join(Identite).filter_by(dept_id=g.scodoc_dept_id)
|
||||
justificatif_unique: Justificatif = query.first_or_404()
|
||||
justificatif_unique = Justificatif.get_justificatif(justif_id)
|
||||
|
||||
# On récupère la liste des assiduités justifiées par le justificatif
|
||||
assiduites_list: list[int] = scass.justifies(justificatif_unique)
|
||||
@ -837,6 +820,7 @@ def justif_justifies(justif_id: int = None):
|
||||
def _filter_manager(requested, justificatifs_query: Query):
|
||||
"""
|
||||
Retourne les justificatifs entrés filtrés en fonction de la request
|
||||
et du département courant s'il y en a un
|
||||
"""
|
||||
# cas 1 : etat justificatif
|
||||
etat: str = requested.args.get("etat")
|
||||
@ -871,7 +855,7 @@ def _filter_manager(requested, justificatifs_query: Query):
|
||||
formsemestre: FormSemestre = None
|
||||
try:
|
||||
formsemestre_id = int(formsemestre_id)
|
||||
formsemestre = FormSemestre.query.filter_by(id=formsemestre_id).first()
|
||||
formsemestre = FormSemestre.get_formsemestre(formsemestre_id)
|
||||
justificatifs_query = scass.filter_by_formsemestre(
|
||||
justificatifs_query, Justificatif, formsemestre
|
||||
)
|
||||
@ -906,4 +890,10 @@ def _filter_manager(requested, justificatifs_query: Query):
|
||||
except ValueError:
|
||||
group_id = None
|
||||
|
||||
# Département
|
||||
if g.scodoc_dept:
|
||||
justificatifs_query = justificatifs_query.join(Identite).filter_by(
|
||||
dept_id=g.scodoc_dept_id
|
||||
)
|
||||
|
||||
return justificatifs_query
|
||||
|
Loading…
Reference in New Issue
Block a user