From 74dbfa6da40366aaf498ee1ca896aae0f42f9d6f Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Thu, 26 Oct 2023 15:35:34 +0200 Subject: [PATCH] Drop period_after --- .../components/breaks_and_slots/Break.vue | 7 +--- .../components/breaks_and_slots/break.graphql | 9 ++--- .../components/breaks_and_slots/slot.graphql | 4 -- .../components/lesson_raster/LessonRaster.vue | 3 +- .../components/lesson_raster/SlotCard.vue | 1 - .../components/lesson_raster/SlotCreator.vue | 3 +- .../supervision/supervision.graphql | 1 - .../apps/lesrooster/frontend/messages/de.json | 2 +- .../apps/lesrooster/frontend/messages/en.json | 2 +- .../0014_remove_breakslot_period_after.py | 17 +++++++++ aleksis/apps/lesrooster/models.py | 7 +--- aleksis/apps/lesrooster/schema/break_slot.py | 9 ++--- aleksis/apps/lesrooster/schema/slot.py | 37 +++++++------------ 13 files changed, 45 insertions(+), 57 deletions(-) create mode 100644 aleksis/apps/lesrooster/migrations/0014_remove_breakslot_period_after.py diff --git a/aleksis/apps/lesrooster/frontend/components/breaks_and_slots/Break.vue b/aleksis/apps/lesrooster/frontend/components/breaks_and_slots/Break.vue index fbd048ac..b1b6156e 100644 --- a/aleksis/apps/lesrooster/frontend/components/breaks_and_slots/Break.vue +++ b/aleksis/apps/lesrooster/frontend/components/breaks_and_slots/Break.vue @@ -27,10 +27,6 @@ export default { text: this.$t("lesrooster.slot.weekday"), value: "weekday", }, - { - text: this.$t("lesrooster.break.period_after"), - value: "period", - }, { text: this.$t("lesrooster.slot.time_start"), value: "timeStart", @@ -55,7 +51,6 @@ export default { return { ...item, period: null, - periodAfter: item.period, weekday: this.weekdayAsInt(item.weekday), timeGrid: item.timeGrid.id, }; @@ -66,7 +61,7 @@ export default { id: item.id, name: item.name, weekday: this.weekdayAsInt(item.weekday), - periodAfter: item.period, + period: null, timeStart: item.timeStart, timeEnd: item.timeEnd, timeGrid: item.timeGrid.id, diff --git a/aleksis/apps/lesrooster/frontend/components/breaks_and_slots/break.graphql b/aleksis/apps/lesrooster/frontend/components/breaks_and_slots/break.graphql index 16b07ae3..63c2087d 100644 --- a/aleksis/apps/lesrooster/frontend/components/breaks_and_slots/break.graphql +++ b/aleksis/apps/lesrooster/frontend/components/breaks_and_slots/break.graphql @@ -16,7 +16,7 @@ query breakSlots($orderBy: [String], $filters: JSONString) { } } weekday - period: periodAfter + period timeStart timeEnd canEdit @@ -41,7 +41,7 @@ mutation createBreakSlot($input: CreateBreakSlotInput!) { } } weekday - period: periodAfter + period timeStart timeEnd canEdit @@ -68,8 +68,7 @@ mutation createBreakSlots($input: [BatchCreateBreakSlotInput]!) { } } weekday - period: periodAfter - periodAfter + period timeStart timeEnd canEdit @@ -107,7 +106,7 @@ mutation updateBreakSlots($input: [BatchPatchBreakSlotInput]!) { } } weekday - period: periodAfter + period timeStart timeEnd canEdit diff --git a/aleksis/apps/lesrooster/frontend/components/breaks_and_slots/slot.graphql b/aleksis/apps/lesrooster/frontend/components/breaks_and_slots/slot.graphql index 928a17c8..269faa53 100644 --- a/aleksis/apps/lesrooster/frontend/components/breaks_and_slots/slot.graphql +++ b/aleksis/apps/lesrooster/frontend/components/breaks_and_slots/slot.graphql @@ -16,7 +16,6 @@ query slots($orderBy: [String], $filters: JSONString) { } weekday period - periodAfter timeStart timeEnd canEdit @@ -69,7 +68,6 @@ mutation createSlots($input: [BatchCreateSlotInput]!) { } weekday period - periodAfter timeStart timeEnd canEdit @@ -146,7 +144,6 @@ mutation carryOverSlots( } weekday period - periodAfter timeStart timeEnd canEdit @@ -174,7 +171,6 @@ mutation copySlotsFromGrid($toTimeGrid: ID!, $fromTimeGrid: ID!) { } weekday period - periodAfter timeStart timeEnd canEdit diff --git a/aleksis/apps/lesrooster/frontend/components/lesson_raster/LessonRaster.vue b/aleksis/apps/lesrooster/frontend/components/lesson_raster/LessonRaster.vue index 967407cc..90437ee9 100644 --- a/aleksis/apps/lesrooster/frontend/components/lesson_raster/LessonRaster.vue +++ b/aleksis/apps/lesrooster/frontend/components/lesson_raster/LessonRaster.vue @@ -254,9 +254,10 @@ export default { }; }, result(data) { + console.log(data); this.weekdays = Array.from( new Set(data.data.items.map((slot) => slot.weekday)) - ); + ).sort(); }, skip() { return this.internalTimeGrid === null; diff --git a/aleksis/apps/lesrooster/frontend/components/lesson_raster/SlotCard.vue b/aleksis/apps/lesrooster/frontend/components/lesson_raster/SlotCard.vue index b204f9f4..aedbfe2a 100644 --- a/aleksis/apps/lesrooster/frontend/components/lesson_raster/SlotCard.vue +++ b/aleksis/apps/lesrooster/frontend/components/lesson_raster/SlotCard.vue @@ -8,7 +8,6 @@ export default defineComponent({ id: String, model: String, period: Number, - periodAfter: Number, weekday: String, timeStart: String, timeEnd: String, diff --git a/aleksis/apps/lesrooster/frontend/components/lesson_raster/SlotCreator.vue b/aleksis/apps/lesrooster/frontend/components/lesson_raster/SlotCreator.vue index f63dd3bd..bbf5d06b 100644 --- a/aleksis/apps/lesrooster/frontend/components/lesson_raster/SlotCreator.vue +++ b/aleksis/apps/lesrooster/frontend/components/lesson_raster/SlotCreator.vue @@ -56,8 +56,7 @@ export default defineComponent({ input: this.slots.weekdays.map((weekday) => ({ name: "", timeGrid: this.timeGrid, - period: this.breaks ? undefined : this.slots.period, - periodAfter: this.breaks ? this.slots.period : undefined, + period: this.slots.period, weekday: parseInt(weekday[2]), timeStart: this.slots.timeStart, timeEnd: this.slots.timeEnd, diff --git a/aleksis/apps/lesrooster/frontend/components/supervision/supervision.graphql b/aleksis/apps/lesrooster/frontend/components/supervision/supervision.graphql index dd1bc470..26556dfe 100644 --- a/aleksis/apps/lesrooster/frontend/components/supervision/supervision.graphql +++ b/aleksis/apps/lesrooster/frontend/components/supervision/supervision.graphql @@ -32,7 +32,6 @@ fragment supervisionFields on SupervisionType { } } weekday - periodAfter timeStart timeEnd canEdit diff --git a/aleksis/apps/lesrooster/frontend/messages/de.json b/aleksis/apps/lesrooster/frontend/messages/de.json index fc40a412..7f151145 100644 --- a/aleksis/apps/lesrooster/frontend/messages/de.json +++ b/aleksis/apps/lesrooster/frontend/messages/de.json @@ -63,7 +63,7 @@ "create_items_success": "Pausen erfolgreich erstellt.", "create_items_error": "Fehler beim Erstellen der Pausen.", "repr": { - "default": "Pause vor Stunde {periodAfter}, von {timeStart} bis {timeEnd}", + "default": "Pause von {timeStart} bis {timeEnd}", "weekday_short": "{weekday}, {timeStart} bis {timeEnd}" } }, diff --git a/aleksis/apps/lesrooster/frontend/messages/en.json b/aleksis/apps/lesrooster/frontend/messages/en.json index a5c0c267..2a5da55f 100644 --- a/aleksis/apps/lesrooster/frontend/messages/en.json +++ b/aleksis/apps/lesrooster/frontend/messages/en.json @@ -63,7 +63,7 @@ "create_items_success": "The breaks where created successfully.", "create_items_error": "Error creating breaks.", "repr": { - "default": "Break before period {periodAfter}, from {timeStart} to {timeEnd}", + "default": "Break from {timeStart} to {timeEnd}", "weekday_short": "{weekday}, {timeStart} to {timeEnd}" } }, diff --git a/aleksis/apps/lesrooster/migrations/0014_remove_breakslot_period_after.py b/aleksis/apps/lesrooster/migrations/0014_remove_breakslot_period_after.py new file mode 100644 index 00000000..24fac30b --- /dev/null +++ b/aleksis/apps/lesrooster/migrations/0014_remove_breakslot_period_after.py @@ -0,0 +1,17 @@ +# Generated by Django 4.2.5 on 2023-10-26 13:12 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("lesrooster", "0013_supervision_subject_supervisionsubstitution_subject"), + ] + + operations = [ + migrations.RemoveField( + model_name="breakslot", + name="period_after", + ), + ] diff --git a/aleksis/apps/lesrooster/models.py b/aleksis/apps/lesrooster/models.py index bf6b8a15..461d5138 100644 --- a/aleksis/apps/lesrooster/models.py +++ b/aleksis/apps/lesrooster/models.py @@ -374,14 +374,9 @@ class Lesson(TeacherPropertiesMixin, RoomPropertiesMixin, ExtensibleModel): class BreakSlot(Slot): """A break is a time period that can supervised and in which no lessons take place.""" - period_after = models.IntegerField( - verbose_name=_("Period after"), - ) - def __str__(self) -> str: return ( - f"{self.period_after - 1}./{self.period_after}. " - f"({time_format(self.time_start)} - {time_format(self.time_end)})" + f"{time_format(self.time_start)} - {time_format(self.time_end)}" ) class Meta: diff --git a/aleksis/apps/lesrooster/schema/break_slot.py b/aleksis/apps/lesrooster/schema/break_slot.py index b3401d44..fbc54e41 100644 --- a/aleksis/apps/lesrooster/schema/break_slot.py +++ b/aleksis/apps/lesrooster/schema/break_slot.py @@ -20,7 +20,6 @@ from ..models import BreakSlot from .slot import slot_filters break_filters = slot_filters.copy() -break_filters["period_after"] = break_filters.pop("period") class BreakSlotType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectType): @@ -33,7 +32,7 @@ class BreakSlotType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectType): "time_grid", "name", "weekday", - "period_after", + "period", "time_start", "time_end", ) @@ -56,7 +55,7 @@ class BreakSlotCreateMutation(DjangoCreateMutation): "time_grid", "name", "weekday", - "period_after", + "period", "time_start", "time_end", ) @@ -78,7 +77,7 @@ class BreakSlotBatchCreateMutation(PermissionBatchPatchMixin, DjangoBatchCreateM "time_grid", "name", "weekday", - "period_after", + "period", "time_start", "time_end", ) @@ -102,7 +101,7 @@ class BreakSlotBatchPatchMutation(PermissionBatchPatchMixin, DjangoBatchPatchMut "time_grid", "name", "weekday", - "period_after", + "period", "time_start", "time_end", ) diff --git a/aleksis/apps/lesrooster/schema/slot.py b/aleksis/apps/lesrooster/schema/slot.py index e4792a61..7a1f9778 100644 --- a/aleksis/apps/lesrooster/schema/slot.py +++ b/aleksis/apps/lesrooster/schema/slot.py @@ -34,7 +34,6 @@ slot_filters = { class SlotType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectType): model = graphene.String(default_value="Default") - period_after = graphene.Int() class Meta: model = Slot @@ -51,9 +50,6 @@ class SlotType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectType): def resolve_model(root, info): return root.get_real_instance_class().__name__ - @staticmethod - def resolve_period_after(root, info): - return getattr(root.get_real_instance(), "period_after", None) class SlotCreateMutation(DjangoCreateMutation): @@ -117,33 +113,29 @@ class CarryOverSlotsMutation(graphene.Mutation): if only and len(only) > 0: slots_on_day = slots_on_day.filter(id__in=only) - periods = [] - periods_after = [] - result = [] + new_ids = [] for slot in slots_on_day: - slot: BreakSlot | Slot - klass = slot.get_real_instance_class() - defaults = {"name": slot.name, "time_start": slot.time_start, "time_end": slot.time_end} - if hasattr(slot, "period_after"): - defaults["period_after"] = slot.period_after - periods_after.append(slot.period_after) - if slot.period is not None: - periods.append(slot.period) + new_slot = Slot.objects.non_polymorphic().update_or_create( + weekday=to_day, time_grid=time_grid, period=slot.period, defaults=defaults + )[0] + + else: + new_slot = Slot.objects.non_polymorphic().update_or_create( + weekday=to_day, time_grid=time_grid, time_start=slot.time_start, time_end=slot.time_end, defaults=defaults + )[0] + + result.append(new_slot) + new_ids.append(new_slot.pk) - result.append( - klass.objects.update_or_create( - weekday=to_day, time_grid=time_grid, period=slot.period, defaults=defaults - )[0] - ) if not only or not len(only): objects_to_delete = Slot.objects.filter(weekday=to_day, time_grid=time_grid).exclude( - Q(Slot___period__in=periods) | Q(BreakSlot___period_after__in=periods_after) + pk__in=new_ids ) objects_to_delete.delete() @@ -185,9 +177,6 @@ class CopySlotsFromDifferentTimeGridMutation(graphene.Mutation): defaults = {"name": slot.name, "time_start": slot.time_start, "time_end": slot.time_end} - if hasattr(slot, "period_after"): - defaults["period_after"] = slot.period_after - result.append( klass.objects.update_or_create( weekday=slot.weekday, time_grid=time_grid, period=slot.period, defaults=defaults -- GitLab