Update opolka/ScoDoc from ScoDoc/ScoDoc #2

Merged
opolka merged 1272 commits from ScoDoc/ScoDoc:master into master 2024-05-27 09:11:04 +02:00
2 changed files with 52 additions and 51 deletions
Showing only changes of commit 21eeff90aa - Show all commits

View File

@ -15,7 +15,7 @@ from werkzeug.exceptions import NotFound
import app.scodoc.sco_assiduites as scass
import app.scodoc.sco_utils as scu
from app import db
from app import db, set_sco_dept
from app.api import api_bp as bp
from app.api import api_web_bp
from app.api import get_model_api_object, tools
@ -294,6 +294,7 @@ def justif_create(etudid: int = None, nip=None, ine=None):
404,
message="étudiant inconnu",
)
set_sco_dept(etud.departement.acronym)
# Récupération des justificatifs à créer
create_list: list[object] = request.get_json(force=True)

View File

@ -443,61 +443,61 @@ def role_delete(role_name: str):
return {"OK": True}
@bp.route("/user/<int:uid>/edt")
@api_web_bp.route("/user/<int:uid>/edt")
@login_required
@scodoc
@permission_required(Permission.ScoView)
@as_json
def user_edt(uid: int):
"""L'emploi du temps de l'utilisateur.
Si ok, une liste d'évènements. Sinon, une chaine indiquant un message d'erreur.
# @bp.route("/user/<int:uid>/edt")
# @api_web_bp.route("/user/<int:uid>/edt")
# @login_required
# @scodoc
# @permission_required(Permission.ScoView)
# @as_json
# def user_edt(uid: int):
# """L'emploi du temps de l'utilisateur.
# Si ok, une liste d'évènements. Sinon, une chaine indiquant un message d'erreur.
show_modules_titles affiche le titre complet du module (défaut), sinon juste le code.
# show_modules_titles affiche le titre complet du module (défaut), sinon juste le code.
Il faut la permission ScoView + (UsersView ou bien être connecté comme l'utilisateur demandé)
"""
if g.scodoc_dept is None: # route API non départementale
if not current_user.has_permission(Permission.UsersView):
return scu.json_error(403, "accès non autorisé")
user: User = db.session.get(User, uid)
if user is None:
return json_error(404, "user not found")
# Check permission
if current_user.id != user.id:
if g.scodoc_dept:
allowed_depts = current_user.get_depts_with_permission(Permission.UsersView)
if (None not in allowed_depts) and (user.dept not in allowed_depts):
return json_error(404, "user not found")
# Il faut la permission ScoView + (UsersView ou bien être connecté comme l'utilisateur demandé)
# """
# if g.scodoc_dept is None: # route API non départementale
# if not current_user.has_permission(Permission.UsersView):
# return scu.json_error(403, "accès non autorisé")
# user: User = db.session.get(User, uid)
# if user is None:
# return json_error(404, "user not found")
# # Check permission
# if current_user.id != user.id:
# if g.scodoc_dept:
# allowed_depts = current_user.get_depts_with_permission(Permission.UsersView)
# if (None not in allowed_depts) and (user.dept not in allowed_depts):
# return json_error(404, "user not found")
show_modules_titles = scu.to_bool(request.args.get("show_modules_titles", False))
# show_modules_titles = scu.to_bool(request.args.get("show_modules_titles", False))
# Cherche ics
if not user.edt_id:
return json_error(404, "user not configured")
ics_filename = sco_edt_cal.get_ics_user_edt_filename(user.edt_id)
if not ics_filename:
return json_error(404, "no calendar for this user")
# # Cherche ics
# if not user.edt_id:
# return json_error(404, "user not configured")
# ics_filename = sco_edt_cal.get_ics_user_edt_filename(user.edt_id)
# if not ics_filename:
# return json_error(404, "no calendar for this user")
_, calendar = sco_edt_cal.load_calendar(ics_filename)
# _, calendar = sco_edt_cal.load_calendar(ics_filename)
# TODO:
# - Construire mapping edt2modimpl: edt_id -> modimpl
# pour cela, considérer tous les formsemestres de la période de l'edt
# (soit on considère l'année scolaire du 1er event, ou celle courante,
# soit on cherche min, max des dates des events)
# - Modifier décodage des groupes dans convert_ics pour avoi run mapping
# de groupe par semestre (retrouvé grâce au modimpl associé à l'event)
# # TODO:
# # - Construire mapping edt2modimpl: edt_id -> modimpl
# # pour cela, considérer tous les formsemestres de la période de l'edt
# # (soit on considère l'année scolaire du 1er event, ou celle courante,
# # soit on cherche min, max des dates des events)
# # - Modifier décodage des groupes dans convert_ics pour avoi run mapping
# # de groupe par semestre (retrouvé grâce au modimpl associé à l'event)
raise NotImplementedError() # TODO XXX WIP
# raise NotImplementedError() # TODO XXX WIP
events_scodoc, _ = sco_edt_cal.convert_ics(
calendar,
edt2group=edt2group,
default_group=default_group,
edt2modimpl=edt2modimpl,
)
edt_dict = sco_edt_cal.translate_calendar(
events_scodoc, group_ids, show_modules_titles=show_modules_titles
)
return edt_dict
# events_scodoc, _ = sco_edt_cal.convert_ics(
# calendar,
# edt2group=edt2group,
# default_group=default_group,
# edt2modimpl=edt2modimpl,
# )
# edt_dict = sco_edt_cal.translate_calendar(
# events_scodoc, group_ids, show_modules_titles=show_modules_titles
# )
# return edt_dict