diff --git a/aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html b/aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html index e23e103fca8d7496e7faec521a05645b3b098764..d0761f8102f60e1ea899a8b1ba1d11c1e2402535 100644 --- a/aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html +++ b/aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html @@ -11,6 +11,9 @@ {% endblock %} {% block content %} + <script type="text/javascript" src="{% static "js/helper.js" %}"></script> + {{ week_select|json_script:"week_select" }} + <script type="text/javascript" src="{% static "js/chronos/week_select.js" %}"></script> <div class="row"> {% if group %} <div class="col s12 m2 push-m10 l1 push-l11"> @@ -30,7 +33,11 @@ </div> </div> - <h4>{% blocktrans with el=el week=week.week %}CW {{ week }}: {{ instance }}{% endblocktrans %} </h4> + + <div class="row"> + <h4 class="col s12 m6">{% blocktrans with el=el week=week.week %}CW {{ week }}: {{ instance }}{% endblocktrans %} </h4> + {% include "chronos/partials/week_select.html" with wanted_week=week %} + </div> {% if lesson_periods %} <div class="row"> diff --git a/aleksis/apps/alsijil/urls.py b/aleksis/apps/alsijil/urls.py index 3f68362598ec4c8e624f0d5df42e3d028de7ceb9..7e7139c6c26fe7aa600b6b311b55ae731389c13b 100644 --- a/aleksis/apps/alsijil/urls.py +++ b/aleksis/apps/alsijil/urls.py @@ -9,9 +9,15 @@ urlpatterns = [ views.lesson, name="lesson_by_week_and_period", ), - path("week", views.week_view, name="week_view"), - path("week/<int:year>/<int:week>", views.week_view, name="week_view_by_week"), + path("week/", views.week_view, name="week_view"), + path("week/<int:year>/<int:week>/", views.week_view, name="week_view_by_week"), + path("week/year/cw/", views.week_view, name="week_view_placeholders"), path("week/<str:type_>/<int:id_>/", views.week_view, name="week_view"), + path( + "week/year/cw/<str:type_>/<int:id_>/", + views.week_view, + name="week_view_placeholders", + ), path( "week/<int:year>/<int:week>/<str:type_>/<int:id_>/", views.week_view, diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py index c5213e5f23aeade67cc70c7dde5471eb32b21696..9c90ede28c1db9d34a2e7f1bff53e89cb53e3757 100644 --- a/aleksis/apps/alsijil/views.py +++ b/aleksis/apps/alsijil/views.py @@ -2,21 +2,21 @@ from datetime import date, datetime, timedelta from typing import Optional from django.core.exceptions import PermissionDenied -from django.db.models import Count, Exists, F, OuterRef, Q, Subquery, Sum +from django.db.models import Count, Exists, OuterRef, Q, Subquery, Sum from django.http import Http404, HttpRequest, HttpResponse, HttpResponseNotFound from django.shortcuts import get_object_or_404, redirect, render from django.urls import reverse, reverse_lazy from django.utils.translation import ugettext as _ from calendarweek import CalendarWeek -from django_tables2 import RequestConfig, SingleTableView +from django_tables2 import SingleTableView from reversion.views import RevisionMixin from rules.contrib.views import PermissionRequiredMixin from aleksis.apps.chronos.managers import TimetableType -from aleksis.apps.chronos.models import LessonPeriod, LessonSubstitution +from aleksis.apps.chronos.models import LessonPeriod from aleksis.apps.chronos.util.chronos_helpers import get_el_by_pk -from aleksis.apps.chronos.util.date import week_weekday_to_date +from aleksis.apps.chronos.util.date import get_weeks_for_year, week_weekday_to_date from aleksis.core.mixins import AdvancedCreateView, AdvancedDeleteView, AdvancedEditView from aleksis.core.models import Group, Person, SchoolTerm from aleksis.core.util import messages @@ -296,6 +296,7 @@ def week_view( context["extra_marks"] = ExtraMark.objects.all() context["week"] = wanted_week + context["weeks"] = get_weeks_for_year(year=wanted_week.year) context["lesson_periods"] = lesson_periods context["persons"] = persons context["group"] = group @@ -304,14 +305,21 @@ def week_view( week_prev = wanted_week - 1 week_next = wanted_week + 1 - context["url_prev"] = "%s?%s" % ( - reverse("week_view_by_week", args=[week_prev.year, week_prev.week]), - request.GET.urlencode(), - ) - context["url_next"] = "%s?%s" % ( - reverse("week_view_by_week", args=[week_next.year, week_next.week]), - request.GET.urlencode(), - ) + args_prev = [week_prev.year, week_prev.week] + args_next = [week_next.year, week_next.week] + args_dest = [] + if type_ and id_: + args_prev += [type_.value, id_] + args_next += [type_.value, id_] + args_dest += [type_.value, id_] + + context["week_select"] = { + "year": wanted_week.year, + "dest": reverse("week_view_placeholders", args=args_dest), + } + + context["url_prev"] = reverse("week_view_by_week", args=args_prev) + context["url_next"] = reverse("week_view_by_week", args=args_next) return render(request, "alsijil/class_register/week_view.html", context)