Skip to content
Snippets Groups Projects
models.py 32 KiB
Newer Older
Tom Teichler's avatar
Tom Teichler committed
    class Meta:
Tom Teichler's avatar
Tom Teichler committed
        ordering = ["date_start"]
Jonathan Weth's avatar
Jonathan Weth committed
        indexes = [
            models.Index(fields=["period_from", "period_to", "date_start", "date_end"])
        ]
Tom Teichler's avatar
Tom Teichler committed
        verbose_name = _("Event")
Jonathan Weth's avatar
Jonathan Weth committed
        verbose_name_plural = _("Events")
class ExtraLesson(
    SchoolTermRelatedExtensibleModel, GroupPropertiesMixin, WeekRelatedMixin
):
    label_ = "extra_lesson"

    objects = ExtraLessonManager.from_queryset(ExtraLessonQuerySet)()
Jonathan Weth's avatar
Jonathan Weth committed
    week = models.IntegerField(
        verbose_name=_("Week"), default=CalendarWeek.current_week
    )
    year = models.IntegerField(verbose_name=_("Year"), default=get_current_year)
Tom Teichler's avatar
Tom Teichler committed
    period = models.ForeignKey(
Jonathan Weth's avatar
Jonathan Weth committed
        "TimePeriod",
        models.CASCADE,
        related_name="extra_lessons",
        verbose_name=_("Time period"),
Tom Teichler's avatar
Tom Teichler committed
    )
Tom Teichler's avatar
Tom Teichler committed
    subject = models.ForeignKey(
        "Subject",
        on_delete=models.CASCADE,
        related_name="extra_lessons",
        verbose_name=_("Subject"),
    )
    groups = models.ManyToManyField(
        "core.Group", related_name="extra_lessons", verbose_name=_("Groups")
    )
    teachers = models.ManyToManyField(
Jonathan Weth's avatar
Jonathan Weth committed
        "core.Person",
        related_name="extra_lessons_as_teacher",
        verbose_name=_("Teachers"),
Tom Teichler's avatar
Tom Teichler committed
    )
    room = models.ForeignKey(
Jonathan Weth's avatar
Jonathan Weth committed
        "Room",
        models.CASCADE,
        null=True,
        related_name="extra_lessons",
        verbose_name=_("Room"),
Tom Teichler's avatar
Tom Teichler committed
    )
Jonathan Weth's avatar
Jonathan Weth committed
    comment = models.CharField(
        verbose_name=_("Comment"), blank=True, null=True, max_length=255
    )

    def __str__(self):
        return f"{self.week}, {self.period}, {self.subject}"

    class Meta:
        verbose_name = _("Extra lesson")
        verbose_name_plural = _("Extra lessons")
class ChronosGlobalPermissions(ExtensibleModel):
    class Meta:
        managed = False
        permissions = (
            ("view_all_timetables", _("Can view all timetables")),
            ("view_timetable_overview", _("Can view timetable overview")),
            ("view_lessons_day", _("Can view all lessons per day")),
        )