From ad8f3f71ec589168336e84f952b38318ddba3fb2 Mon Sep 17 00:00:00 2001
From: Jonathan Weth <git@jonathanweth.de>
Date: Mon, 30 Mar 2020 15:06:34 +0200
Subject: [PATCH] Make missing models extensible

---
 .../chronos/migrations/0009_extended_data.py  | 39 +++++++++++++++++++
 aleksis/apps/chronos/models.py                | 10 ++---
 2 files changed, 44 insertions(+), 5 deletions(-)
 create mode 100644 aleksis/apps/chronos/migrations/0009_extended_data.py

diff --git a/aleksis/apps/chronos/migrations/0009_extended_data.py b/aleksis/apps/chronos/migrations/0009_extended_data.py
new file mode 100644
index 00000000..6c8ff264
--- /dev/null
+++ b/aleksis/apps/chronos/migrations/0009_extended_data.py
@@ -0,0 +1,39 @@
+# Generated by Django 3.0.4 on 2020-03-30 13:04
+
+import django.contrib.postgres.fields.jsonb
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('chronos', '0008_break_period'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='lesson',
+            name='extended_data',
+            field=django.contrib.postgres.fields.jsonb.JSONField(default=dict, editable=False),
+        ),
+        migrations.AddField(
+            model_name='lessonsubstitution',
+            name='extended_data',
+            field=django.contrib.postgres.fields.jsonb.JSONField(default=dict, editable=False),
+        ),
+        migrations.AddField(
+            model_name='room',
+            name='extended_data',
+            field=django.contrib.postgres.fields.jsonb.JSONField(default=dict, editable=False),
+        ),
+        migrations.AddField(
+            model_name='subject',
+            name='extended_data',
+            field=django.contrib.postgres.fields.jsonb.JSONField(default=dict, editable=False),
+        ),
+        migrations.AddField(
+            model_name='timeperiod',
+            name='extended_data',
+            field=django.contrib.postgres.fields.jsonb.JSONField(default=dict, editable=False),
+        ),
+    ]
diff --git a/aleksis/apps/chronos/models.py b/aleksis/apps/chronos/models.py
index 2cf6766b..09ed5d83 100644
--- a/aleksis/apps/chronos/models.py
+++ b/aleksis/apps/chronos/models.py
@@ -269,7 +269,7 @@ class LessonSubstitutionQuerySet(LessonDataQuerySet):
         )
 
 
-class TimePeriod(models.Model):
+class TimePeriod(ExtensibleModel):
     WEEKDAY_CHOICES = list(enumerate(i18n_day_names_lazy()))
     WEEKDAY_CHOICES_SHORT = list(enumerate(i18n_day_abbrs_lazy()))
 
@@ -379,7 +379,7 @@ class TimePeriod(models.Model):
         indexes = [models.Index(fields=["time_start", "time_end"])]
 
 
-class Subject(models.Model):
+class Subject(ExtensibleModel):
     abbrev = models.CharField(
         verbose_name=_("Abbreviation of subject in timetable"), max_length=10, unique=True,
     )
@@ -405,7 +405,7 @@ class Subject(models.Model):
         ordering = ["name", "abbrev"]
 
 
-class Room(models.Model):
+class Room(ExtensibleModel):
     short_name = models.CharField(
         verbose_name=_("Short name, e.g. room number"), max_length=10, unique=True
     )
@@ -418,7 +418,7 @@ class Room(models.Model):
         ordering = ["name", "short_name"]
 
 
-class Lesson(models.Model):
+class Lesson(ExtensibleModel):
     subject = models.ForeignKey("Subject", on_delete=models.CASCADE, related_name="lessons")
     teachers = models.ManyToManyField("core.Person", related_name="lessons_as_teacher")
     periods = models.ManyToManyField("TimePeriod", related_name="lessons", through="LessonPeriod")
@@ -447,7 +447,7 @@ class Lesson(models.Model):
         indexes = [models.Index(fields=["date_start", "date_end"])]
 
 
-class LessonSubstitution(models.Model):
+class LessonSubstitution(ExtensibleModel):
     objects = LessonSubstitutionManager.from_queryset(LessonSubstitutionQuerySet)()
 
     week = models.IntegerField(verbose_name=_("Week"), default=CalendarWeek.current_week)
-- 
GitLab