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

View File

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