forked from ScoDoc/ScoDoc
Fix #573 (API set group)
This commit is contained in:
parent
ccc9e1317d
commit
5fdc7db32a
@ -19,6 +19,7 @@ from app.models import FormSemestre, FormSemestreInscription, Identite
|
|||||||
from app.models import GroupDescr, Partition
|
from app.models import GroupDescr, Partition
|
||||||
from app.models.groups import group_membership
|
from app.models.groups import group_membership
|
||||||
from app.scodoc import sco_cache
|
from app.scodoc import sco_cache
|
||||||
|
from app.scodoc import sco_groups
|
||||||
from app.scodoc.sco_permissions import Permission
|
from app.scodoc.sco_permissions import Permission
|
||||||
from app.scodoc import sco_utils as scu
|
from app.scodoc import sco_utils as scu
|
||||||
|
|
||||||
@ -172,22 +173,11 @@ def set_etud_group(etudid: int, group_id: int):
|
|||||||
group = query.first_or_404()
|
group = query.first_or_404()
|
||||||
if etud.id not in {e.id for e in group.partition.formsemestre.etuds}:
|
if etud.id not in {e.id for e in group.partition.formsemestre.etuds}:
|
||||||
return json_error(404, "etud non inscrit au formsemestre du groupe")
|
return json_error(404, "etud non inscrit au formsemestre du groupe")
|
||||||
groups = (
|
|
||||||
GroupDescr.query.filter_by(partition_id=group.partition.id)
|
sco_groups.change_etud_group_in_partition(
|
||||||
.join(group_membership)
|
etudid, group_id, group.partition.to_dict()
|
||||||
.filter_by(etudid=etudid)
|
|
||||||
)
|
)
|
||||||
ok = False
|
|
||||||
for other_group in groups:
|
|
||||||
if other_group.id == group_id:
|
|
||||||
ok = True
|
|
||||||
else:
|
|
||||||
other_group.etuds.remove(etud)
|
|
||||||
if not ok:
|
|
||||||
group.etuds.append(etud)
|
|
||||||
log(f"set_etud_group({etud}, {group})")
|
|
||||||
db.session.commit()
|
|
||||||
sco_cache.invalidate_formsemestre(group.partition.formsemestre_id)
|
|
||||||
return jsonify({"group_id": group_id, "etudid": etudid})
|
return jsonify({"group_id": group_id, "etudid": etudid})
|
||||||
|
|
||||||
|
|
||||||
|
@ -87,6 +87,7 @@ class Partition(db.Model):
|
|||||||
def to_dict(self, with_groups=False) -> dict:
|
def to_dict(self, with_groups=False) -> dict:
|
||||||
"""as a dict, with or without groups"""
|
"""as a dict, with or without groups"""
|
||||||
d = dict(self.__dict__)
|
d = dict(self.__dict__)
|
||||||
|
d["partition_id"] = self.id
|
||||||
d.pop("_sa_instance_state", None)
|
d.pop("_sa_instance_state", None)
|
||||||
d.pop("formsemestre", None)
|
d.pop("formsemestre", None)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user