############################################### Partitions ############################################################ from flask import jsonify from app import models from app.api import bp from app.api.errors import error_response from app.api.auth import token_auth, token_permission_required from app.scodoc.sco_groups import get_group_members, setGroups, get_partitions_list from app.scodoc.sco_permissions import Permission @bp.route("/partitions/<int:formsemestre_id>", methods=["GET"]) @token_auth.login_required @token_permission_required(Permission.APIView) def partition(formsemestre_id: int): """ Retourne la liste de toutes les partitions d'un formsemestre formsemestre_id : l'id d'un formsemestre Exemple de résultat : [ { "partition_id": 2, "id": 2, "formsemestre_id": 1, "partition_name": "TD", "numero": 1, "bul_show_rank": false, "show_in_lists": true }, { "partition_id": 1, "id": 1, "formsemestre_id": 1, "partition_name": null, "numero": 0, "bul_show_rank": false, "show_in_lists": true } ] """ # # Récupération de toutes les partitions # partitions = models.Partition.query.filter_by(id=formsemestre_id) # # # Mise en forme des données # data = [partition.to_dict() for partition in partitions] data = get_partitions_list(formsemestre_id) return jsonify(data) @bp.route("/partitions/groups/<int:group_id>", methods=["GET"]) @bp.route("/partitions/groups/<int:group_id>/etat/<string:etat>", methods=["GET"]) @token_auth.login_required @token_permission_required(Permission.APIView) def etud_in_group(group_id: int, etat=None): """ Retourne la liste des étudiants dans un groupe group_id : l'id d'un groupe etat : état de l'inscription Exemple de résultat : [ { "etudid": 10, "id": 10, "dept_id": 1, "nom": "BOUTET", "prenom": "Marguerite", "nom_usuel": "", "civilite": "F", "date_naissance": null, "lieu_naissance": null, "dept_naissance": null, "nationalite": null, "statut": null, "boursier": null, "photo_filename": null, "code_nip": "10", "code_ine": "10", "scodoc7_id": null, "email": "MARGUERITE.BOUTET@example.com", "emailperso": null, "domicile": null, "codepostaldomicile": null, "villedomicile": null, "paysdomicile": null, "telephone": null, "telephonemobile": null, "fax": null, "typeadresse": "domicile", "description": null, "group_id": 1, "etat": "I", "civilite_str": "Mme", "nom_disp": "BOUTET", "nomprenom": "Mme Marguerite BOUTET", "ne": "e", "email_default": "MARGUERITE.BOUTET@example.com" }, ... ] """ # Fonction utilisée : app.scodoc.sco_groups.get_group_members() if etat is None: data = get_group_members(group_id) else: data = get_group_members(group_id, etat) if len(data) == 0: return error_response(404, message="group_id inconnu") return jsonify(data) @bp.route( "/partitions/set_groups/partition/<int:partition_id>/groups/<string:groups_id>/delete/<string:groups_to_delete>" "/create/<string:groups_to_create>", methods=["POST"], ) @token_auth.login_required @token_permission_required(Permission.APIEtudChangeGroups) def set_groups( partition_id: int, groups_lists: str, groups_to_delete: str, groups_to_create: str ): """ Set les groups partition_id : l'id d'une partition groups_lists : membres de chaque groupe existant groups_ti_delete : les groupes à supprimer groups_to_create : les groupes à créer """ # Fonction utilisée : app.scodoc.sco_groups.setGroups() try: # Utilisation de la fonction setGroups setGroups(partition_id, groups_lists, groups_to_create, groups_to_delete) return error_response(200, message="Groups set") except ValueError: return error_response(404, message="Erreur")