mirror of
https://github.com/ae-utbm/sith.git
synced 2026-10-10 12:50:29 +00:00
55 lines
1.7 KiB
Python
55 lines
1.7 KiB
Python
from django.contrib.auth.mixins import UserPassesTestMixin
|
|
from django.urls import reverse
|
|
from django.utils.translation import gettext_lazy as _
|
|
from django.views.generic import TemplateView
|
|
from django.views.generic.detail import DetailView
|
|
|
|
from core.models import User
|
|
from core.views import TabedViewMixin
|
|
|
|
|
|
class TimetableTabsMixin(TabedViewMixin):
|
|
tabs_title = _("Timetables")
|
|
|
|
def get_list_of_tabs(self):
|
|
res = [
|
|
{
|
|
"url": reverse("timetable:generator"),
|
|
"slug": "generator",
|
|
"name": _("Generator"),
|
|
}
|
|
]
|
|
if self.request.user.timetables.exists():
|
|
res.append(
|
|
{
|
|
"url": reverse(
|
|
"core:user_timetable", kwargs={"user_id": self.request.user.id}
|
|
),
|
|
"slug": "saved",
|
|
"name": _("My timetables"),
|
|
}
|
|
)
|
|
return res
|
|
|
|
|
|
class GeneratorView(TimetableTabsMixin, TemplateView):
|
|
template_name = "timetable/generator.jinja"
|
|
current_tab = "generator"
|
|
|
|
|
|
class UserTimetableView(UserPassesTestMixin, TimetableTabsMixin, DetailView):
|
|
model = User
|
|
pk_url_kwarg = "user_id"
|
|
template_name = "timetable/user_timetable.jinja"
|
|
current_tab = "saved"
|
|
|
|
def test_func(self) -> bool | None:
|
|
return self.request.user.id == self.kwargs[
|
|
"user_id"
|
|
] or self.request.user.has_perm("timetable.view_timetable")
|
|
|
|
def get_context_data(self, **kwargs):
|
|
return super().get_context_data(**kwargs) | {
|
|
"timetables": list(self.object.timetables.prefetch_related("slots"))
|
|
}
|