diff --git a/biscuit/apps/chronos/models.py b/biscuit/apps/chronos/models.py index 8ca7eca3fab827fb080917142e71ce53e0a77b7d..f3594aaf6fcbd051a517aa4c47d642b6521c0022 100644 --- a/biscuit/apps/chronos/models.py +++ b/biscuit/apps/chronos/models.py @@ -10,7 +10,7 @@ from django.db.models import Q from django.http.request import QueryDict from django.utils.translation import ugettext_lazy as _ -from biscuit.core.mixins import ExtensibleModel, SchoolRelated +from biscuit.core.mixins import ExtensibleModel from biscuit.core.models import Group, Person from .util import CalendarWeek, week_weekday_from_date @@ -140,7 +140,7 @@ class LessonPeriodQuerySet(models.QuerySet): return self.filter_room(int(query_data['room'])) -class TimePeriod(SchoolRelated): +class TimePeriod(models.Model): WEEKDAY_CHOICES = [ (0, _('Sunday')), (1, _('Monday')), @@ -185,16 +185,16 @@ class TimePeriod(SchoolRelated): return wanted_week[self.weekday-1] class Meta: - unique_together = [['school', 'weekday', 'period']] + unique_together = [['weekday', 'period']] ordering = ['weekday', 'period'] indexes = [models.Index(fields=['time_start', 'time_end'])] -class Subject(SchoolRelated): +class Subject(models.Model): abbrev = models.CharField(verbose_name=_( - 'Abbreviation of subject in timetable'), max_length=10) + 'Abbreviation of subject in timetable'), max_length=10, unique=True) name = models.CharField(verbose_name=_( - 'Long name of subject'), max_length=30) + 'Long name of subject'), max_length=30, unique=True) colour_fg = models.CharField(verbose_name=_('Foreground colour in timetable'), blank=True, validators=[ validators.RegexValidator(r'#[0-9A-F]{6}')], max_length=7) @@ -206,12 +206,11 @@ class Subject(SchoolRelated): class Meta: ordering = ['name', 'abbrev'] - unique_together = [['school', 'abbrev'], ['school', 'name']] -class Room(SchoolRelated): +class Room(models.Model): short_name = models.CharField(verbose_name=_( - 'Short name, e.g. room number'), max_length=10) + 'Short name, e.g. room number'), max_length=10, unique=True) name = models.CharField(verbose_name=_('Long name'), max_length=30) @@ -220,10 +219,9 @@ class Room(SchoolRelated): class Meta: ordering = ['name', 'short_name'] - unique_together = [['school', 'short_name']] -class Lesson(SchoolRelated): +class Lesson(models.Model): subject = models.ForeignKey( 'Subject', on_delete=models.CASCADE, related_name='lessons') teachers = models.ManyToManyField('core.Person', related_name='lessons_as_teacher') @@ -256,7 +254,7 @@ class Lesson(SchoolRelated): indexes = [models.Index(fields=['date_start', 'date_end'])] -class LessonSubstitution(SchoolRelated): +class LessonSubstitution(models.Model): week = models.IntegerField(verbose_name=_('Week'), default=CalendarWeek.current_week) @@ -277,7 +275,7 @@ class LessonSubstitution(SchoolRelated): raise ValidationError(_('Lessons can only be either substituted or cancelled.')) 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'] constraints = [ @@ -288,7 +286,7 @@ class LessonSubstitution(SchoolRelated): ] -class LessonPeriod(SchoolRelated, ExtensibleModel): +class LessonPeriod(models.Model, ExtensibleModel): objects = LessonPeriodManager.from_queryset(LessonPeriodQuerySet)() lesson = models.ForeignKey('Lesson', models.CASCADE, related_name='lesson_periods')