From c843a23649247c4bbe5abe0c8dc8134ebfb7571b Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Wed, 29 May 2019 17:11:36 +0200 Subject: [PATCH] +++ WARNING +++ THE BIG MIGRATION RECREATION +++ WARNING +++ IN CASE OF MERGING THIS BRANCH YOU HAVE TO DELETE YOUR WHOLE DATABASE TO DO NEW MIGRATIONS! --- .idea/school-apps.iml | 2 +- schoolapps/aub/filters.py | 19 +++--- schoolapps/aub/migrations/0001_initial.py | 35 ++++++----- schoolapps/aub/migrations/0002_aub_status.py | 18 ------ .../aub/migrations/0003_auto_20181031_1551.py | 24 -------- .../aub/migrations/0003_auto_20181223_0905.py | 43 -------------- .../aub/migrations/0004_auto_20181031_1617.py | 19 ------ .../aub/migrations/0005_auto_20181128_1709.py | 19 ------ .../aub/migrations/0006_auto_20181219_1107.py | 24 -------- .../migrations/0007_merge_20190426_1620.py | 14 ----- .../aub/migrations/0008_auto_20190426_1654.py | 58 ------------------- schoolapps/aub/models.py | 14 ++--- .../dashboard/migrations/0001_initial.py | 13 +++-- schoolapps/dashboard/models.py | 8 +-- schoolapps/doc/__init__.py | 0 schoolapps/doc/admin.py | 3 - schoolapps/doc/apps.py | 5 -- .../doc/migrations/0002_auto_20190106_0905.py | 18 ------ .../doc/migrations/0003_auto_20190108_1626.py | 18 ------ schoolapps/doc/migrations/__init__.py | 0 schoolapps/doc/models.py | 54 ----------------- schoolapps/doc/tests.py | 3 - schoolapps/doc/views.py | 3 - schoolapps/faq/migrations/0001_initial.py | 23 ++------ .../faq/migrations/0002_auto_20190429_1329.py | 18 ------ .../faq/migrations/0003_auto_20190429_1338.py | 23 -------- .../faq/migrations/0004_auto_20190429_1339.py | 18 ------ .../faq/migrations/0005_auto_20190429_2121.py | 25 -------- .../faq/migrations/0006_auto_20190501_1406.py | 22 ------- schoolapps/menu/migrations/0001_initial.py | 17 ++++-- .../migrations/0002_auto_20181129_1743.py | 17 ------ .../migrations/0003_auto_20181129_1747.py | 18 ------ .../migrations/0004_auto_20181211_1648.py | 16 ----- .../migrations/0005_auto_20181211_1743.py | 33 ----------- schoolapps/support/migrations/0001_initial.py | 2 +- .../migrations/0002_auto_20190120_1640.py | 17 ------ .../migrations/0003_auto_20190120_1642.py | 16 ----- schoolapps/timetable/failback_view.py | 7 +++ schoolapps/timetable/pdf.py | 2 +- .../templates/timetable/failback.html | 8 +++ schoolapps/timetable/urls.py | 52 ++++++++++++----- 41 files changed, 123 insertions(+), 625 deletions(-) delete mode 100644 schoolapps/aub/migrations/0002_aub_status.py delete mode 100644 schoolapps/aub/migrations/0003_auto_20181031_1551.py delete mode 100644 schoolapps/aub/migrations/0003_auto_20181223_0905.py delete mode 100644 schoolapps/aub/migrations/0004_auto_20181031_1617.py delete mode 100644 schoolapps/aub/migrations/0005_auto_20181128_1709.py delete mode 100644 schoolapps/aub/migrations/0006_auto_20181219_1107.py delete mode 100644 schoolapps/aub/migrations/0007_merge_20190426_1620.py delete mode 100644 schoolapps/aub/migrations/0008_auto_20190426_1654.py delete mode 100644 schoolapps/doc/__init__.py delete mode 100644 schoolapps/doc/admin.py delete mode 100644 schoolapps/doc/apps.py delete mode 100644 schoolapps/doc/migrations/0002_auto_20190106_0905.py delete mode 100644 schoolapps/doc/migrations/0003_auto_20190108_1626.py delete mode 100644 schoolapps/doc/migrations/__init__.py delete mode 100644 schoolapps/doc/models.py delete mode 100644 schoolapps/doc/tests.py delete mode 100644 schoolapps/doc/views.py delete mode 100644 schoolapps/faq/migrations/0002_auto_20190429_1329.py delete mode 100644 schoolapps/faq/migrations/0003_auto_20190429_1338.py delete mode 100644 schoolapps/faq/migrations/0004_auto_20190429_1339.py delete mode 100644 schoolapps/faq/migrations/0005_auto_20190429_2121.py delete mode 100644 schoolapps/faq/migrations/0006_auto_20190501_1406.py delete mode 100644 schoolapps/menu/migrations/0002_auto_20181129_1743.py delete mode 100644 schoolapps/menu/migrations/0003_auto_20181129_1747.py delete mode 100644 schoolapps/menu/migrations/0004_auto_20181211_1648.py delete mode 100644 schoolapps/menu/migrations/0005_auto_20181211_1743.py delete mode 100644 schoolapps/support/migrations/0002_auto_20190120_1640.py delete mode 100644 schoolapps/support/migrations/0003_auto_20190120_1642.py create mode 100644 schoolapps/timetable/failback_view.py create mode 100755 schoolapps/timetable/templates/timetable/failback.html diff --git a/.idea/school-apps.iml b/.idea/school-apps.iml index 603f44515..d0b5ddd7b 100644 --- a/.idea/school-apps.iml +++ b/.idea/school-apps.iml @@ -23,7 +23,7 @@ <excludeFolder url="file://$MODULE_DIR$/env" /> <excludeFolder url="file://$MODULE_DIR$/schoolapps/staticcollect" /> </content> - <orderEntry type="inheritedJdk" /> + <orderEntry type="jdk" jdkName="Python 3.7 (school-apps)" jdkType="Python SDK" /> <orderEntry type="sourceFolder" forTests="false" /> </component> <component name="TemplatesService"> diff --git a/schoolapps/aub/filters.py b/schoolapps/aub/filters.py index 880f283c7..23dd84fc7 100644 --- a/schoolapps/aub/filters.py +++ b/schoolapps/aub/filters.py @@ -1,22 +1,25 @@ -from django import forms from django.contrib.auth.models import User import django_filters from .models import Aub +from django.db.utils import ProgrammingError -class AUBFilter(django_filters.FilterSet): - def getAUBUsers(): - ''' Find all users who sends an AUB''' +def get_aub_users(): + """ Find all users who sends an AUB """ + try: aub_users = Aub.objects.values_list('created_by') users = list(User.objects.filter(id__in=aub_users)) # user_ids = [(str(user.id),user.username) for user in users] - user_ids = [(str(user.id),user.last_name+', '+user.first_name) for user in users] + user_ids = [(str(user.id), user.last_name + ', ' + user.first_name) for user in users] user_ids_sorted = sorted(user_ids, key=lambda user: user[1]) return user_ids_sorted + except ProgrammingError: + return [] + - created_by = django_filters.ChoiceFilter(label='Von', choices=getAUBUsers()) +class AUBFilter(django_filters.FilterSet): + created_by = django_filters.ChoiceFilter(label='Von', choices=get_aub_users()) class Meta: model = Aub - fields = ['created_by',] - + fields = ['created_by', ] diff --git a/schoolapps/aub/migrations/0001_initial.py b/schoolapps/aub/migrations/0001_initial.py index 409cd2cc6..ec71e6566 100644 --- a/schoolapps/aub/migrations/0001_initial.py +++ b/schoolapps/aub/migrations/0001_initial.py @@ -1,7 +1,9 @@ -# Generated by Django 2.1.2 on 2018-10-27 17:37 +# Generated by Django 2.2.1 on 2019-05-29 15:05 +import datetime from django.conf import settings from django.db import migrations, models +import django.db.models.deletion import django.utils.timezone @@ -18,22 +20,27 @@ class Migration(migrations.Migration): name='Aub', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('from_dt', models.DateTimeField(default=django.utils.timezone.now)), - ('to_dt', models.DateTimeField(default=django.utils.timezone.now)), + ('from_date', models.DateField(default=datetime.date.today, verbose_name='Startdatum')), + ('from_time', models.TimeField(default=django.utils.timezone.now, verbose_name='Startzeit')), + ('to_date', models.DateField(default=datetime.date.today, verbose_name='Enddatum')), + ('to_time', models.TimeField(default=django.utils.timezone.now, verbose_name='Endzeit')), ('description', models.TextField()), - ('created_at', models.DateTimeField(default=django.utils.timezone.now)), - ('created_by', models.ForeignKey(default=1, on_delete=models.SET(1), related_name='aubs', to=settings.AUTH_USER_MODEL)), + ('status', models.IntegerField( + choices=[(0, 'In Bearbeitung 1'), (1, 'In Bearbeitung 2'), (2, 'Genehmigt'), (3, 'Abgelehnt')], + default=0, verbose_name='Status')), + ('created_at', + models.DateTimeField(default=django.utils.timezone.now, verbose_name='Erstellungszeitpunkt')), + ('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, + related_name='aubs', to=settings.AUTH_USER_MODEL, + verbose_name='Erstellt von')), ], options={ - 'permissions': (('apply_for_aub', 'Apply for a AUB'), ('cancel_aub', 'Cancel a AUB'), ('allow1_aub', 'First permission'), ('allow2_aub', 'Second permission'), ('check1_aub', 'Check a AUB'), ('check2_aub', 'Check a AUB')), + 'verbose_name': 'AUB', + 'verbose_name_plural': 'AUBs', + 'permissions': (('apply_for_aub', 'Apply for a AUB'), ('cancel_aub', 'Cancel a AUB'), + ('allow1_aub', 'First permission'), ('allow2_aub', 'Second permission'), + ('check1_aub', 'Check a AUB'), ('check2_aub', 'Check a AUB'), + ('view_archive', 'View AUB archive')), }, ), - migrations.CreateModel( - name='Status', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=100)), - ('style_classes', models.CharField(max_length=200)), - ], - ), ] diff --git a/schoolapps/aub/migrations/0002_aub_status.py b/schoolapps/aub/migrations/0002_aub_status.py deleted file mode 100644 index b32b83b9e..000000000 --- a/schoolapps/aub/migrations/0002_aub_status.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.1.2 on 2018-10-27 17:39 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('aub', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='aub', - name='status', - field=models.ForeignKey(default=1, on_delete=models.SET(1), related_name='aubs', to='aub.Status'), - ), - ] diff --git a/schoolapps/aub/migrations/0003_auto_20181031_1551.py b/schoolapps/aub/migrations/0003_auto_20181031_1551.py deleted file mode 100644 index c3c527456..000000000 --- a/schoolapps/aub/migrations/0003_auto_20181031_1551.py +++ /dev/null @@ -1,24 +0,0 @@ -# Generated by Django 2.0.7 on 2018-10-31 14:51 - -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ('aub', '0002_aub_status'), - ] - - operations = [ - migrations.AlterField( - model_name='aub', - name='created_by', - field=models.ForeignKey(default=3, on_delete=models.SET(3), related_name='aubs', - to=settings.AUTH_USER_MODEL), - ), - migrations.AlterField( - model_name='aub', - name='status', - field=models.ForeignKey(default=5, on_delete=models.SET(5), related_name='aubs', to='aub.Status'), - ), - ] diff --git a/schoolapps/aub/migrations/0003_auto_20181223_0905.py b/schoolapps/aub/migrations/0003_auto_20181223_0905.py deleted file mode 100644 index 4ed0109e2..000000000 --- a/schoolapps/aub/migrations/0003_auto_20181223_0905.py +++ /dev/null @@ -1,43 +0,0 @@ -# Generated by Django 2.1.2 on 2018-12-23 08:05 - -import datetime -from django.db import migrations, models -import django.utils.timezone - - -class Migration(migrations.Migration): - - dependencies = [ - ('aub', '0002_aub_status'), - ] - - operations = [ - migrations.RemoveField( - model_name='aub', - name='from_dt', - ), - migrations.RemoveField( - model_name='aub', - name='to_dt', - ), - migrations.AddField( - model_name='aub', - name='from_date', - field=models.DateField(default=datetime.date.today), - ), - migrations.AddField( - model_name='aub', - name='from_time', - field=models.TimeField(default=django.utils.timezone.now), - ), - migrations.AddField( - model_name='aub', - name='to_date', - field=models.DateField(default=datetime.date.today), - ), - migrations.AddField( - model_name='aub', - name='to_time', - field=models.TimeField(default=django.utils.timezone.now), - ), - ] diff --git a/schoolapps/aub/migrations/0004_auto_20181031_1617.py b/schoolapps/aub/migrations/0004_auto_20181031_1617.py deleted file mode 100644 index 200b95a88..000000000 --- a/schoolapps/aub/migrations/0004_auto_20181031_1617.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 2.0.4 on 2018-10-31 15:17 - -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('aub', '0003_auto_20181031_1551'), - ] - - operations = [ - migrations.AlterField( - model_name='aub', - name='created_by', - field=models.ForeignKey(default=1, on_delete=models.SET(1), related_name='aubs', to=settings.AUTH_USER_MODEL), - ), - ] diff --git a/schoolapps/aub/migrations/0005_auto_20181128_1709.py b/schoolapps/aub/migrations/0005_auto_20181128_1709.py deleted file mode 100644 index 13997ca76..000000000 --- a/schoolapps/aub/migrations/0005_auto_20181128_1709.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 2.0.7 on 2018-11-28 16:09 - -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ('aub', '0004_auto_20181031_1617'), - ] - - operations = [ - migrations.AlterField( - model_name='aub', - name='created_by', - field=models.ForeignKey(default=3, on_delete=models.SET(3), related_name='aubs', - to=settings.AUTH_USER_MODEL), - ), - ] diff --git a/schoolapps/aub/migrations/0006_auto_20181219_1107.py b/schoolapps/aub/migrations/0006_auto_20181219_1107.py deleted file mode 100644 index 2d7f31b40..000000000 --- a/schoolapps/aub/migrations/0006_auto_20181219_1107.py +++ /dev/null @@ -1,24 +0,0 @@ -# Generated by Django 2.0.4 on 2018-12-19 10:07 - -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('aub', '0005_auto_20181128_1709'), - ] - - operations = [ - migrations.AlterField( - model_name='aub', - name='created_by', - field=models.ForeignKey(default=1, on_delete=models.SET(1), related_name='aubs', to=settings.AUTH_USER_MODEL), - ), - migrations.AlterField( - model_name='aub', - name='status', - field=models.ForeignKey(default=7, on_delete=models.SET(7), related_name='aubs', to='aub.Status'), - ), - ] diff --git a/schoolapps/aub/migrations/0007_merge_20190426_1620.py b/schoolapps/aub/migrations/0007_merge_20190426_1620.py deleted file mode 100644 index bb9ad1f46..000000000 --- a/schoolapps/aub/migrations/0007_merge_20190426_1620.py +++ /dev/null @@ -1,14 +0,0 @@ -# Generated by Django 2.1.5 on 2019-04-26 14:20 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('aub', '0003_auto_20181223_0905'), - ('aub', '0006_auto_20181219_1107'), - ] - - operations = [ - ] diff --git a/schoolapps/aub/migrations/0008_auto_20190426_1654.py b/schoolapps/aub/migrations/0008_auto_20190426_1654.py deleted file mode 100644 index ca3dab694..000000000 --- a/schoolapps/aub/migrations/0008_auto_20190426_1654.py +++ /dev/null @@ -1,58 +0,0 @@ -# Generated by Django 2.1.5 on 2019-04-26 14:54 - -import datetime -from django.conf import settings -from django.db import migrations, models -import django.utils.timezone - - -class Migration(migrations.Migration): - - dependencies = [ - ('aub', '0007_merge_20190426_1620'), - ] - - operations = [ - migrations.AlterModelOptions( - name='aub', - options={'permissions': (('apply_for_aub', 'Apply for a AUB'), ('cancel_aub', 'Cancel a AUB'), ('allow1_aub', 'First permission'), ('allow2_aub', 'Second permission'), ('check1_aub', 'Check a AUB'), ('check2_aub', 'Check a AUB'), ('view_archive', 'View AUB archive')), 'verbose_name': 'AUB', 'verbose_name_plural': 'AUBs'}, - ), - migrations.AlterField( - model_name='aub', - name='created_at', - field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='Erstellungszeitpunkt'), - ), - migrations.AlterField( - model_name='aub', - name='created_by', - field=models.ForeignKey(default=1, on_delete=models.SET(1), related_name='aubs', to=settings.AUTH_USER_MODEL, verbose_name='Erstellt von'), - ), - migrations.AlterField( - model_name='aub', - name='from_date', - field=models.DateField(default=datetime.date.today, verbose_name='Startdatum'), - ), - migrations.AlterField( - model_name='aub', - name='from_time', - field=models.TimeField(default=django.utils.timezone.now, verbose_name='Startzeit'), - ), - migrations.AlterField( - model_name='aub', - name='status', - field=models.IntegerField(choices=[(0, 'In Bearbeitung 1'), (1, 'In Bearbeitung 2'), (2, 'Genehmigt'), (3, 'Abgelehnt')], default=0, verbose_name='Status'), - ), - migrations.AlterField( - model_name='aub', - name='to_date', - field=models.DateField(default=datetime.date.today, verbose_name='Enddatum'), - ), - migrations.AlterField( - model_name='aub', - name='to_time', - field=models.TimeField(default=django.utils.timezone.now, verbose_name='Endzeit'), - ), - migrations.DeleteModel( - name='Status', - ), - ] diff --git a/schoolapps/aub/models.py b/schoolapps/aub/models.py index ce8b64259..6b1ef6807 100755 --- a/schoolapps/aub/models.py +++ b/schoolapps/aub/models.py @@ -4,12 +4,12 @@ from django.contrib.auth.models import User from datetime import date -def get_default_user(): - user, created = User.objects.get_or_create(username='nouser') - return user.id +# def get_default_user(): +# user, created = User.objects.get_or_create(username='nouser') +# return user.id -class Status(): +class Status: def __init__(self, name, style_class): self.name = name self.style_class = style_class @@ -24,7 +24,7 @@ status_list = [ Status(name='Genehmigt', style_class='green'), Status(name='Abgelehnt', style_class='red'), ] -print("status_list[0].name :", status_list[0].name) +# print("status_list[0].name :", status_list[0].name) status_choices = [(x, val.name) for x, val in enumerate(status_list)] @@ -40,8 +40,8 @@ class Aub(models.Model): status = models.IntegerField(default=0, choices=status_choices, verbose_name="Status") # Meta - created_by = models.ForeignKey(User, related_name='aubs', on_delete=models.SET(get_default_user()), - default=get_default_user(), verbose_name="Erstellt von") + created_by = models.ForeignKey(User, related_name='aubs', on_delete=models.SET_NULL + , verbose_name="Erstellt von", blank=True, null=True) created_at = models.DateTimeField(default=timezone.now, verbose_name="Erstellungszeitpunkt") def getStatus(self): diff --git a/schoolapps/dashboard/migrations/0001_initial.py b/schoolapps/dashboard/migrations/0001_initial.py index 9fe6a8f8b..b98c580d6 100644 --- a/schoolapps/dashboard/migrations/0001_initial.py +++ b/schoolapps/dashboard/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 2.1.2 on 2018-10-27 16:55 +# Generated by Django 2.2.1 on 2019-05-29 15:06 from django.conf import settings from django.db import migrations, models @@ -16,26 +16,27 @@ class Migration(migrations.Migration): operations = [ migrations.CreateModel( - name='Activity', + name='Notification', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=200)), ('description', models.TextField(max_length=500)), + ('link', models.URLField(blank=True)), ('app', models.CharField(max_length=100)), ('created_at', models.DateTimeField(default=django.utils.timezone.now)), - ('user', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notifications', + to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( - name='Notification', + name='Activity', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=200)), ('description', models.TextField(max_length=500)), - ('link', models.URLField(blank=True)), ('app', models.CharField(max_length=100)), ('created_at', models.DateTimeField(default=django.utils.timezone.now)), - ('user', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, related_name='notifications', to=settings.AUTH_USER_MODEL)), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), ] diff --git a/schoolapps/dashboard/models.py b/schoolapps/dashboard/models.py index d1d465126..218eb4e43 100755 --- a/schoolapps/dashboard/models.py +++ b/schoolapps/dashboard/models.py @@ -6,14 +6,14 @@ from django.utils import timezone from mailer import send_mail_with_template -def get_default_user(): - User.objects.get_or_create(username='nouser') +# def get_default_user(): +# User.objects.get_or_create(username='nouser') # Create your models here. class Activity(models.Model): - user = models.ForeignKey(to=User, on_delete=models.CASCADE, default=get_default_user()) + user = models.ForeignKey(to=User, on_delete=models.CASCADE) title = models.CharField(max_length=200) description = models.TextField(max_length=500) @@ -28,7 +28,7 @@ class Activity(models.Model): class Notification(models.Model): # to = models.ManyToManyField(User, related_name='notifications') - user = models.ForeignKey(to=User, on_delete=models.CASCADE, default=get_default_user(), related_name="notifications") + user = models.ForeignKey(to=User, on_delete=models.CASCADE, related_name="notifications") title = models.CharField(max_length=200) description = models.TextField(max_length=500) link = models.URLField(blank=True) diff --git a/schoolapps/doc/__init__.py b/schoolapps/doc/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/schoolapps/doc/admin.py b/schoolapps/doc/admin.py deleted file mode 100644 index 8c38f3f3d..000000000 --- a/schoolapps/doc/admin.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.contrib import admin - -# Register your models here. diff --git a/schoolapps/doc/apps.py b/schoolapps/doc/apps.py deleted file mode 100644 index 1c79f22e3..000000000 --- a/schoolapps/doc/apps.py +++ /dev/null @@ -1,5 +0,0 @@ -from django.apps import AppConfig - - -class DocConfig(AppConfig): - name = 'doc' diff --git a/schoolapps/doc/migrations/0002_auto_20190106_0905.py b/schoolapps/doc/migrations/0002_auto_20190106_0905.py deleted file mode 100644 index b1cae3196..000000000 --- a/schoolapps/doc/migrations/0002_auto_20190106_0905.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.1.2 on 2019-01-06 08:05 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='subject', - name='abbreviation', - field=models.CharField(max_length=5), - ), - ] diff --git a/schoolapps/doc/migrations/0003_auto_20190108_1626.py b/schoolapps/doc/migrations/0003_auto_20190108_1626.py deleted file mode 100644 index 89de0be62..000000000 --- a/schoolapps/doc/migrations/0003_auto_20190108_1626.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.1.2 on 2019-01-08 15:26 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('doc', '0002_auto_20190106_0905'), - ] - - operations = [ - migrations.AlterField( - model_name='subject', - name='abbreviation', - field=models.CharField(max_length=5, unique=True), - ), - ] diff --git a/schoolapps/doc/migrations/__init__.py b/schoolapps/doc/migrations/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/schoolapps/doc/models.py b/schoolapps/doc/models.py deleted file mode 100644 index a7e425d40..000000000 --- a/schoolapps/doc/models.py +++ /dev/null @@ -1,54 +0,0 @@ -from django.db import models - -# Create your models here. -class Teacher(models.Model): - abbreviation = models.CharField(max_length=5, primary_key=True, unique=True) - firstname = models.CharField(max_length=20) - lastname = models.CharField(max_length=40) - - -class Certificate(models.Model): - teacher = models.ForeignKey(to=Teacher.abbreviation, on_delete=models.CASCADE) - subject = models.ForeignKey(to=Subject.abbreviation, on_delete=models.CASCADE) - - -class WorkingTime(models.Model): - teacher = models.ForeignKey(to=Teacher.abbreviation) - term = models.ForeignKey('Term', on_delete=models.CASCADE) - debit = models.DecimalField(max_digits=5, decimal_places=1) - - - -class Subject(models.Model): - abbreviation = models.CharField(max_length=5, primary_key=True, unique=True) - name = models.CharField(max_length=30) - - -class SubjectTitle(models.Model): - subject_title = models.CharField(max_length=6, primary_key=True, unique=True) - abbreviation = models.ForeignKey(to=Subject.abbreviation, on_delete=models.CASCADE) - - -class Course(models.Model): - grade = models.CharField(max_length=6) - group = models.CharField(max_length=6) - subject_title = models.ForeignKey(to=SubjectTitle.subject_title, on_delete=models.CASCADE) - teacher = models.ForeignKey(to=Teacher.abbreviation, on_delete=models.CASCADE) - - -class NoLessons(models.Model): - day = models.DateField() - reason = models.CharField(max_length=50) - - -class Schoolyear(models.Model): - begin = models.DateField() - end = models.DateField() - - -class Term(models.Model): - begin = models.DateField() - end = models.DateField() - - - diff --git a/schoolapps/doc/tests.py b/schoolapps/doc/tests.py deleted file mode 100644 index 7ce503c2d..000000000 --- a/schoolapps/doc/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/schoolapps/doc/views.py b/schoolapps/doc/views.py deleted file mode 100644 index 91ea44a21..000000000 --- a/schoolapps/doc/views.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.shortcuts import render - -# Create your views here. diff --git a/schoolapps/faq/migrations/0001_initial.py b/schoolapps/faq/migrations/0001_initial.py index f399d43ad..8f23b0f83 100644 --- a/schoolapps/faq/migrations/0001_initial.py +++ b/schoolapps/faq/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 2.1.5 on 2019-04-29 10:58 +# Generated by Django 2.2.1 on 2019-05-29 15:05 from django.conf import settings from django.db import migrations, models @@ -14,25 +14,14 @@ class Migration(migrations.Migration): ] operations = [ - migrations.CreateModel( - name='FAQAnswer', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('answer_text', models.CharField(max_length=1000)), - ], - options={ - 'verbose_name': 'FAQ-Antwort', - 'verbose_name_plural': 'FAQ-Antworten', - }, - ), migrations.CreateModel( name='FAQQuestion', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('question_text', models.CharField(max_length=200)), - ('icon', models.CharField(max_length=20)), - ('answered', models.BooleanField(default=False, verbose_name='Beantwortet')), - ('answer', models.ForeignKey(blank=True, on_delete=django.db.models.deletion.CASCADE, to='faq.FAQAnswer')), + ('question_text', models.TextField()), + ('icon', models.CharField(blank=True, default='question_answer', max_length=20)), + ('show', models.BooleanField(default=False, verbose_name='Veröffentlicht')), + ('answer_text', models.TextField(blank=True)), ], options={ 'verbose_name': 'FAQ-Frage', @@ -43,7 +32,7 @@ class Migration(migrations.Migration): name='Question', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('question_text', models.CharField(max_length=200)), + ('question_text', models.TextField()), ('pub_date', models.DateTimeField(verbose_name='date published')), ('answered', models.BooleanField(default=False, verbose_name='Beantwortet')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), diff --git a/schoolapps/faq/migrations/0002_auto_20190429_1329.py b/schoolapps/faq/migrations/0002_auto_20190429_1329.py deleted file mode 100644 index b0975ee6e..000000000 --- a/schoolapps/faq/migrations/0002_auto_20190429_1329.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.1.5 on 2019-04-29 11:29 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('faq', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='faqquestion', - name='icon', - field=models.CharField(blank=True, default='question_answer', max_length=20), - ), - ] diff --git a/schoolapps/faq/migrations/0003_auto_20190429_1338.py b/schoolapps/faq/migrations/0003_auto_20190429_1338.py deleted file mode 100644 index ee0b13532..000000000 --- a/schoolapps/faq/migrations/0003_auto_20190429_1338.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 2.1.5 on 2019-04-29 11:38 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('faq', '0002_auto_20190429_1329'), - ] - - operations = [ - migrations.AlterField( - model_name='faqquestion', - name='question_text', - field=models.TextField(), - ), - migrations.AlterField( - model_name='question', - name='question_text', - field=models.TextField(), - ), - ] diff --git a/schoolapps/faq/migrations/0004_auto_20190429_1339.py b/schoolapps/faq/migrations/0004_auto_20190429_1339.py deleted file mode 100644 index 8e578ab06..000000000 --- a/schoolapps/faq/migrations/0004_auto_20190429_1339.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.1.5 on 2019-04-29 11:39 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('faq', '0003_auto_20190429_1338'), - ] - - operations = [ - migrations.AlterField( - model_name='faqanswer', - name='answer_text', - field=models.TextField(), - ), - ] diff --git a/schoolapps/faq/migrations/0005_auto_20190429_2121.py b/schoolapps/faq/migrations/0005_auto_20190429_2121.py deleted file mode 100644 index c9d466fae..000000000 --- a/schoolapps/faq/migrations/0005_auto_20190429_2121.py +++ /dev/null @@ -1,25 +0,0 @@ -# Generated by Django 2.1.5 on 2019-04-29 19:21 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('faq', '0004_auto_20190429_1339'), - ] - - operations = [ - migrations.RemoveField( - model_name='faqquestion', - name='answer', - ), - migrations.AddField( - model_name='faqquestion', - name='answer_text', - field=models.TextField(blank=True), - ), - migrations.DeleteModel( - name='FAQAnswer', - ), - ] diff --git a/schoolapps/faq/migrations/0006_auto_20190501_1406.py b/schoolapps/faq/migrations/0006_auto_20190501_1406.py deleted file mode 100644 index 568a818df..000000000 --- a/schoolapps/faq/migrations/0006_auto_20190501_1406.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 2.2 on 2019-05-01 12:06 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('faq', '0005_auto_20190429_2121'), - ] - - operations = [ - migrations.RemoveField( - model_name='faqquestion', - name='answered', - ), - migrations.AddField( - model_name='faqquestion', - name='show', - field=models.BooleanField(default=False, verbose_name='Veröffentlicht'), - ), - ] diff --git a/schoolapps/menu/migrations/0001_initial.py b/schoolapps/menu/migrations/0001_initial.py index ba1c3a0c1..e1433af66 100644 --- a/schoolapps/menu/migrations/0001_initial.py +++ b/schoolapps/menu/migrations/0001_initial.py @@ -1,9 +1,11 @@ -# Generated by Django 2.0.7 on 2018-11-28 16:14 +# Generated by Django 2.2.1 on 2019-05-29 15:05 from django.db import migrations, models +import helper class Migration(migrations.Migration): + initial = True dependencies = [ @@ -11,12 +13,17 @@ class Migration(migrations.Migration): operations = [ migrations.CreateModel( - name='MealPlan', + name='Menu', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('calendar_week', models.IntegerField()), - ('year', models.IntegerField()), - ('pdf', models.FileField(upload_to='mealplan/%Y/')), + ('calendar_week', models.IntegerField(verbose_name='KW')), + ('year', models.IntegerField(verbose_name='Jahr')), + ('pdf', models.FileField(upload_to=helper.path_and_rename, verbose_name='PDF')), ], + options={ + 'verbose_name': 'Speiseplan', + 'verbose_name_plural': 'Speisepläne', + 'unique_together': {('calendar_week', 'year')}, + }, ), ] diff --git a/schoolapps/menu/migrations/0002_auto_20181129_1743.py b/schoolapps/menu/migrations/0002_auto_20181129_1743.py deleted file mode 100644 index f1a9d77ca..000000000 --- a/schoolapps/menu/migrations/0002_auto_20181129_1743.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 2.0.7 on 2018-11-29 16:43 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ('menu', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='mealplan', - name='pdf', - field=models.FileField(upload_to='menus/'), - ), - ] diff --git a/schoolapps/menu/migrations/0003_auto_20181129_1747.py b/schoolapps/menu/migrations/0003_auto_20181129_1747.py deleted file mode 100644 index 4976b2af8..000000000 --- a/schoolapps/menu/migrations/0003_auto_20181129_1747.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.0.7 on 2018-11-29 16:47 - -from django.db import migrations, models -import helper - - -class Migration(migrations.Migration): - dependencies = [ - ('menu', '0002_auto_20181129_1743'), - ] - - operations = [ - migrations.AlterField( - model_name='mealplan', - name='pdf', - field=models.FileField(upload_to=helper.path_and_rename), - ), - ] diff --git a/schoolapps/menu/migrations/0004_auto_20181211_1648.py b/schoolapps/menu/migrations/0004_auto_20181211_1648.py deleted file mode 100644 index 1dd555897..000000000 --- a/schoolapps/menu/migrations/0004_auto_20181211_1648.py +++ /dev/null @@ -1,16 +0,0 @@ -# Generated by Django 2.0.7 on 2018-12-11 15:48 - -from django.db import migrations - - -class Migration(migrations.Migration): - dependencies = [ - ('menu', '0003_auto_20181129_1747'), - ] - - operations = [ - migrations.AlterUniqueTogether( - name='mealplan', - unique_together={('calendar_week', 'year')}, - ), - ] diff --git a/schoolapps/menu/migrations/0005_auto_20181211_1743.py b/schoolapps/menu/migrations/0005_auto_20181211_1743.py deleted file mode 100644 index 0947f0d80..000000000 --- a/schoolapps/menu/migrations/0005_auto_20181211_1743.py +++ /dev/null @@ -1,33 +0,0 @@ -# Generated by Django 2.0.7 on 2018-12-11 16:43 - -from django.db import migrations, models -import helper - - -class Migration(migrations.Migration): - dependencies = [ - ('menu', '0004_auto_20181211_1648'), - ] - - operations = [ - migrations.CreateModel( - name='Menu', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('calendar_week', models.IntegerField(verbose_name='KW')), - ('year', models.IntegerField(verbose_name='Jahr')), - ('pdf', models.FileField(upload_to=helper.path_and_rename, verbose_name='PDF')), - ], - options={ - 'verbose_name': 'Speiseplan', - 'verbose_name_plural': 'Speisepläne', - }, - ), - migrations.DeleteModel( - name='MealPlan', - ), - migrations.AlterUniqueTogether( - name='menu', - unique_together={('calendar_week', 'year')}, - ), - ] diff --git a/schoolapps/support/migrations/0001_initial.py b/schoolapps/support/migrations/0001_initial.py index a4552536d..1bd02efd7 100644 --- a/schoolapps/support/migrations/0001_initial.py +++ b/schoolapps/support/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 2.1.5 on 2019-01-20 15:39 +# Generated by Django 2.2.1 on 2019-05-29 15:05 from django.db import migrations, models diff --git a/schoolapps/support/migrations/0002_auto_20190120_1640.py b/schoolapps/support/migrations/0002_auto_20190120_1640.py deleted file mode 100644 index 703fc14c1..000000000 --- a/schoolapps/support/migrations/0002_auto_20190120_1640.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 2.1.5 on 2019-01-20 15:40 - -from django.db import migrations - - -class Migration(migrations.Migration): - dependencies = [ - ('support', '0001_initial'), - ] - - operations = [ - migrations.AlterModelOptions( - name='support', - options={'permissions': (('use_rebus', 'Can use REBUS'), ('send_feedback', 'Can send feedback'), - ('can_edit_support_settings', 'Can edit support settings'))}, - ), - ] diff --git a/schoolapps/support/migrations/0003_auto_20190120_1642.py b/schoolapps/support/migrations/0003_auto_20190120_1642.py deleted file mode 100644 index a78f349d4..000000000 --- a/schoolapps/support/migrations/0003_auto_20190120_1642.py +++ /dev/null @@ -1,16 +0,0 @@ -# Generated by Django 2.1.5 on 2019-01-20 15:42 - -from django.db import migrations - - -class Migration(migrations.Migration): - dependencies = [ - ('support', '0002_auto_20190120_1640'), - ] - - operations = [ - migrations.AlterModelOptions( - name='support', - options={'permissions': (('use_rebus', 'Can use REBUS'), ('send_feedback', 'Can send feedback'))}, - ), - ] diff --git a/schoolapps/timetable/failback_view.py b/schoolapps/timetable/failback_view.py new file mode 100644 index 000000000..c1a4ac139 --- /dev/null +++ b/schoolapps/timetable/failback_view.py @@ -0,0 +1,7 @@ +from django.contrib.auth.decorators import login_required +from django.shortcuts import render + + +@login_required +def failback(request, *args, **kwargs): + return render(request, "timetable/failback.html") diff --git a/schoolapps/timetable/pdf.py b/schoolapps/timetable/pdf.py index 52f8cb879..d4d39a1ae 100644 --- a/schoolapps/timetable/pdf.py +++ b/schoolapps/timetable/pdf.py @@ -7,7 +7,7 @@ from django.utils import formats from schoolapps.settings import BASE_DIR # LaTeX constants -from untisconnect.sub import get_header_information +# from untisconnect.sub import get_header_information DIR = os.path.join(BASE_DIR, "static", "common", "logo.png") TEX_HEADER_1 = """\\documentclass[11pt]{article} diff --git a/schoolapps/timetable/templates/timetable/failback.html b/schoolapps/timetable/templates/timetable/failback.html new file mode 100755 index 000000000..b68dbeed2 --- /dev/null +++ b/schoolapps/timetable/templates/timetable/failback.html @@ -0,0 +1,8 @@ +{% include 'partials/header.html' %} + +<main> + <h3>Die Stundenpläne sind aktuell noch nicht einsehbar.</h3> + +</main> + +{% include 'partials/footer.html' %} diff --git a/schoolapps/timetable/urls.py b/schoolapps/timetable/urls.py index 61eb454ca..aac4d06f0 100755 --- a/schoolapps/timetable/urls.py +++ b/schoolapps/timetable/urls.py @@ -1,17 +1,39 @@ from django.urls import path -from . import views +from untisconnect.models import Terms -urlpatterns = [ - path('', views.all, name='timetable_admin_all'), - path('my', views.my_plan, name='timetable_my_plan'), - path('my/<int:year>/<int:month>/<int:day>/', views.my_plan, name='timetable_my_plan'), - path('quick/', views.quicklaunch, name='timetable_quicklaunch'), - # plan_type = ["teacher", "class", "room"] - path('<str:plan_type>/<int:plan_id>', views.plan, name='timetable_smart_plan'), - path('<str:plan_type>/<int:plan_id>/<str:regular>', views.plan, name='timetable_regular_plan'), - path('<str:plan_type>/<int:plan_id>/<int:year>/<int:calendar_week>', views.plan, - name='timetable_smart_plan_week'), - path('substitutions/', views.substitutions, name='timetable_substitutions'), - path('substitutions/<int:year>/<int:month>/<int:day>/', views.substitutions, name='timetable_substitutions_date'), - path('class.pdf', views.sub_pdf, name="timetable_substitutions_pdf") -] +try: + from . import views + + urlpatterns = [ + path('', views.all, name='timetable_admin_all'), + path('my', views.my_plan, name='timetable_my_plan'), + path('my/<int:year>/<int:month>/<int:day>/', views.my_plan, name='timetable_my_plan'), + path('quick/', views.quicklaunch, name='timetable_quicklaunch'), + # plan_type = ["teacher", "class", "room"] + path('<str:plan_type>/<int:plan_id>', views.plan, name='timetable_smart_plan'), + path('<str:plan_type>/<int:plan_id>/<str:regular>', views.plan, name='timetable_regular_plan'), + path('<str:plan_type>/<int:plan_id>/<int:year>/<int:calendar_week>', views.plan, + name='timetable_smart_plan_week'), + path('substitutions/', views.substitutions, name='timetable_substitutions'), + path('substitutions/<int:year>/<int:month>/<int:day>/', views.substitutions, + name='timetable_substitutions_date'), + path('class.pdf', views.sub_pdf, name="timetable_substitutions_pdf") + ] + +except Terms.DoesNotExist: + from . import failback_view + + urlpatterns = [ + path('', failback_view.failback, name='timetable_admin_all'), + path('my', failback_view.failback, name='timetable_my_plan'), + path('my/<int:year>/<int:month>/<int:day>/', failback_view.failback, name='timetable_my_plan'), + path('quick/', failback_view.failback, name='timetable_quicklaunch'), + path('<str:plan_type>/<int:plan_id>', failback_view.failback, name='timetable_smart_plan'), + path('<str:plan_type>/<int:plan_id>/<str:regular>', failback_view.failback, name='timetable_regular_plan'), + path('<str:plan_type>/<int:plan_id>/<int:year>/<int:calendar_week>', failback_view.failback, + name='timetable_smart_plan_week'), + path('substitutions/', failback_view.failback, name='timetable_substitutions'), + path('substitutions/<int:year>/<int:month>/<int:day>/', failback_view.failback, + name='timetable_substitutions_date'), + path('class.pdf', failback_view.failback, name="timetable_substitutions_pdf") + ] -- GitLab