diff --git a/core/urls.py b/core/urls.py index 0dccdc2e..64930df4 100644 --- a/core/urls.py +++ b/core/urls.py @@ -84,6 +84,7 @@ from core.views import ( notification, send_file, ) +from timetable.views import UserTimetableView register_converter(FourDigitYearConverter, "yyyy") register_converter(TwoDigitMonthConverter, "mm") @@ -184,6 +185,11 @@ urlpatterns = [ name="user_account_detail", ), path("user//stats/", UserStatsView.as_view(), name="user_stats"), + path( + "user//edt/", + UserTimetableView.as_view(), + name="user_timetable", + ), path( "user//gift/create/", GiftCreateView.as_view(), diff --git a/timetable/templates/timetable/user_timetable.jinja b/timetable/templates/timetable/user_timetable.jinja new file mode 100644 index 00000000..870291a4 --- /dev/null +++ b/timetable/templates/timetable/user_timetable.jinja @@ -0,0 +1,52 @@ +{% extends "core/base.jinja" %} + +{% from "timetable/macros.jinja" import display_timetable %} + + +{%- block additional_css -%} + +{%- endblock -%} + +{%- block additional_js -%} + +{%- endblock -%} + +{% block content %} + {% for timetable in timetables %} +
+ {{ timetable.semester }} +
+ {{ display_timetable(timetable.semester) }} +
+
+ {% endfor %} +{% endblock %} + +{%- block script -%} + {% set weekdays = ["lundi","mardi","mercredi","jeudi","vendredi","samedi","dimanche"] %} + +{%- endblock -%} \ No newline at end of file diff --git a/timetable/urls.py b/timetable/urls.py index e079490c..6c9aadb7 100644 --- a/timetable/urls.py +++ b/timetable/urls.py @@ -1,5 +1,8 @@ from django.urls import path -from timetable.views import GeneratorView +from timetable.views import GeneratorView, UserTimetableView -urlpatterns = [path("", GeneratorView.as_view(), name="generator")] +urlpatterns = [ + path("", GeneratorView.as_view(), name="generator"), + path("user/", UserTimetableView.as_view(), name="user_timetable"), +] diff --git a/timetable/views.py b/timetable/views.py index 549851b8..fdd4d467 100644 --- a/timetable/views.py +++ b/timetable/views.py @@ -1,6 +1,25 @@ -# Create your views here. +from django.contrib.auth.mixins import UserPassesTestMixin from django.views.generic import TemplateView +from django.views.generic.detail import DetailView + +from core.models import User class GeneratorView(TemplateView): template_name = "timetable/generator.jinja" + + +class UserTimetableView(UserPassesTestMixin, DetailView): + model = User + pk_url_kwarg = "user_id" + template_name = "timetable/user_timetable.jinja" + + 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")) + }