From 027789fa332ef881b6dec574fd914c2f4ff2a6bc Mon Sep 17 00:00:00 2001 From: Tom Teichler <tom.teichler@teckids.org> Date: Sun, 8 Mar 2020 14:50:41 +0100 Subject: [PATCH] Add missing models --- .../0007_advanced_models_from_untis.py | 77 ++++++++++++++++++- aleksis/apps/chronos/models.py | 34 +++++++- 2 files changed, 108 insertions(+), 3 deletions(-) diff --git a/aleksis/apps/chronos/migrations/0007_advanced_models_from_untis.py b/aleksis/apps/chronos/migrations/0007_advanced_models_from_untis.py index add8928a..2eaf543f 100644 --- a/aleksis/apps/chronos/migrations/0007_advanced_models_from_untis.py +++ b/aleksis/apps/chronos/migrations/0007_advanced_models_from_untis.py @@ -1,5 +1,6 @@ -# Generated by Django 3.0.2 on 2020-03-07 13:53 +# Generated by Django 3.0.2 on 2020-03-08 13:49 +import colorfield.fields import django.contrib.postgres.fields.jsonb from django.db import migrations, models import django.db.models.deletion @@ -40,6 +41,22 @@ class Migration(migrations.Migration): 'verbose_name': 'Absence reason', }, ), + migrations.CreateModel( + name='Event', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('extended_data', django.contrib.postgres.fields.jsonb.JSONField(default=dict, editable=False)), + ('title', models.CharField(max_length=50, verbose_name='Title')), + ('datefrom', models.DateField(null=True, verbose_name='Effective start date of event')), + ('dateto', models.DateField(null=True, verbose_name='Effective end date of event')), + ('timefrom', models.DateTimeField(null=True, verbose_name='Effective start time of event')), + ('timeto', models.DateTimeField(null=True, verbose_name='Effective end time of event')), + ], + options={ + 'verbose_name': 'Events', + 'ordering': ['datefrom'], + }, + ), migrations.CreateModel( name='Exam', fields=[ @@ -70,6 +87,33 @@ class Migration(migrations.Migration): 'ordering': ['datefrom'], }, ), + migrations.CreateModel( + name='SupervisionArea', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('extended_data', django.contrib.postgres.fields.jsonb.JSONField(default=dict, editable=False)), + ('name', models.CharField(max_length=10, verbose_name='Short name')), + ('longname', models.CharField(max_length=50, verbose_name='Long name')), + ('colour_fg', colorfield.fields.ColorField(default='#FFFFFF', max_length=18)), + ('colour_bg', colorfield.fields.ColorField(default='#FFFFFF', max_length=18)), + ], + options={ + 'verbose_name': 'Supervision areas', + 'ordering': ['name'], + }, + ), + migrations.CreateModel( + name='TimetableWidget', + fields=[ + ], + options={ + 'verbose_name': 'Timetable widget', + 'proxy': True, + 'indexes': [], + 'constraints': [], + }, + bases=('core.dashboardwidget',), + ), migrations.AddIndex( model_name='holiday', index=models.Index(fields=['datefrom', 'dateto'], name='chronos_hol_datefro_36520a_idx'), @@ -79,10 +123,35 @@ class Migration(migrations.Migration): name='lesson', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='lesson', to='chronos.Lesson'), ), + migrations.AddField( + model_name='event', + name='absence_reason', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='absence_reason', to='chronos.AbsenceReason', verbose_name='Absence reason'), + ), + migrations.AddField( + model_name='event', + name='group', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='group', to='core.Group', verbose_name='Group'), + ), + migrations.AddField( + model_name='event', + name='periodfrom', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='periodfrom', to='chronos.TimePeriod', verbose_name='Effective start period of event'), + ), + migrations.AddField( + model_name='event', + name='periodto', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='periodto', to='chronos.TimePeriod', verbose_name='Effective end period of event'), + ), + migrations.AddField( + model_name='event', + name='subject', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='subject', to='chronos.Subject', verbose_name='Subject'), + ), migrations.AddField( model_name='absence', name='person', - field=models.ManyToManyField(related_name='person', to='core.Person'), + field=models.ManyToManyField(related_name='fk_person', to='core.Person'), ), migrations.AddField( model_name='absence', @@ -93,6 +162,10 @@ class Migration(migrations.Migration): model_name='exam', index=models.Index(fields=['periodfrom', 'periodto'], name='chronos_exa_periodf_2f686a_idx'), ), + migrations.AddIndex( + model_name='event', + index=models.Index(fields=['periodfrom', 'periodto'], name='chronos_eve_periodf_1fa12c_idx'), + ), migrations.AddIndex( model_name='absence', index=models.Index(fields=['datefrom', 'dateto'], name='chronos_abs_datefro_d55b67_idx'), diff --git a/aleksis/apps/chronos/models.py b/aleksis/apps/chronos/models.py index 012abce8..84cc04c7 100644 --- a/aleksis/apps/chronos/models.py +++ b/aleksis/apps/chronos/models.py @@ -17,6 +17,7 @@ from django.utils.decorators import classproperty from django.utils.translation import ugettext_lazy as _ from calendarweek.django import CalendarWeek, i18n_day_names_lazy, i18n_day_abbrs_lazy +from colorfield.fields import ColorField from django_global_request.middleware import get_request from aleksis.core.mixins import ExtensibleModel @@ -611,7 +612,7 @@ class Exam(ExtensibleModel): date = models.DateField(verbose_name=_("Date of exam"), null=True) periodfrom = models.IntegerField(verbose_name=_("Effective start period of exam"), null=True) - periodto = models.IntegerField(verbose_name=_("Effective end period of exam"), null=True) + periodto = models.IntegerField(verbose_name=_("Effective end period of exam"), null=True) title = models.CharField(verbose_name=_("Title"), max_length=50) comment = models.TextField(verbose_name=_("Comment")) @@ -630,3 +631,34 @@ class Holiday(ExtensibleModel): ordering = ["datefrom"] indexes = [models.Index(fields=["datefrom", "dateto"])] verbose_name = _("Holiday") + + +class SupervisionArea(ExtensibleModel): + name = models.CharField(verbose_name=_("Short name"), max_length=10) + longname = models.CharField(verbose_name=_("Long name"), max_length=50) + colour_fg = ColorField() + colour_bg = ColorField() + + class Meta: + ordering = ["name"] + verbose_name = _("Supervision area") + verbose_name = _("Supervision areas") + + +class Event(ExtensibleModel): + title = models.CharField(verbose_name=_("Title"), max_length=50) + datefrom = models.DateField(verbose_name=_("Effective start date of event"), null=True) + dateto = models.DateField(verbose_name=_("Effective end date of event"), null=True) + absence_reason = models.ForeignKey("AbsenceReason", on_delete=models.CASCADE, related_name="absence_reason", verbose_name=_("Absence reason")) + periodfrom = models.ForeignKey("TimePeriod", on_delete=models.CASCADE, related_name="periodfrom", verbose_name=_("Effective start period of event")) + periodto = models.ForeignKey("TimePeriod", on_delete=models.CASCADE, related_name="periodto", verbose_name=_("Effective end period of event")) + group = models.ForeignKey("core.Group", on_delete=models.CASCADE, related_name="group", verbose_name=_("Group")) + subject = models.ForeignKey("Subject", on_delete=models.CASCADE, related_name="subject", verbose_name=_("Subject")) + timefrom = models.DateTimeField(verbose_name=_("Effective start time of event"), null=True) + timeto = models.DateTimeField(verbose_name=_("Effective end time of event"), null=True) + + class Meta: + ordering = ["datefrom"] + indexes = [models.Index(fields=["periodfrom", "periodto"])] + verbose_name = _("Event") + verbose_name = _("Events") -- GitLab