############################################################################## # ScoDoc # Copyright (c) 1999 - 2024 Emmanuel Viennet. All rights reserved. # See LICENSE ############################################################################## """ ScoDoc 9 API : accès aux moduleimpl """ from flask_json import as_json from flask_login import login_required import app from app.api import api_bp as bp, api_web_bp from app.decorators import scodoc, permission_required from app.models import ModuleImpl from app.scodoc import sco_liste_notes from app.scodoc.sco_permissions import Permission @bp.route("/moduleimpl/") @api_web_bp.route("/moduleimpl/") @login_required @scodoc @permission_required(Permission.ScoView) @as_json def moduleimpl(moduleimpl_id: int): """ Retourne un moduleimpl en fonction de son id moduleimpl_id : l'id d'un moduleimpl Exemple de résultat : { "id": 1, "formsemestre_id": 1, "module_id": 1, "responsable_id": 2, "moduleimpl_id": 1, "ens": [], "module": { "heures_tp": 0, "code_apogee": "", "titre": "Initiation aux réseaux informatiques", "coefficient": 1, "module_type": 2, "id": 1, "ects": null, "abbrev": "Init aux réseaux informatiques", "ue_id": 1, "code": "R101", "formation_id": 1, "heures_cours": 0, "matiere_id": 1, "heures_td": 0, "semestre_id": 1, "numero": 10, "module_id": 1 } } """ modimpl = ModuleImpl.get_modimpl(moduleimpl_id) return modimpl.to_dict(convert_objects=True) @bp.route("/moduleimpl//inscriptions") @api_web_bp.route("/moduleimpl//inscriptions") @login_required @scodoc @permission_required(Permission.ScoView) @as_json def moduleimpl_inscriptions(moduleimpl_id: int): """Liste des inscriptions à ce moduleimpl Exemple de résultat : [ { "id": 1, "etudid": 666, "moduleimpl_id": 1234, }, ... ] """ modimpl = ModuleImpl.get_modimpl(moduleimpl_id) return [i.to_dict() for i in modimpl.inscriptions] @bp.route("/moduleimpl//notes") @api_web_bp.route("/moduleimpl//notes") @login_required @scodoc @permission_required(Permission.ScoView) def moduleimpl_notes(moduleimpl_id: int): """Liste des notes dans ce moduleimpl Exemple de résultat : [ { "etudid": 17776, // code de l'étudiant "nom": "DUPONT", "prenom": "Luz", "38411": 16.0, // Note dans l'évaluation d'id 38411 "38410": 15.0, "moymod": 15.5, // Moyenne INDICATIVE module "moy_ue_2875": 15.5, // Moyenne vers l'UE 2875 "moy_ue_2876": 15.5, // Moyenne vers l'UE 2876 "moy_ue_2877": 15.5 // Moyenne vers l'UE 2877 }, ... ] """ modimpl = ModuleImpl.get_modimpl(moduleimpl_id) app.set_sco_dept(modimpl.formsemestre.departement.acronym) table, _ = sco_liste_notes.do_evaluation_listenotes( moduleimpl_id=modimpl.id, fmt="json" ) return table