forked from ScoDoc/ScoDoc
Compare commits
6 Commits
e49448f809
...
55cd1e7bba
Author | SHA1 | Date | |
---|---|---|---|
55cd1e7bba | |||
b7e6783ae7 | |||
cf92cf4ff7 | |||
cad927858b | |||
d8f1a617bf | |||
|
2a63533fc0 |
@ -2,7 +2,7 @@
|
|||||||
"""
|
"""
|
||||||
from flask_json import as_json
|
from flask_json import as_json
|
||||||
from flask import Blueprint
|
from flask import Blueprint
|
||||||
from flask import request, g
|
from flask import request, g, jsonify
|
||||||
from app import db
|
from app import db
|
||||||
from app.scodoc import sco_utils as scu
|
from app.scodoc import sco_utils as scu
|
||||||
from app.scodoc.sco_exceptions import ScoException
|
from app.scodoc.sco_exceptions import ScoException
|
||||||
@ -35,7 +35,6 @@ def requested_format(default_format="json", allowed_formats=None):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
@as_json
|
|
||||||
def get_model_api_object(model_cls: db.Model, model_id: int, join_cls: db.Model = None):
|
def get_model_api_object(model_cls: db.Model, model_id: int, join_cls: db.Model = None):
|
||||||
"""
|
"""
|
||||||
Retourne une réponse contenant la représentation api de l'objet "Model[model_id]"
|
Retourne une réponse contenant la représentation api de l'objet "Model[model_id]"
|
||||||
@ -49,7 +48,7 @@ def get_model_api_object(model_cls: db.Model, model_id: int, join_cls: db.Model
|
|||||||
query = query.join(join_cls).filter_by(dept_id=g.scodoc_dept_id)
|
query = query.join(join_cls).filter_by(dept_id=g.scodoc_dept_id)
|
||||||
unique: model_cls = query.first_or_404()
|
unique: model_cls = query.first_or_404()
|
||||||
|
|
||||||
return unique.to_dict(format_api=True)
|
return jsonify(unique.to_dict(format_api=True))
|
||||||
|
|
||||||
|
|
||||||
from app.api import tokens
|
from app.api import tokens
|
||||||
|
@ -6,8 +6,7 @@
|
|||||||
"""ScoDoc 9 API : Assiduités
|
"""ScoDoc 9 API : Assiduités
|
||||||
"""
|
"""
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from flask_json import as_json
|
from flask import g, jsonify, request
|
||||||
from flask import g, request
|
|
||||||
from flask_login import login_required, current_user
|
from flask_login import login_required, current_user
|
||||||
|
|
||||||
import app.scodoc.sco_assiduites as scass
|
import app.scodoc.sco_assiduites as scass
|
||||||
@ -53,7 +52,6 @@ def assiduite(assiduite_id: int = None):
|
|||||||
@api_web_bp.route("/assiduites/<int:etudid>/count/query", defaults={"with_query": True})
|
@api_web_bp.route("/assiduites/<int:etudid>/count/query", defaults={"with_query": True})
|
||||||
@login_required
|
@login_required
|
||||||
@scodoc
|
@scodoc
|
||||||
@as_json
|
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoView)
|
||||||
def count_assiduites(etudid: int = None, with_query: bool = False):
|
def count_assiduites(etudid: int = None, with_query: bool = False):
|
||||||
"""
|
"""
|
||||||
@ -111,9 +109,11 @@ def count_assiduites(etudid: int = None, with_query: bool = False):
|
|||||||
if with_query:
|
if with_query:
|
||||||
metric, filtered = _count_manager(request)
|
metric, filtered = _count_manager(request)
|
||||||
|
|
||||||
return scass.get_assiduites_stats(
|
return jsonify(
|
||||||
|
scass.get_assiduites_stats(
|
||||||
assiduites=etud.assiduites, metric=metric, filtered=filtered
|
assiduites=etud.assiduites, metric=metric, filtered=filtered
|
||||||
)
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/assiduites/<int:etudid>", defaults={"with_query": False})
|
@bp.route("/assiduites/<int:etudid>", defaults={"with_query": False})
|
||||||
@ -122,7 +122,6 @@ def count_assiduites(etudid: int = None, with_query: bool = False):
|
|||||||
@api_web_bp.route("/assiduites/<int:etudid>/query", defaults={"with_query": True})
|
@api_web_bp.route("/assiduites/<int:etudid>/query", defaults={"with_query": True})
|
||||||
@login_required
|
@login_required
|
||||||
@scodoc
|
@scodoc
|
||||||
@as_json
|
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoView)
|
||||||
def assiduites(etudid: int = None, with_query: bool = False):
|
def assiduites(etudid: int = None, with_query: bool = False):
|
||||||
"""
|
"""
|
||||||
@ -179,14 +178,13 @@ def assiduites(etudid: int = None, with_query: bool = False):
|
|||||||
data = ass.to_dict(format_api=True)
|
data = ass.to_dict(format_api=True)
|
||||||
data_set.append(data)
|
data_set.append(data)
|
||||||
|
|
||||||
return data_set
|
return jsonify(data_set)
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/assiduites/group/query", defaults={"with_query": True})
|
@bp.route("/assiduites/group/query", defaults={"with_query": True})
|
||||||
@api_web_bp.route("/assiduites/group/query", defaults={"with_query": True})
|
@api_web_bp.route("/assiduites/group/query", defaults={"with_query": True})
|
||||||
@login_required
|
@login_required
|
||||||
@scodoc
|
@scodoc
|
||||||
@as_json
|
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoView)
|
||||||
def assiduites_group(with_query: bool = False):
|
def assiduites_group(with_query: bool = False):
|
||||||
"""
|
"""
|
||||||
@ -249,11 +247,12 @@ def assiduites_group(with_query: bool = False):
|
|||||||
if with_query:
|
if with_query:
|
||||||
assiduites_query = _filter_manager(request, assiduites_query)
|
assiduites_query = _filter_manager(request, assiduites_query)
|
||||||
|
|
||||||
data_set: dict[list[dict]] = {str(key): [] for key in etuds}
|
data_set: dict[list[dict]] = {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_set.get(str(data["etudid"])).append(data)
|
data_set.get(data["etudid"]).append(data)
|
||||||
return data_set
|
|
||||||
|
return jsonify(data_set)
|
||||||
|
|
||||||
|
|
||||||
@bp.route(
|
@bp.route(
|
||||||
@ -272,7 +271,6 @@ def assiduites_group(with_query: bool = False):
|
|||||||
)
|
)
|
||||||
@login_required
|
@login_required
|
||||||
@scodoc
|
@scodoc
|
||||||
@as_json
|
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoView)
|
||||||
def assiduites_formsemestre(formsemestre_id: int, with_query: bool = False):
|
def assiduites_formsemestre(formsemestre_id: int, with_query: bool = False):
|
||||||
"""Retourne toutes les assiduités du formsemestre"""
|
"""Retourne toutes les assiduités du formsemestre"""
|
||||||
@ -293,7 +291,7 @@ def assiduites_formsemestre(formsemestre_id: int, with_query: bool = False):
|
|||||||
data = ass.to_dict(format_api=True)
|
data = ass.to_dict(format_api=True)
|
||||||
data_set.append(data)
|
data_set.append(data)
|
||||||
|
|
||||||
return data_set
|
return jsonify(data_set)
|
||||||
|
|
||||||
|
|
||||||
@bp.route(
|
@bp.route(
|
||||||
@ -314,7 +312,6 @@ def assiduites_formsemestre(formsemestre_id: int, with_query: bool = False):
|
|||||||
)
|
)
|
||||||
@login_required
|
@login_required
|
||||||
@scodoc
|
@scodoc
|
||||||
@as_json
|
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoView)
|
||||||
def count_assiduites_formsemestre(
|
def count_assiduites_formsemestre(
|
||||||
formsemestre_id: int = None, with_query: bool = False
|
formsemestre_id: int = None, with_query: bool = False
|
||||||
@ -337,13 +334,12 @@ def count_assiduites_formsemestre(
|
|||||||
if with_query:
|
if with_query:
|
||||||
metric, filtered = _count_manager(request)
|
metric, filtered = _count_manager(request)
|
||||||
|
|
||||||
return scass.get_assiduites_stats(assiduites_query, metric, filtered)
|
return jsonify(scass.get_assiduites_stats(assiduites_query, metric, filtered))
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/assiduite/<int:etudid>/create", methods=["POST"])
|
@bp.route("/assiduite/<int:etudid>/create", methods=["POST"])
|
||||||
@api_web_bp.route("/assiduite/<int:etudid>/create", methods=["POST"])
|
@api_web_bp.route("/assiduite/<int:etudid>/create", methods=["POST"])
|
||||||
@scodoc
|
@scodoc
|
||||||
@as_json
|
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoView)
|
||||||
# @permission_required(Permission.ScoAssiduiteChange)
|
# @permission_required(Permission.ScoAssiduiteChange)
|
||||||
@ -386,13 +382,12 @@ def assiduite_create(etudid: int = None):
|
|||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
return {"errors": errors, "success": success}
|
return jsonify({"errors": errors, "success": success})
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/assiduites/create", methods=["POST"])
|
@bp.route("/assiduites/create", methods=["POST"])
|
||||||
@api_web_bp.route("/assiduites/create", methods=["POST"])
|
@api_web_bp.route("/assiduites/create", methods=["POST"])
|
||||||
@scodoc
|
@scodoc
|
||||||
@as_json
|
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoView)
|
||||||
# @permission_required(Permission.ScoAssiduiteChange)
|
# @permission_required(Permission.ScoAssiduiteChange)
|
||||||
@ -440,7 +435,7 @@ def assiduites_create():
|
|||||||
else:
|
else:
|
||||||
success[i] = obj
|
success[i] = obj
|
||||||
|
|
||||||
return {"errors": errors, "success": success}
|
return jsonify({"errors": errors, "success": success})
|
||||||
|
|
||||||
|
|
||||||
def _create_singular(
|
def _create_singular(
|
||||||
@ -520,7 +515,6 @@ def _create_singular(
|
|||||||
@api_web_bp.route("/assiduite/delete", methods=["POST"])
|
@api_web_bp.route("/assiduite/delete", methods=["POST"])
|
||||||
@login_required
|
@login_required
|
||||||
@scodoc
|
@scodoc
|
||||||
@as_json
|
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoView)
|
||||||
# @permission_required(Permission.ScoAssiduiteChange)
|
# @permission_required(Permission.ScoAssiduiteChange)
|
||||||
def assiduite_delete():
|
def assiduite_delete():
|
||||||
@ -549,7 +543,7 @@ def assiduite_delete():
|
|||||||
else:
|
else:
|
||||||
output["success"][f"{i}"] = {"OK": True}
|
output["success"][f"{i}"] = {"OK": True}
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
return output
|
return jsonify(output)
|
||||||
|
|
||||||
|
|
||||||
def _delete_singular(assiduite_id: int, database):
|
def _delete_singular(assiduite_id: int, database):
|
||||||
@ -564,7 +558,6 @@ def _delete_singular(assiduite_id: int, database):
|
|||||||
@api_web_bp.route("/assiduite/<int:assiduite_id>/edit", methods=["POST"])
|
@api_web_bp.route("/assiduite/<int:assiduite_id>/edit", methods=["POST"])
|
||||||
@login_required
|
@login_required
|
||||||
@scodoc
|
@scodoc
|
||||||
@as_json
|
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoView)
|
||||||
# @permission_required(Permission.ScoAssiduiteChange)
|
# @permission_required(Permission.ScoAssiduiteChange)
|
||||||
def assiduite_edit(assiduite_id: int):
|
def assiduite_edit(assiduite_id: int):
|
||||||
@ -632,14 +625,13 @@ def assiduite_edit(assiduite_id: int):
|
|||||||
|
|
||||||
db.session.add(assiduite_unique)
|
db.session.add(assiduite_unique)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
return {"OK": True}
|
return jsonify({"OK": True})
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/assiduites/edit", methods=["POST"])
|
@bp.route("/assiduites/edit", methods=["POST"])
|
||||||
@api_web_bp.route("/assiduites/edit", methods=["POST"])
|
@api_web_bp.route("/assiduites/edit", methods=["POST"])
|
||||||
@login_required
|
@login_required
|
||||||
@scodoc
|
@scodoc
|
||||||
@as_json
|
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoView)
|
||||||
# @permission_required(Permission.ScoAssiduiteChange)
|
# @permission_required(Permission.ScoAssiduiteChange)
|
||||||
def assiduites_edit():
|
def assiduites_edit():
|
||||||
@ -674,7 +666,7 @@ def assiduites_edit():
|
|||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
return {"errors": errors, "success": success}
|
return jsonify({"errors": errors, "success": success})
|
||||||
|
|
||||||
|
|
||||||
def _edit_singular(assiduite_unique, data):
|
def _edit_singular(assiduite_unique, data):
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
"""
|
"""
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from flask_json import as_json
|
|
||||||
from flask import g, jsonify, request
|
from flask import g, jsonify, request
|
||||||
from flask_login import login_required, current_user
|
from flask_login import login_required, current_user
|
||||||
|
|
||||||
@ -58,7 +57,6 @@ def justificatif(justif_id: int = None):
|
|||||||
@api_web_bp.route("/justificatifs/<int:etudid>/query", defaults={"with_query": True})
|
@api_web_bp.route("/justificatifs/<int:etudid>/query", defaults={"with_query": True})
|
||||||
@login_required
|
@login_required
|
||||||
@scodoc
|
@scodoc
|
||||||
@as_json
|
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoView)
|
||||||
def justificatifs(etudid: int = None, with_query: bool = False):
|
def justificatifs(etudid: int = None, with_query: bool = False):
|
||||||
"""
|
"""
|
||||||
@ -102,14 +100,13 @@ def justificatifs(etudid: int = None, with_query: bool = False):
|
|||||||
data = just.to_dict(format_api=True)
|
data = just.to_dict(format_api=True)
|
||||||
data_set.append(data)
|
data_set.append(data)
|
||||||
|
|
||||||
return data_set
|
return jsonify(data_set)
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/justificatif/<int:etudid>/create", methods=["POST"])
|
@bp.route("/justificatif/<int:etudid>/create", methods=["POST"])
|
||||||
@api_web_bp.route("/justificatif/<int:etudid>/create", methods=["POST"])
|
@api_web_bp.route("/justificatif/<int:etudid>/create", methods=["POST"])
|
||||||
@scodoc
|
@scodoc
|
||||||
@login_required
|
@login_required
|
||||||
@as_json
|
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoView)
|
||||||
# @permission_required(Permission.ScoAssiduiteChange)
|
# @permission_required(Permission.ScoAssiduiteChange)
|
||||||
def justif_create(etudid: int = None):
|
def justif_create(etudid: int = None):
|
||||||
@ -148,7 +145,7 @@ def justif_create(etudid: int = None):
|
|||||||
else:
|
else:
|
||||||
success[i] = obj
|
success[i] = obj
|
||||||
compute_assiduites_justified(Justificatif.query.filter_by(etudid=etudid), True)
|
compute_assiduites_justified(Justificatif.query.filter_by(etudid=etudid), True)
|
||||||
return {"errors": errors, "success": success}
|
return jsonify({"errors": errors, "success": success})
|
||||||
|
|
||||||
|
|
||||||
def _create_singular(
|
def _create_singular(
|
||||||
@ -224,7 +221,6 @@ def _create_singular(
|
|||||||
@api_web_bp.route("/justificatif/<int:justif_id>/edit", methods=["POST"])
|
@api_web_bp.route("/justificatif/<int:justif_id>/edit", methods=["POST"])
|
||||||
@login_required
|
@login_required
|
||||||
@scodoc
|
@scodoc
|
||||||
@as_json
|
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoView)
|
||||||
# @permission_required(Permission.ScoAssiduiteChange)
|
# @permission_required(Permission.ScoAssiduiteChange)
|
||||||
def justif_edit(justif_id: int):
|
def justif_edit(justif_id: int):
|
||||||
@ -300,7 +296,8 @@ def justif_edit(justif_id: int):
|
|||||||
db.session.add(justificatif_unique)
|
db.session.add(justificatif_unique)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
return {
|
return jsonify(
|
||||||
|
{
|
||||||
"couverture": {
|
"couverture": {
|
||||||
"avant": avant_ids,
|
"avant": avant_ids,
|
||||||
"après": compute_assiduites_justified(
|
"après": compute_assiduites_justified(
|
||||||
@ -309,13 +306,13 @@ def justif_edit(justif_id: int):
|
|||||||
),
|
),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/justificatif/delete", methods=["POST"])
|
@bp.route("/justificatif/delete", methods=["POST"])
|
||||||
@api_web_bp.route("/justificatif/delete", methods=["POST"])
|
@api_web_bp.route("/justificatif/delete", methods=["POST"])
|
||||||
@login_required
|
@login_required
|
||||||
@scodoc
|
@scodoc
|
||||||
@as_json
|
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoView)
|
||||||
# @permission_required(Permission.ScoAssiduiteChange)
|
# @permission_required(Permission.ScoAssiduiteChange)
|
||||||
def justif_delete():
|
def justif_delete():
|
||||||
@ -344,8 +341,7 @@ def justif_delete():
|
|||||||
else:
|
else:
|
||||||
output["success"][f"{i}"] = {"OK": True}
|
output["success"][f"{i}"] = {"OK": True}
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
return jsonify(output)
|
||||||
return output
|
|
||||||
|
|
||||||
|
|
||||||
def _delete_singular(justif_id: int, database):
|
def _delete_singular(justif_id: int, database):
|
||||||
@ -360,12 +356,8 @@ def _delete_singular(justif_id: int, database):
|
|||||||
if archive_name is not None:
|
if archive_name is not None:
|
||||||
archiver: JustificatifArchiver = JustificatifArchiver()
|
archiver: JustificatifArchiver = JustificatifArchiver()
|
||||||
archiver.delete_justificatif(justificatif_unique.etudid, archive_name)
|
archiver.delete_justificatif(justificatif_unique.etudid, archive_name)
|
||||||
|
|
||||||
database.session.delete(justificatif_unique)
|
database.session.delete(justificatif_unique)
|
||||||
|
|
||||||
compute_assiduites_justified(
|
|
||||||
Justificatif.query.filter_by(etudid=justificatif_unique.etudid), True
|
|
||||||
)
|
|
||||||
|
|
||||||
return (200, "OK")
|
return (200, "OK")
|
||||||
|
|
||||||
|
|
||||||
@ -374,7 +366,6 @@ def _delete_singular(justif_id: int, database):
|
|||||||
@api_web_bp.route("/justificatif/<int:justif_id>/import", methods=["POST"])
|
@api_web_bp.route("/justificatif/<int:justif_id>/import", methods=["POST"])
|
||||||
@scodoc
|
@scodoc
|
||||||
@login_required
|
@login_required
|
||||||
@as_json
|
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoView)
|
||||||
# @permission_required(Permission.ScoAssiduiteChange)
|
# @permission_required(Permission.ScoAssiduiteChange)
|
||||||
def justif_import(justif_id: int = None):
|
def justif_import(justif_id: int = None):
|
||||||
@ -411,7 +402,7 @@ def justif_import(justif_id: int = None):
|
|||||||
db.session.add(justificatif_unique)
|
db.session.add(justificatif_unique)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
return {"filename": fname}
|
return jsonify({"filename": fname})
|
||||||
except ScoValueError as err:
|
except ScoValueError as err:
|
||||||
return json_error(404, err.args[0])
|
return json_error(404, err.args[0])
|
||||||
|
|
||||||
@ -451,7 +442,6 @@ def justif_export(justif_id: int = None, filename: str = None):
|
|||||||
@api_web_bp.route("/justificatif/<int:justif_id>/remove", methods=["POST"])
|
@api_web_bp.route("/justificatif/<int:justif_id>/remove", methods=["POST"])
|
||||||
@scodoc
|
@scodoc
|
||||||
@login_required
|
@login_required
|
||||||
@as_json
|
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoView)
|
||||||
# @permission_required(Permission.ScoAssiduiteChange)
|
# @permission_required(Permission.ScoAssiduiteChange)
|
||||||
def justif_remove(justif_id: int = None):
|
def justif_remove(justif_id: int = None):
|
||||||
@ -509,14 +499,13 @@ def justif_remove(justif_id: int = None):
|
|||||||
except ScoValueError as err:
|
except ScoValueError as err:
|
||||||
return json_error(404, err.args[0])
|
return json_error(404, err.args[0])
|
||||||
|
|
||||||
return {"response": "removed"}
|
return jsonify({"response": "removed"})
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/justificatif/<int:justif_id>/list", methods=["GET"])
|
@bp.route("/justificatif/<int:justif_id>/list", methods=["GET"])
|
||||||
@api_web_bp.route("/justificatif/<int:justif_id>/list", methods=["GET"])
|
@api_web_bp.route("/justificatif/<int:justif_id>/list", methods=["GET"])
|
||||||
@scodoc
|
@scodoc
|
||||||
@login_required
|
@login_required
|
||||||
@as_json
|
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoView)
|
||||||
# @permission_required(Permission.ScoAssiduiteChange)
|
# @permission_required(Permission.ScoAssiduiteChange)
|
||||||
def justif_list(justif_id: int = None):
|
def justif_list(justif_id: int = None):
|
||||||
@ -540,7 +529,7 @@ def justif_list(justif_id: int = None):
|
|||||||
archive_name, justificatif_unique.etudid
|
archive_name, justificatif_unique.etudid
|
||||||
)
|
)
|
||||||
|
|
||||||
return filenames
|
return jsonify(filenames)
|
||||||
|
|
||||||
|
|
||||||
# Partie justification
|
# Partie justification
|
||||||
@ -548,7 +537,6 @@ def justif_list(justif_id: int = None):
|
|||||||
@api_web_bp.route("/justificatif/<int:justif_id>/justifies", methods=["GET"])
|
@api_web_bp.route("/justificatif/<int:justif_id>/justifies", methods=["GET"])
|
||||||
@scodoc
|
@scodoc
|
||||||
@login_required
|
@login_required
|
||||||
@as_json
|
|
||||||
@permission_required(Permission.ScoView)
|
@permission_required(Permission.ScoView)
|
||||||
# @permission_required(Permission.ScoAssiduiteChange)
|
# @permission_required(Permission.ScoAssiduiteChange)
|
||||||
def justif_justifies(justif_id: int = None):
|
def justif_justifies(justif_id: int = None):
|
||||||
@ -564,7 +552,7 @@ def justif_justifies(justif_id: int = None):
|
|||||||
|
|
||||||
assiduites_list: list[int] = scass.justifies(justificatif_unique)
|
assiduites_list: list[int] = scass.justifies(justificatif_unique)
|
||||||
|
|
||||||
return assiduites_list
|
return jsonify(assiduites_list)
|
||||||
|
|
||||||
|
|
||||||
# -- Utils --
|
# -- Utils --
|
||||||
|
@ -317,12 +317,14 @@ def justifies(justi: Justificatif, obj: bool = False) -> list[int]:
|
|||||||
if justi.etat != scu.EtatJustificatif.VALIDE:
|
if justi.etat != scu.EtatJustificatif.VALIDE:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
assiduites_query: Assiduite = Assiduite.query.join(
|
assiduites_query: Assiduite = (
|
||||||
Justificatif, Assiduite.etudid == Justificatif.etudid
|
Assiduite.query.join(Justificatif, Assiduite.etudid == Justificatif.etudid)
|
||||||
).filter(
|
.filter(Assiduite.etat != scu.EtatAssiduite.PRESENT)
|
||||||
|
.filter(
|
||||||
Assiduite.date_debut <= justi.date_fin,
|
Assiduite.date_debut <= justi.date_fin,
|
||||||
Assiduite.date_fin >= justi.date_debut,
|
Assiduite.date_fin >= justi.date_debut,
|
||||||
)
|
)
|
||||||
|
)
|
||||||
|
|
||||||
if not obj:
|
if not obj:
|
||||||
return [assi.id for assi in assiduites_query.all()]
|
return [assi.id for assi in assiduites_query.all()]
|
||||||
|
Loading…
Reference in New Issue
Block a user