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