Newer
Older
from django.utils.translation import gettext_lazy as _
def isidentifier(value: str) -> bool:
return value.isidentifier()
""" 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.
"""
person = models.ForeignKey("core.Person", models.CASCADE, related_name="personal_notes")
week = models.IntegerField()
lesson_period = models.ForeignKey(
"chronos.LessonPeriod", models.CASCADE, related_name="personal_notes"
)
absent = models.BooleanField(default=False)
late = models.IntegerField(default=0)
excused = models.BooleanField(default=False)
remarks = models.CharField(max_length=200, blank=True)
class Meta:
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",
]
""" A documentation on a single lesson period. Non-personal, includes
the topic and homework of the lesson.
"""
week = models.IntegerField()
"chronos.LessonPeriod", models.CASCADE, related_name="documentations"
)
topic = models.CharField(verbose_name=_("Lesson topic"), max_length=200, blank=True)
homework = models.CharField(verbose_name=_("Homework"), max_length=200, blank=True)
unique_together = [["lesson_period", "week"]]
ordering = [
"lesson_period__lesson__date_start",
"week",
"lesson_period__period__weekday",
"lesson_period__period__period",
]
""" A filter definition that can generate statistics on personal note texts. """
verbose_name=_("Identifier"), max_length=30, 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, unique=True)