forked from ScoDoc/ScoDoc
Assiduites : query with_justifs
This commit is contained in:
parent
cab5a71925
commit
2a971eb365
@ -54,12 +54,18 @@ def assiduite(assiduite_id: int = None):
|
||||
return get_model_api_object(Assiduite, assiduite_id, Identite)
|
||||
|
||||
|
||||
@bp.route("/assiduite/<int:assiduite_id>/justificatifs")
|
||||
@api_web_bp.route("/assiduite/<int:assiduite_id>/justificatifs")
|
||||
@bp.route("/assiduite/<int:assiduite_id>/justificatifs", defaults={"long": False})
|
||||
@api_web_bp.route(
|
||||
"/assiduite/<int:assiduite_id>/justificatifs", defaults={"long": False}
|
||||
)
|
||||
@bp.route("/assiduite/<int:assiduite_id>/justificatifs/long", defaults={"long": True})
|
||||
@api_web_bp.route(
|
||||
"/assiduite/<int:assiduite_id>/justificatifs/long", defaults={"long": True}
|
||||
)
|
||||
@scodoc
|
||||
@permission_required(Permission.ScoView)
|
||||
@as_json
|
||||
def assiduite_justificatifs(assiduite_id: int = None):
|
||||
def assiduite_justificatifs(assiduite_id: int = None, long: bool = False):
|
||||
"""Retourne la liste des justificatifs qui justifie cette assiduitée
|
||||
|
||||
Exemple de résultat:
|
||||
@ -71,15 +77,7 @@ def assiduite_justificatifs(assiduite_id: int = None):
|
||||
]
|
||||
"""
|
||||
|
||||
assi: Assiduite = Assiduite.query.get_or_404(assiduite_id)
|
||||
|
||||
justifs: Justificatif = Justificatif.query.filter(
|
||||
Justificatif.etudid == assi.etudid,
|
||||
Justificatif.date_debut <= assi.date_debut,
|
||||
Justificatif.date_fin >= assi.date_fin,
|
||||
)
|
||||
|
||||
return [j.justif_id for j in justifs]
|
||||
return _get_assiduites_justif(assiduite_id, True)
|
||||
|
||||
|
||||
# etudid
|
||||
@ -154,6 +152,7 @@ def count_assiduites(
|
||||
|
||||
|
||||
|
||||
|
||||
"""
|
||||
# query = Identite.query.filter_by(id=etudid)
|
||||
# if g.scodoc_dept:
|
||||
@ -264,6 +263,7 @@ def assiduites(etudid: int = None, nip=None, ine=None, with_query: bool = False)
|
||||
data_set: list[dict] = []
|
||||
for ass in assiduites_query.all():
|
||||
data = ass.to_dict(format_api=True)
|
||||
data = _with_justifs(data)
|
||||
data_set.append(data)
|
||||
|
||||
return data_set
|
||||
@ -339,6 +339,7 @@ def assiduites_group(with_query: bool = False):
|
||||
data_set: dict[list[dict]] = {str(key): [] for key in etuds}
|
||||
for ass in assiduites_query.all():
|
||||
data = ass.to_dict(format_api=True)
|
||||
data = _with_justifs(data)
|
||||
data_set.get(str(data["etudid"])).append(data)
|
||||
return data_set
|
||||
|
||||
@ -378,6 +379,7 @@ def assiduites_formsemestre(formsemestre_id: int, with_query: bool = False):
|
||||
data_set: list[dict] = []
|
||||
for ass in assiduites_query.all():
|
||||
data = ass.to_dict(format_api=True)
|
||||
data = _with_justifs(data)
|
||||
data_set.append(data)
|
||||
|
||||
return data_set
|
||||
@ -1010,3 +1012,22 @@ def _filter_manager(requested, assiduites_query: Assiduite):
|
||||
assiduites_query: Assiduite = scass.filter_by_user_id(assiduites_query, user_id)
|
||||
|
||||
return assiduites_query
|
||||
|
||||
|
||||
def _get_assiduites_justif(assiduite_id: int, long: bool):
|
||||
assi: Assiduite = Assiduite.query.get_or_404(assiduite_id)
|
||||
|
||||
justifs: Justificatif = Justificatif.query.filter(
|
||||
Justificatif.etudid == assi.etudid,
|
||||
Justificatif.date_debut <= assi.date_debut,
|
||||
Justificatif.date_fin >= assi.date_fin,
|
||||
)
|
||||
|
||||
return [j.justif_id if not long else j.to_dict(True) for j in justifs]
|
||||
|
||||
|
||||
def _with_justifs(assi):
|
||||
if request.args.get("with_justifs") is None:
|
||||
return assi
|
||||
assi["justificatifs"] = _get_assiduites_justif(assi["assiduite_id"], True)
|
||||
return assi
|
||||
|
Loading…
Reference in New Issue
Block a user