From ba83993abf2aeeb778723e33a0f83a22129a11fa Mon Sep 17 00:00:00 2001 From: mpeltriaux Date: Fri, 16 Feb 2024 10:13:43 +0100 Subject: [PATCH] # 382 - Redirect as 404 * extends 404 template (user should check the URL) * introduces new decorator "uuid_required" which performs a check on a given 'uuid' or 'id' parameter * throws a Http404 exception --> redirect to 404 template instead of 500 error template --- .../views/compensation/compensation.py | 4 +- compensation/views/eco_account/eco_account.py | 4 +- ema/views/ema.py | 4 +- intervention/views/intervention.py | 4 +- intervention/views/report.py | 2 + konova/decorators.py | 19 ++++++ locale/de/LC_MESSAGES/django.mo | Bin 45363 -> 45500 bytes locale/de/LC_MESSAGES/django.po | 54 +++++++++--------- templates/404.html | 1 + 9 files changed, 62 insertions(+), 30 deletions(-) diff --git a/compensation/views/compensation/compensation.py b/compensation/views/compensation/compensation.py index 1a091b0..276b8eb 100644 --- a/compensation/views/compensation/compensation.py +++ b/compensation/views/compensation/compensation.py @@ -19,7 +19,8 @@ from compensation.models import Compensation from compensation.tables.compensation import CompensationTable from intervention.models import Intervention from konova.contexts import BaseContext -from konova.decorators import shared_access_required, default_group_required, any_group_check, login_required_modal +from konova.decorators import shared_access_required, default_group_required, any_group_check, login_required_modal, \ + uuid_required from konova.forms import SimpleGeomForm from konova.forms.modals import RemoveModalForm from konova.settings import DEFAULT_GROUP, ZB_GROUP, ETS_GROUP @@ -200,6 +201,7 @@ def edit_view(request: HttpRequest, id: str): @login_required @any_group_check +@uuid_required def detail_view(request: HttpRequest, id: str): """ Renders a detail view for a compensation diff --git a/compensation/views/eco_account/eco_account.py b/compensation/views/eco_account/eco_account.py index 6798b64..b20cf64 100644 --- a/compensation/views/eco_account/eco_account.py +++ b/compensation/views/eco_account/eco_account.py @@ -17,7 +17,8 @@ from compensation.forms.eco_account import EditEcoAccountForm, NewEcoAccountForm from compensation.models import EcoAccount from compensation.tables.eco_account import EcoAccountTable from konova.contexts import BaseContext -from konova.decorators import shared_access_required, default_group_required, any_group_check, login_required_modal +from konova.decorators import shared_access_required, default_group_required, any_group_check, login_required_modal, \ + uuid_required from konova.forms import SimpleGeomForm from konova.settings import ETS_GROUP, DEFAULT_GROUP, ZB_GROUP from konova.sub_settings.context_settings import TAB_TITLE_IDENTIFIER @@ -177,6 +178,7 @@ def edit_view(request: HttpRequest, id: str): @login_required @any_group_check +@uuid_required def detail_view(request: HttpRequest, id: str): """ Renders a detail view for a compensation diff --git a/ema/views/ema.py b/ema/views/ema.py index 2a969fc..67fbde5 100644 --- a/ema/views/ema.py +++ b/ema/views/ema.py @@ -17,7 +17,8 @@ from ema.forms import NewEmaForm, EditEmaForm from ema.models import Ema from ema.tables import EmaTable from konova.contexts import BaseContext -from konova.decorators import shared_access_required, conservation_office_group_required, login_required_modal +from konova.decorators import shared_access_required, conservation_office_group_required, login_required_modal, \ + uuid_required from konova.forms import SimpleGeomForm from konova.forms.modals import RemoveModalForm from konova.settings import DEFAULT_GROUP, ZB_GROUP, ETS_GROUP @@ -124,6 +125,7 @@ def new_id_view(request: HttpRequest): @login_required +@uuid_required def detail_view(request: HttpRequest, id: str): """ Renders the detail view of an EMA diff --git a/intervention/views/intervention.py b/intervention/views/intervention.py index 3371167..f40498d 100644 --- a/intervention/views/intervention.py +++ b/intervention/views/intervention.py @@ -16,7 +16,8 @@ from intervention.forms.intervention import EditInterventionForm, NewInterventio from intervention.models import Intervention from intervention.tables import InterventionTable from konova.contexts import BaseContext -from konova.decorators import default_group_required, shared_access_required, any_group_check, login_required_modal +from konova.decorators import default_group_required, shared_access_required, any_group_check, login_required_modal, \ + uuid_required from konova.forms import SimpleGeomForm from konova.forms.modals import RemoveModalForm from konova.settings import DEFAULT_GROUP, ZB_GROUP, ETS_GROUP @@ -128,6 +129,7 @@ def new_id_view(request: HttpRequest): @login_required @any_group_check +@uuid_required def detail_view(request: HttpRequest, id: str): """ Renders a detail view for viewing an intervention's data diff --git a/intervention/views/report.py b/intervention/views/report.py index 3773495..6bdd825 100644 --- a/intervention/views/report.py +++ b/intervention/views/report.py @@ -12,11 +12,13 @@ from django.utils.translation import gettext_lazy as _ from intervention.models import Intervention from konova.contexts import BaseContext +from konova.decorators import uuid_required from konova.forms import SimpleGeomForm from konova.sub_settings.context_settings import TAB_TITLE_IDENTIFIER from konova.utils.generators import generate_qr_code +@uuid_required def report_view(request: HttpRequest, id: str): """ Renders the public report view diff --git a/konova/decorators.py b/konova/decorators.py index 47df9b2..e10328d 100644 --- a/konova/decorators.py +++ b/konova/decorators.py @@ -7,9 +7,11 @@ Created on: 16.11.20 """ from functools import wraps +from uuid import UUID from bootstrap_modal_forms.mixins import is_ajax from django.contrib import messages +from django.http import Http404 from django.shortcuts import redirect, get_object_or_404, render from django.urls import reverse from django.utils.translation import gettext_lazy as _ @@ -171,3 +173,20 @@ def login_required_modal(function): return render(request, template, context) return function(request, *args, **kwargs) return wrap + + +def uuid_required(function): + """ + Checks whether the given input is a valid UUID + """ + @wraps(function) + def wrap(request, *args, **kwargs): + uuid = kwargs.get("uuid", None) or kwargs.get("id", None) + try: + uuid = UUID(uuid) + except ValueError: + raise Http404( + "Invalid UUID" + ) + return function(request, *args, **kwargs) + return wrap diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo index 1db23bbc18df338c482d750c6dbcfbc6c146d82e..16e986185f16e57b02d653f05a10f1b91cd24c8b 100644 GIT binary patch delta 11238 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 delta 11093 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 diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po index cd34fbe..11b4622 100644 --- a/locale/de/LC_MESSAGES/django.po +++ b/locale/de/LC_MESSAGES/django.po @@ -29,7 +29,7 @@ #: konova/filters/mixins/office.py:25 konova/filters/mixins/office.py:56 #: konova/filters/mixins/office.py:57 konova/filters/mixins/record.py:23 #: konova/filters/mixins/self_created.py:24 konova/filters/mixins/share.py:23 -#: konova/forms/geometry_form.py:33 konova/forms/modals/document_form.py:26 +#: konova/forms/geometry_form.py:32 konova/forms/modals/document_form.py:26 #: konova/forms/modals/document_form.py:36 #: konova/forms/modals/document_form.py:50 #: konova/forms/modals/document_form.py:62 @@ -43,7 +43,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-09 09:46+0100\n" +"POT-Creation-Date: 2024-02-16 09:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -188,7 +188,7 @@ msgstr "Einzelflächen" #: analysis/templates/analysis/reports/includes/intervention/laws.html:20 #: compensation/tables/compensation.py:38 #: compensation/templates/compensation/detail/compensation/view.html:74 -#: intervention/tables.py:38 +#: intervention/tables.py:43 #: intervention/templates/intervention/detail/view.html:68 #: user/models/user_action.py:21 msgid "Checked" @@ -207,7 +207,7 @@ msgstr "Geprüft" #: compensation/templates/compensation/detail/eco_account/includes/deductions.html:31 #: compensation/templates/compensation/detail/eco_account/view.html:45 #: ema/tables.py:41 ema/templates/ema/detail/view.html:35 -#: intervention/tables.py:44 +#: intervention/tables.py:49 #: intervention/templates/intervention/detail/view.html:87 #: user/models/user_action.py:22 msgid "Recorded" @@ -273,7 +273,7 @@ msgid "Surface" msgstr "Fläche" #: analysis/templates/analysis/reports/includes/intervention/card_intervention.html:10 -#: intervention/tables.py:65 +#: intervention/tables.py:70 msgid "Interventions" msgstr "Eingriffe" @@ -333,7 +333,7 @@ msgstr "Typ" #: analysis/templates/analysis/reports/includes/old_data/amount.html:24 #: compensation/tables/compensation.py:87 #: intervention/forms/modals/deduction.py:58 -#: intervention/forms/modals/deduction.py:65 intervention/tables.py:87 +#: intervention/forms/modals/deduction.py:65 intervention/tables.py:92 #: intervention/templates/intervention/detail/view.html:19 #: konova/templates/konova/includes/quickstart/interventions.html:4 #: templates/email/other/deduction_changed.html:27 @@ -494,7 +494,7 @@ msgstr "" "{}n² wurden bereits von diesem Ökokonto abgebucht. Der eingegebene Wert von " "{} wäre daher zu klein." -#: compensation/forms/eco_account.py:249 +#: compensation/forms/eco_account.py:247 msgid "The account can not be removed, since there are still deductions." msgstr "" "Das Ökokonto kann nicht entfernt werden, da hierzu noch Abbuchungen " @@ -781,17 +781,17 @@ msgid "Parcel gmrkng" msgstr "Gemarkung" #: compensation/tables/compensation.py:50 compensation/tables/eco_account.py:55 -#: ema/tables.py:47 intervention/tables.py:50 +#: ema/tables.py:47 intervention/tables.py:55 msgid "Editable" msgstr "Freigegeben" #: compensation/tables/compensation.py:56 compensation/tables/eco_account.py:61 -#: ema/tables.py:53 intervention/tables.py:56 +#: ema/tables.py:53 intervention/tables.py:61 msgid "Last edit" msgstr "Zuletzt bearbeitet" #: compensation/tables/compensation.py:87 compensation/tables/eco_account.py:93 -#: ema/tables.py:86 intervention/tables.py:87 +#: ema/tables.py:86 intervention/tables.py:92 msgid "Open {}" msgstr "Öffne {}" @@ -800,14 +800,14 @@ msgstr "Öffne {}" #: compensation/templates/compensation/detail/eco_account/includes/deductions.html:58 #: compensation/templates/compensation/detail/eco_account/view.html:48 #: ema/tables.py:105 ema/templates/ema/detail/view.html:38 -#: intervention/tables.py:139 +#: intervention/tables.py:144 #: intervention/templates/intervention/detail/view.html:90 msgid "Not recorded yet" msgstr "Noch nicht verzeichnet" #: compensation/tables/compensation.py:144 #: compensation/tables/eco_account.py:133 ema/tables.py:108 -#: intervention/tables.py:142 +#: intervention/tables.py:147 msgid "Recorded on {} by {}" msgstr "Am {} von {} verzeichnet worden" @@ -1304,7 +1304,7 @@ msgstr "Bearbeite {}" #: compensation/views/compensation/report.py:34 #: compensation/views/eco_account/report.py:34 ema/views/report.py:34 -#: intervention/views/report.py:33 +#: intervention/views/report.py:37 msgid "Report {}" msgstr "Bericht {}" @@ -1451,10 +1451,8 @@ msgstr "Prüfung vornehmen" #: intervention/forms/modals/check.py:36 konova/forms/modals/record_form.py:30 #: konova/tests/unit/test_forms.py:155 -msgid "" -"The necessary control steps have been performed:" -msgstr "" -"Die notwendigen Kontrollschritte wurden durchgeführt:" +msgid "The necessary control steps have been performed:" +msgstr "Die notwendigen Kontrollschritte wurden durchgeführt:" #: intervention/forms/modals/deduction.py:33 msgid "Only recorded accounts can be selected for deductions" @@ -1677,15 +1675,15 @@ msgstr "Eingriff {} bearbeitet" msgid "{} removed" msgstr "{} entfernt" -#: konova/decorators.py:30 +#: konova/decorators.py:32 msgid "You need to be staff to perform this action!" msgstr "Hierfür müssen Sie Mitarbeiter sein!" -#: konova/decorators.py:45 +#: konova/decorators.py:47 msgid "You need to be administrator to perform this action!" msgstr "Hierfür müssen Sie Administrator sein!" -#: konova/decorators.py:63 +#: konova/decorators.py:65 msgid "" "+++ Attention: You are not part of any group. You won't be able to create, " "edit or do anything. Please contact an administrator. +++" @@ -1694,7 +1692,7 @@ msgstr "" "somit nichts eingeben, bearbeiten oder sonstige Aktionen ausführen. " "Kontaktieren Sie bitte einen Administrator. +++" -#: konova/decorators.py:169 +#: konova/decorators.py:171 msgid "Session timed out" msgstr "Sitzung abgelaufen" @@ -1791,17 +1789,17 @@ msgstr "Speichern" msgid "Not editable" msgstr "Nicht editierbar" -#: konova/forms/geometry_form.py:32 konova/utils/quality.py:44 +#: konova/forms/geometry_form.py:31 konova/utils/quality.py:44 #: konova/utils/quality.py:46 templates/form/collapsable/form.html:45 msgid "Geometry" msgstr "Geometrie" -#: konova/forms/geometry_form.py:101 +#: konova/forms/geometry_form.py:100 msgid "Only surfaces allowed. Points or lines must be buffered." msgstr "" "Nur Flächen erlaubt. Punkte oder Linien müssen zu Flächen gepuffert werden." -#: konova/forms/geometry_form.py:154 +#: konova/forms/geometry_form.py:153 msgid "Geometry must be greater than 1m². Currently is {}m²" msgstr "Geometrie muss größer als 1m² sein. Aktueller Flächeninhalt: {}m²" @@ -2288,11 +2286,11 @@ msgstr "{} wurde erfolgreich vom Nutzer {} geprüft! {}" msgid "missing" msgstr "fehlend" -#: konova/utils/tables.py:218 +#: konova/utils/tables.py:222 msgid "Full access granted" msgstr "Für Sie freigegeben - Datensatz kann bearbeitet werden" -#: konova/utils/tables.py:218 +#: konova/utils/tables.py:222 msgid "Access not granted" msgstr "Nicht freigegeben - Datensatz nur lesbar" @@ -2382,6 +2380,10 @@ msgstr "Nicht gefunden" msgid "The requested data does not exist." msgstr "Die angeforderten Daten existieren nicht." +#: templates/404.html:11 +msgid "Make sure the URL is valid (no whitespaces, ...)." +msgstr "Stellen Sie sicher, dass die URL gültig ist (keine Leerzeichen, ...)." + #: templates/500.html:7 msgid "Server Error" msgstr "" diff --git a/templates/404.html b/templates/404.html index 6f5d57f..68f2fca 100644 --- a/templates/404.html +++ b/templates/404.html @@ -8,6 +8,7 @@

{% trans 'The requested data does not exist.' %} + {% trans 'Make sure the URL is valid (no whitespaces, ...).' %}

{% endblock %} \ No newline at end of file -- 2.38.5