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