API: Modification structure partitions/groupes

This commit is contained in:
Emmanuel Viennet 2022-07-23 09:07:53 +02:00
parent c3952c1118
commit 149522bcd3
2 changed files with 28 additions and 5 deletions

View File

@ -24,7 +24,8 @@ from app.scodoc import sco_utils as scu
@bp.route("/partition/<int:partition_id>", methods=["GET"]) @bp.route("/partition/<int:partition_id>", methods=["GET"])
@permission_required_api(Permission.ScoView, Permission.APIView) @permission_required_api(Permission.ScoView, Permission.APIView)
def partition_info(partition_id: int): def partition_info(partition_id: int):
""" """Info sur une partition.
Exemple de résultat : Exemple de résultat :
``` ```
{ {
@ -49,15 +50,33 @@ def partition_info(partition_id: int):
@bp.route("/formsemestre/<int:formsemestre_id>/partitions", methods=["GET"]) @bp.route("/formsemestre/<int:formsemestre_id>/partitions", methods=["GET"])
@permission_required_api(Permission.ScoView, Permission.APIView) @permission_required_api(Permission.ScoView, Permission.APIView)
def formsemestre_partitions(formsemestre_id: int): def formsemestre_partitions(formsemestre_id: int):
""" """Liste de toutes les partitions d'un formsemestre
Retourne la liste de toutes les partitions d'un formsemestre
formsemestre_id : l'id d'un formsemestre formsemestre_id : l'id d'un formsemestre
{
partition_id : {
"bul_show_rank": False,
"formsemestre_id": 1063,
"groups" :
group_id : {
"id" : 12,
"name" : "A",
"partition_id" : partition_id,
}
},
...
}
""" """
formsemestre: FormSemestre = FormSemestre.query.get_or_404(formsemestre_id) formsemestre: FormSemestre = FormSemestre.query.get_or_404(formsemestre_id)
partitions = sorted(formsemestre.partitions, key=lambda p: p.numero)
return jsonify( return jsonify(
[partition.to_dict(with_groups=True) for partition in formsemestre.partitions] {
partition.id: partition.to_dict(with_groups=True)
for partition in partitions
if partition.partition_name is not None
}
) )

View File

@ -90,7 +90,11 @@ class Partition(db.Model):
d.pop("formsemestre", None) d.pop("formsemestre", None)
if with_groups: if with_groups:
d["groups"] = [group.to_dict(with_partition=False) for group in self.groups] groups = sorted(self.groups, key=lambda g: g.group_name)
# un dict et non plus une liste, pour JSON
d["groups"] = {
group.id: group.to_dict(with_partition=False) for group in groups
}
return d return d