diff --git a/aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html b/aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html index 13e781bfb24e3dab3184aa0145dadde7dffd3987..94b8b8118d77afe98d53283b8375509a86d2c986 100644 --- a/aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html +++ b/aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html @@ -14,8 +14,8 @@ <div class="row no-margin"> <div class="col s12 no-padding"> {# Back to week view #} - {% if lesson_documentation %} - <a href="{% url "week_view_by_week" lesson_documentation.calendar_week.year lesson_documentation.calendar_week.week "group" register_object.get_groups.all.0.pk %}" + {% if back_to_week_url %} + <a href="{{ back_to_week_url }}" class="btn primary-color waves-light waves-effect alsijil-top-button"> <i class="material-icons left">chevron_left</i> {% trans "Back to week view" %} </a> 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 8c83accaf9b7cfc9e07a2b05c16961d3f959fd75..fa44199cb8609c753d38c01eebbfca9962639ed9 100644 --- a/aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html +++ b/aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html @@ -120,7 +120,7 @@ </td> <td class="tr-link"> <a class="tr-link" - href="{{ register_object.alsijil_url }}"> + href="{{ register_object.alsijil_url }}?back={{ back_url }}"> {% if register_object.period %} {{ register_object.period.period }}. {% else %} @@ -131,7 +131,7 @@ {% if not group %} <td> <a class="tr-link" - href="{{ register_object.alsijil_url }}"> + href="{{ register_object.alsijil_url }}?back={{ back_url }}"> {% if register_object.lesson %} {{ register_object.lesson.group_names }} {% else %} @@ -142,7 +142,7 @@ {% endif %} <td> <a class="tr-link" - href="{{ register_object.alsijil_url }}"> + href="{{ register_object.alsijil_url }}?back={{ back_url }}"> {% if register_object.get_subject %} {{ register_object.get_subject.name }} {% elif register_object.subject %} @@ -154,25 +154,25 @@ </td> <td> <a class="tr-link" - href="{{ register_object.alsijil_url }}"> + href="{{ register_object.alsijil_url }}?back={{ back_url }}"> {{ register_object.teacher_names }} </a> </td> <td> <a class="tr-link" - href="{{ register_object.alsijil_url }}"> + href="{{ register_object.alsijil_url }}?back={{ back_url }}"> {% firstof register_object.get_lesson_documentation.topic "–" %} </a> </td> <td> <a class="tr-link" - href="{{ register_object.alsijil_url }}"> + href="{{ register_object.alsijil_url }}?back={{ back_url }}"> {% firstof register_object.get_lesson_documentation.homework "–" %} </a> </td> <td> <a class="tr-link" - href="{{ register_object.alsijil_url }}"> + href="{{ register_object.alsijil_url }}?back={{ back_url }}"> {% firstof register_object.get_lesson_documentation.group_note "–" %} </a> </td> @@ -195,7 +195,7 @@ {% has_perm "alsijil.view_lessondocumentation" user register_object as can_view_lesson_documentation %} {% if can_view_lesson_documentation %} <a class="collection-item avatar" - href="{{ register_object.alsijil_url }}"> + href="{{ register_object.alsijil_url }}?back={{ back_url }}"> {% include "alsijil/partials/lesson_status_icon.html" with register_object=register_object css_class="materialize-circle" color_suffix=" " %} <table class="hide-on-med-and-down"> <tr> @@ -278,7 +278,7 @@ </li> {% endif %} <li class="collection-item"> - {{ register_object.teacher_names }} + {{ register_object.teacher_names }} </li> <li class="collection-item"> {{ register_object.get_lesson_documentation.topic }} diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py index baa5ae24613d482dc975b7d99d111be6a3eda359..ebcea7fde528fd04ba78f34d2cf9f78eb9eed058 100644 --- a/aleksis/apps/alsijil/views.py +++ b/aleksis/apps/alsijil/views.py @@ -12,6 +12,7 @@ from django.shortcuts import get_object_or_404, redirect, render from django.urls import reverse, reverse_lazy from django.utils import timezone from django.utils.decorators import method_decorator +from django.utils.http import url_has_allowed_host_and_scheme from django.utils.translation import ugettext as _ from django.views import View from django.views.decorators.cache import never_cache @@ -274,6 +275,22 @@ def register_object( None, queryset=persons_qs, prefix="personal_notes" ) + back_url = request.GET.get("back", "") + back_url_is_safe = url_has_allowed_host_and_scheme( + url=back_url, allowed_hosts={request.get_host()}, require_https=request.is_secure(), + ) + if back_url_is_safe: + context["back_to_week_url"] = back_url + else: + context["back_to_week_url"] = reverse( + "week_view_by_week", + args=[ + lesson_documentation.calendar_week.year, + lesson_documentation.calendar_week.week, + "group", + register_object.get_groups().all()[0].pk, + ], + ) context["lesson_documentation"] = lesson_documentation context["lesson_documentation_form"] = lesson_documentation_form context["personal_note_formset"] = personal_note_formset