-
Jonathan Weth authoredJonathan Weth authored
tables.py 1.44 KiB
from __future__ import annotations
from typing import Optional
from django.utils.translation import gettext_lazy as _
import django_tables2 as tables
from django_tables2.utils import A
from .models import LessonPeriod
def _css_class_from_lesson_state(
record: Optional[LessonPeriod] = None, table: Optional[LessonsTable] = None
) -> str:
"""Return CSS class depending on lesson state."""
if record.get_substitution(record._week):
if record.get_substitution(record._week).cancelled:
return "success"
else:
return "warning"
else:
return ""
class LessonsTable(tables.Table):
"""Table for daily lessons and management of substitutions."""
class Meta:
attrs = {"class": "highlight"}
row_attrs = {"class": _css_class_from_lesson_state}
period__period = tables.Column(accessor="period__period")
lesson__groups = tables.Column(
accessor="lesson__group_names", verbose_name=_("Groups")
)
lesson__teachers = tables.Column(
accessor="lesson__teacher_names", verbose_name=_("Teachers")
)
lesson__subject = tables.Column(accessor="lesson__subject")
room = tables.Column(accessor="room")
edit_substitution = tables.LinkColumn(
"edit_substitution",
args=[A("id"), A("_week")],
text=_("Substitution"),
attrs={"a": {"class": "btn-flat waves-effect waves-orange"}},
verbose_name=_("Manage substitution"),
)