From 6884a49bc4349fb2c3ff9866b2e701bca64a6788 Mon Sep 17 00:00:00 2001 From: Felix Blanke <info@fblanke.de> Date: Mon, 27 May 2024 05:14:56 +0200 Subject: [PATCH] Fix migration erros --- AKModel/models.py | 52 +++++++++++++++++++++++++++++++-------------- AKModel/views/ak.py | 4 +--- 2 files changed, 37 insertions(+), 19 deletions(-) diff --git a/AKModel/models.py b/AKModel/models.py index c4c6f804..7049fca3 100644 --- a/AKModel/models.py +++ b/AKModel/models.py @@ -297,22 +297,6 @@ class AKOwner(models.Model): """ return AKOwner.objects.get(event=event, slug=slug) - def as_json(self) -> str: - data = { - "id": self.pk, - "info": { - "name": self.name, - }, - "capacity": self.capacity, - "fulfilled_room_constraints": [constraint.name - for constraint in self.properties.all()], - "time_constraints": [f"availability-room-{self.pk}"] - } - - return json.dumps(data) - - - class AKCategory(models.Model): """ An AKCategory describes the characteristics of an AK, e.g. content vs. recreational. @@ -590,6 +574,20 @@ class Room(models.Model): def __str__(self): return self.title + def as_json(self) -> str: + data = { + "id": self.pk, + "info": { + "name": self.name, + }, + "capacity": self.capacity, + "fulfilled_room_constraints": [constraint.name + for constraint in self.properties.all()], + "time_constraints": [f"availability-room-{self.pk}"] + } + + return json.dumps(data) + class AKSlot(models.Model): """ An AK Mapping matches an AK to a room during a certain time. @@ -685,6 +683,28 @@ class AKSlot(models.Model): self.duration = min(self.duration, event_duration_hours) super().save(force_insert, force_update, using, update_fields) + def as_json(self) -> str: + data = { + "id": self.pk, + "duration": int(self.duration * self.slots_in_an_hour), + "properties": {}, + "room_constraints": [constraint.name + for constraint in self.ak.requirements.all()], + "time_constraints": ["resolution"] if self.ak.reso else [], + "info": { + "name": self.ak.name, + "head": ", ".join([str(owner) + for owner in self.ak.owners.all()]), + "description": self.ak.description, + "reso": self.ak.reso, + }, + } + + data["time_constraints"].append(f"availability-ak-{self.pk}") + data["time_constraints"] += [f"availability-person-{owner.pk}" + for owner in self.ak.owners.all()] + + return json.dumps(data) class AKOrgaMessage(models.Model): """ diff --git a/AKModel/views/ak.py b/AKModel/views/ak.py index 547f3606..88fc6bf4 100644 --- a/AKModel/views/ak.py +++ b/AKModel/views/ak.py @@ -8,7 +8,7 @@ from django.views.generic import ListView, DetailView from AKModel.metaviews.admin import AdminViewMixin, FilterByEventSlugMixin, EventSlugMixin, IntermediateAdminView, \ IntermediateAdminActionView -from AKModel.models import AKRequirement, AKSlot, Event, AKOrgaMessage, AK +from AKModel.models import AKRequirement, AKSlot, Event, AKOrgaMessage, AK, Room, AKOwner class AKRequirementOverview(AdminViewMixin, FilterByEventSlugMixin, ListView): @@ -81,8 +81,6 @@ class AKJSONExportView(AdminViewMixin, FilterByEventSlugMixin, ListView): for person in AKOwner.objects.filter(event=self.event) for availability in person.availabilities.all()} - - for block in self.event.time_slots(slots_in_an_hour=SLOTS_IN_AN_HOUR): current_block = [] -- GitLab