From 9014661e518c6d9457723571d7b0ef1ac9be6c6b Mon Sep 17 00:00:00 2001
From: Dominik George <nik@naturalnet.de>
Date: Sun, 8 Dec 2019 21:05:49 +0100
Subject: [PATCH] Remove SchoolRelated and all related uses

Advances BiscuIT-ng#115.
---
 biscuit/apps/alsijil/models.py                | 21 ++++++++++---------
 .../alsijil/print/full_register.html          |  2 +-
 biscuit/apps/alsijil/views.py                 |  5 +++--
 3 files changed, 15 insertions(+), 13 deletions(-)

diff --git a/biscuit/apps/alsijil/models.py b/biscuit/apps/alsijil/models.py
index 309d5b5e7..e2e079d99 100644
--- a/biscuit/apps/alsijil/models.py
+++ b/biscuit/apps/alsijil/models.py
@@ -1,14 +1,14 @@
 from django.db import models
 from django.utils.translation import ugettext_lazy as _
 
-from biscuit.core.mixins import SchoolRelated
+from biscuit.core.mixins import CRUDMixin
 
 
 def isidentifier(value: str) -> bool:
     return value.isidentifier()
 
 
-class PersonalNote(SchoolRelated):
+class PersonalNote(models.Model):
     """ A personal note about a single person. Used in the class register to note
     absences, excuses and remarks about a student in a single lesson period.
     """
@@ -25,12 +25,12 @@ class PersonalNote(SchoolRelated):
     remarks = models.CharField(max_length=200, blank=True)
 
     class Meta:
-        unique_together = [['school', 'lesson_period', 'week', 'person']]
+        unique_together = [['lesson_period', 'week', 'person']]
         ordering = ['lesson_period__lesson__date_start', 'week', 'lesson_period__period__weekday',
                     'lesson_period__period__period', 'person__last_name', 'person__first_name']
 
 
-class LessonDocumentation(SchoolRelated):
+class LessonDocumentation(models.Model, CRUDMixin):
     """ A documentation on a single lesson period. Non-personal, includes
     the topic and homework of the lesson.
     """
@@ -43,20 +43,21 @@ class LessonDocumentation(SchoolRelated):
     homework = models.CharField(verbose_name=_('Homework'), max_length=200, blank=True)
 
     class Meta:
-        unique_together = [['school', 'lesson_period', 'week']]
+        unique_together = [['lesson_period', 'week']]
         ordering = ['lesson_period__lesson__date_start', 'week',
                     'lesson_period__period__weekday', 'lesson_period__period__period']
 
 
-class PersonalNoteFilter(SchoolRelated):
+class PersonalNoteFilter(models.Model):
     """ A filter definition that can generate statistics on personal note texts. """
 
     identifier = models.CharField(verbose_name=_('Identifier'), max_length=30,
-                                  validators=[isidentifier])
-    description = models.CharField(verbose_name=_('Description'), max_length=60, blank=True)
+                                  validators=[isidentifier], unique=True)
+    description = models.CharField(verbose_name=_('Description'), max_length=60,
+                                   blank=True, unique=True)
 
-    regex = models.CharField(verbose_name=_('Match expression'), max_length=100)
+    regex = models.CharField(verbose_name=_('Match expression'), max_length=100,
+                             unique=True)
 
     class Meta:
-        unique_together = [['school', 'identifier'], ['school', 'description'], ['school', 'regex']]
         ordering = ['identifier']
diff --git a/biscuit/apps/alsijil/templates/alsijil/print/full_register.html b/biscuit/apps/alsijil/templates/alsijil/print/full_register.html
index a08df051c..9a8daa204 100644
--- a/biscuit/apps/alsijil/templates/alsijil/print/full_register.html
+++ b/biscuit/apps/alsijil/templates/alsijil/print/full_register.html
@@ -17,7 +17,7 @@
     <section class="sheet padding-10mm bigprint" id="titlepage">
       <div>
         <h1>{% trans 'Class register' %}</h1>
-        <img src="{% cropped_thumbnail group.school 'logo_cropping' max_size='600x600' %}" id="school-logo" />
+        <img src="{% cropped_thumbnail school 'logo_cropping' max_size='600x600' %}" id="school-logo" />
         <p id="group-desc">
           {{ group.name }}
         </p>
diff --git a/biscuit/apps/alsijil/views.py b/biscuit/apps/alsijil/views.py
index 44c9ed95a..10cd8641f 100644
--- a/biscuit/apps/alsijil/views.py
+++ b/biscuit/apps/alsijil/views.py
@@ -13,7 +13,7 @@ from django_tables2 import RequestConfig
 
 from biscuit.apps.chronos.models import LessonPeriod
 from biscuit.apps.chronos.util import CalendarWeek
-from biscuit.core.models import Group, Person
+from biscuit.core.models import Group, Person, School
 from biscuit.core.decorators import admin_required
 from biscuit.core.util import messages
 
@@ -176,7 +176,7 @@ def full_register_group(request: HttpRequest, id_: int) -> HttpResponse:
         'documentations', 'personal_notes'
     )
 
-    weeks = CalendarWeek.weeks_within(group.school.current_term.date_start, group.school.current_term.date_end)
+    weeks = CalendarWeek.weeks_within(School.objects.first().current_term.date_start, School.objects.first().current_term.date_end)
     periods_by_day = {}
     for lesson_period in lesson_periods:
         for week in weeks:
@@ -216,6 +216,7 @@ def full_register_group(request: HttpRequest, id_: int) -> HttpResponse:
     context['weeks'] = weeks
     context['periods_by_day'] = periods_by_day
     context['today'] = date.today()
+    context['school'] School.objects.first()
 
     return render(request, 'alsijil/print/full_register.html', context)
 
-- 
GitLab