Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 17 additions & 5 deletions survey/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from django.core.files.uploadhandler import UploadFileException
from django.http import HttpRequest, HttpResponse, HttpResponseNotAllowed
from django.shortcuts import get_object_or_404, redirect, render
from django.utils.http import url_has_allowed_host_and_scheme
from django.template.context_processors import csrf
from django.urls import reverse, reverse_lazy
from django.views import View
Expand Down Expand Up @@ -417,15 +418,26 @@ def post(self, request: HttpRequest, pk: int, section_id: int):
request.user, survey, improve_section, data
)

return redirect(
request.META.get(
"HTTP_REFERER",
referer_url = request.META.get(
"HTTP_REFERER",
reverse_lazy(
"survey_improvement_plan",
kwargs={"pk": survey.pk, "section_id": improve_section.section_id},
),
)
# Only allow redirecting to safe URLs
if url_has_allowed_host_and_scheme(
referer_url,
allowed_hosts={request.get_host()},
):
return redirect(referer_url)
else:
return redirect(
reverse_lazy(
"survey_improvement_plan",
kwargs={"pk": survey.pk, "section_id": improve_section.section_id},
),
)
)
)


class SurveyReportView(LoginRequiredMixin, View):
Expand Down
Loading