From 80d4338a1d06c7f3badfc46a0e0826534e136009 Mon Sep 17 00:00:00 2001
From: Jonathan Weth <git@jonathanweth.de>
Date: Fri, 26 Jul 2024 22:15:02 +0200
Subject: [PATCH] Support OPTIONAL slot numbers for lesson events (only for
 displaying purposes)

---
 .../migrations/0017_optional_slot_number.py   | 23 +++++++++++++++++++
 aleksis/apps/chronos/models.py                |  9 ++++++++
 aleksis/apps/chronos/schema/__init__.py       |  2 ++
 3 files changed, 34 insertions(+)
 create mode 100644 aleksis/apps/chronos/migrations/0017_optional_slot_number.py

diff --git a/aleksis/apps/chronos/migrations/0017_optional_slot_number.py b/aleksis/apps/chronos/migrations/0017_optional_slot_number.py
new file mode 100644
index 00000000..6ea182cf
--- /dev/null
+++ b/aleksis/apps/chronos/migrations/0017_optional_slot_number.py
@@ -0,0 +1,23 @@
+# Generated by Django 5.0.7 on 2024-07-26 19:36
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('chronos', '0016_lessonevent'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='lessonevent',
+            name='slot_number_end',
+            field=models.PositiveSmallIntegerField(blank=True, null=True, verbose_name='End slot number'),
+        ),
+        migrations.AddField(
+            model_name='lessonevent',
+            name='slot_number_start',
+            field=models.PositiveSmallIntegerField(blank=True, null=True, verbose_name='Start slot number'),
+        ),
+    ]
diff --git a/aleksis/apps/chronos/models.py b/aleksis/apps/chronos/models.py
index 187e0d6d..35f4e011 100644
--- a/aleksis/apps/chronos/models.py
+++ b/aleksis/apps/chronos/models.py
@@ -1297,6 +1297,13 @@ class LessonEvent(CalendarEvent):
 
     title = models.CharField(verbose_name=_("Name"), max_length=255, blank=True)
 
+    slot_number_start = models.PositiveSmallIntegerField(
+        verbose_name=_("Start slot number"), blank=True, null=True
+    )
+    slot_number_end = models.PositiveSmallIntegerField(
+        verbose_name=_("End slot number"), blank=True, null=True
+    )
+
     course = models.ForeignKey(
         Course, on_delete=models.CASCADE, verbose_name=_("Course"), null=True, blank=True
     )
@@ -1493,6 +1500,8 @@ class LessonEvent(CalendarEvent):
             if reference_object.amends
             else None,
             "title": reference_object.title,
+            "slot_number_start": reference_object.slot_number_start,
+            "slot_number_end": reference_object.slot_number_end,
             "teachers": [
                 {
                     "id": t.pk,
diff --git a/aleksis/apps/chronos/schema/__init__.py b/aleksis/apps/chronos/schema/__init__.py
index 5dec4002..c6f1cdf0 100644
--- a/aleksis/apps/chronos/schema/__init__.py
+++ b/aleksis/apps/chronos/schema/__init__.py
@@ -41,6 +41,8 @@ class LessonEventType(DjangoObjectType):
         fields = (
             "id",
             "title",
+            "slot_number_start",
+            "slot_number_end",
             "amends",
             "datetime_start",
             "datetime_end",
-- 
GitLab