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)
|
return get_model_api_object(Assiduite, assiduite_id, Identite)
|
||||||
|
|
||||||
|
|
||||||
@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")
|
@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
|
@scodoc
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoView)
|
||||||
@as_json
|
@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
|
"""Retourne la liste des justificatifs qui justifie cette assiduitée
|
||||||
|
|
||||||
Exemple de résultat:
|
Exemple de résultat:
|
||||||
@ -71,15 +77,7 @@ def assiduite_justificatifs(assiduite_id: int = None):
|
|||||||
]
|
]
|
||||||
"""
|
"""
|
||||||
|
|
||||||
assi: Assiduite = Assiduite.query.get_or_404(assiduite_id)
|
return _get_assiduites_justif(assiduite_id, True)
|
||||||
|
|
||||||
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]
|
|
||||||
|
|
||||||
|
|
||||||
# etudid
|
# etudid
|
||||||
@ -154,6 +152,7 @@ def count_assiduites(
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
# query = Identite.query.filter_by(id=etudid)
|
# query = Identite.query.filter_by(id=etudid)
|
||||||
# if g.scodoc_dept:
|
# 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] = []
|
data_set: list[dict] = []
|
||||||
for ass in assiduites_query.all():
|
for ass in assiduites_query.all():
|
||||||
data = ass.to_dict(format_api=True)
|
data = ass.to_dict(format_api=True)
|
||||||
|
data = _with_justifs(data)
|
||||||
data_set.append(data)
|
data_set.append(data)
|
||||||
|
|
||||||
return data_set
|
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}
|
data_set: dict[list[dict]] = {str(key): [] for key in etuds}
|
||||||
for ass in assiduites_query.all():
|
for ass in assiduites_query.all():
|
||||||
data = ass.to_dict(format_api=True)
|
data = ass.to_dict(format_api=True)
|
||||||
|
data = _with_justifs(data)
|
||||||
data_set.get(str(data["etudid"])).append(data)
|
data_set.get(str(data["etudid"])).append(data)
|
||||||
return data_set
|
return data_set
|
||||||
|
|
||||||
@ -378,6 +379,7 @@ def assiduites_formsemestre(formsemestre_id: int, with_query: bool = False):
|
|||||||
data_set: list[dict] = []
|
data_set: list[dict] = []
|
||||||
for ass in assiduites_query.all():
|
for ass in assiduites_query.all():
|
||||||
data = ass.to_dict(format_api=True)
|
data = ass.to_dict(format_api=True)
|
||||||
|
data = _with_justifs(data)
|
||||||
data_set.append(data)
|
data_set.append(data)
|
||||||
|
|
||||||
return data_set
|
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)
|
assiduites_query: Assiduite = scass.filter_by_user_id(assiduites_query, user_id)
|
||||||
|
|
||||||
return assiduites_query
|
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