assiduites : fin grosses modifs

This commit is contained in:
iziram 2023-02-23 09:30:51 +01:00
parent b73a02ac67
commit 4f71575154
3 changed files with 33 additions and 9 deletions

View File

@ -484,6 +484,14 @@ def assiduite_edit(assiduite_id: int):
if desc is not False:
assiduite_unique.desc = desc
# Cas 4 : est_just
est_just = data.get("est_just")
if est_just is not None:
if not isinstance(est_just, bool):
errors.append("param 'est_just' : booléen non reconnu")
else:
assiduite_unique.est_just = est_just
if errors:
err: str = ", ".join(errors)
return json_error(404, err)
@ -633,8 +641,6 @@ def _filter_manager(requested, assiduites_query: Assiduite):
user_id = requested.args.get("user_id", False)
if user_id is not False:
assiduites_query: Assiduite = scass.filter_assiduites_by_user_id(
assiduites_query, user_id
)
assiduites_query: Assiduite = scass.filter_by_user_id(assiduites_query, user_id)
return assiduites_query

View File

@ -18,6 +18,7 @@ from app.api import api_web_bp
from app.api import get_model_api_object
from app.decorators import permission_required, scodoc
from app.models import Identite, Justificatif
from app.models.assiduites import compute_assiduites_justified
from app.scodoc.sco_archives_justificatifs import JustificatifArchiver
from app.scodoc.sco_exceptions import ScoValueError
from app.scodoc.sco_permissions import Permission
@ -79,6 +80,9 @@ def justificatifs(etudid: int = None, with_query: bool = False):
dont la date de fin est inférieure ou égale à la valeur donnée):
query?date_fin=[- date au format iso -]
ex: query?date_fin=2022-11-03T10:00+01:00
user_id (l'id de l'auteur du justificatif)
query?user_id=[int]
ex query?user_id=3
"""
query = Identite.query.filter_by(id=etudid)
@ -140,7 +144,7 @@ def justif_create(etudid: int = None):
errors[i] = obj
else:
success[i] = obj
compute_assiduites_justified(Justificatif.query.filter_by(etudid=etudid), True)
return jsonify({"errors": errors, "success": success})
@ -198,6 +202,7 @@ def _create_singular(
db.session.add(nouv_justificatif)
db.session.commit()
return (
200,
{
@ -290,11 +295,15 @@ def justif_edit(justif_id: int):
db.session.add(justificatif_unique)
db.session.commit()
return jsonify(
{
"couverture": {
"avant": avant_ids,
"après": scass.justifies(justificatif_unique),
"après": compute_assiduites_justified(
Justificatif.query.filter_by(etudid=justificatif_unique.etudid),
True,
),
}
}
)
@ -573,4 +582,10 @@ def _filter_manager(requested, justificatifs_query):
justificatifs_query, Justificatif, deb, fin
)
user_id = requested.args.get("user_id", False)
if user_id is not False:
justificatif_query: Justificatif = scass.filter_by_user_id(
justificatif_query, user_id
)
return justificatifs_query

View File

@ -196,7 +196,7 @@ def get_assiduites_stats(
elif key == "est_just":
assiduites = filter_assiduites_by_est_just(assiduites, filtered[key])
elif key == "user_id":
assiduites = filter_assiduites_by_user_id(assiduites, filtered[key])
assiduites = filter_by_user_id(assiduites, filtered[key])
if (deb, fin) != (None, None):
assiduites = filter_by_date(assiduites, Assiduite, deb, fin)
@ -232,11 +232,14 @@ def filter_assiduites_by_est_just(
return assiduites.filter_by(est_just=est_just)
def filter_assiduites_by_user_id(assiduites: Assiduite, user_id: int) -> Justificatif:
def filter_by_user_id(
collection: Assiduite or Justificatif,
user_id: int,
) -> Justificatif:
"""
Filtrage d'une collection d'assiduites en fonction de l'user_id
Filtrage d'une collection en fonction de l'user_id
"""
return assiduites.filter_by(user_id=user_id)
return collection.filter_by(user_id=user_id)
def filter_by_date(