From 9544e27baf0f494989bd813e6da222ef0736a671 Mon Sep 17 00:00:00 2001 From: mpeltriaux Date: Wed, 17 May 2023 14:08:57 +0200 Subject: [PATCH] # Improves form date checking * adds validator to make sure no dates like `01.01.1` can be accepted. All dates must be somewhat later than 01.01.1950 --- analysis/forms.py | 3 ++ compensation/forms/eco_account.py | 2 + compensation/forms/modals/deadline.py | 2 + compensation/forms/modals/payment.py | 2 + intervention/forms/intervention.py | 3 ++ intervention/forms/modals/revocation.py | 2 + konova/forms/modals/document_form.py | 2 + konova/forms/modals/resubmission_form.py | 2 + konova/utils/validators.py | 28 +++++++++++ locale/de/LC_MESSAGES/django.mo | Bin 46745 -> 46906 bytes locale/de/LC_MESSAGES/django.po | 61 ++++++++++++----------- 11 files changed, 79 insertions(+), 28 deletions(-) create mode 100644 konova/utils/validators.py diff --git a/analysis/forms.py b/analysis/forms.py index c9a7995..ab16ac6 100644 --- a/analysis/forms.py +++ b/analysis/forms.py @@ -13,6 +13,7 @@ from django.utils.translation import gettext_lazy as _ from codelist.models import KonovaCode from codelist.settings import CODELIST_CONSERVATION_OFFICE_ID from konova.forms import BaseForm +from konova.utils import validators class TimespanReportForm(BaseForm): @@ -22,6 +23,7 @@ class TimespanReportForm(BaseForm): date_from = forms.DateField( label_suffix="", label=_("From"), + validators=[validators.reasonable_date], help_text=_("Entries created from..."), widget=forms.DateInput( attrs={ @@ -35,6 +37,7 @@ class TimespanReportForm(BaseForm): date_to = forms.DateField( label_suffix="", label=_("To"), + validators=[validators.reasonable_date], help_text=_("Entries created until..."), widget=forms.DateInput( attrs={ diff --git a/compensation/forms/eco_account.py b/compensation/forms/eco_account.py index af5f63b..53ec207 100644 --- a/compensation/forms/eco_account.py +++ b/compensation/forms/eco_account.py @@ -15,6 +15,7 @@ from compensation.models import EcoAccount from intervention.models import Handler, Responsibility, Legal from konova.forms import SimpleGeomForm from konova.forms.modals import RemoveModalForm +from konova.utils import validators from user.models import User, UserActionLogEntry @@ -43,6 +44,7 @@ class NewEcoAccountForm(AbstractCompensationForm, CompensationResponsibleFormMix label_suffix="", help_text=_("When did the parties agree on this?"), required=False, + validators=[validators.reasonable_date], widget=forms.DateInput( attrs={ "type": "date", diff --git a/compensation/forms/modals/deadline.py b/compensation/forms/modals/deadline.py index 330c83c..0ec93a3 100644 --- a/compensation/forms/modals/deadline.py +++ b/compensation/forms/modals/deadline.py @@ -10,6 +10,7 @@ from django.utils.translation import gettext_lazy as _ from konova.forms.modals import BaseModalForm from konova.models import DeadlineType +from konova.utils import validators from konova.utils.message_templates import DEADLINE_EDITED @@ -34,6 +35,7 @@ class NewDeadlineModalForm(BaseModalForm): label_suffix="", required=True, help_text=_("Select date"), + validators=[validators.reasonable_date], widget=forms.DateInput( attrs={ "type": "date", diff --git a/compensation/forms/modals/payment.py b/compensation/forms/modals/payment.py index 4383a57..0046838 100644 --- a/compensation/forms/modals/payment.py +++ b/compensation/forms/modals/payment.py @@ -9,6 +9,7 @@ from django import forms from django.utils.translation import pgettext_lazy as _con, gettext_lazy as _ from konova.forms.modals import RemoveModalForm, BaseModalForm +from konova.utils import validators from konova.utils.message_templates import PAYMENT_EDITED @@ -33,6 +34,7 @@ class NewPaymentForm(BaseModalForm): label=_("Due on"), label_suffix=_(""), required=False, + validators=[validators.reasonable_date], help_text=_("Due on which date"), widget=forms.DateInput( attrs={ diff --git a/intervention/forms/intervention.py b/intervention/forms/intervention.py index 88bff07..72986ad 100644 --- a/intervention/forms/intervention.py +++ b/intervention/forms/intervention.py @@ -9,6 +9,7 @@ from dal import autocomplete from django import forms from konova.forms.base_form import BaseForm +from konova.utils import validators from konova.utils.message_templates import EDITED_GENERAL_DATA from user.models import User from django.db import transaction @@ -175,6 +176,7 @@ class NewInterventionForm(BaseForm): label=_("Registration date"), label_suffix=_(""), required=False, + validators=[validators.reasonable_date], widget=forms.DateInput( attrs={ "type": "date", @@ -187,6 +189,7 @@ class NewInterventionForm(BaseForm): label=_("Binding on"), label_suffix=_(""), required=False, + validators=[validators.reasonable_date], widget=forms.DateInput( attrs={ "type": "date", diff --git a/intervention/forms/modals/revocation.py b/intervention/forms/modals/revocation.py index b738efe..03a0ebe 100644 --- a/intervention/forms/modals/revocation.py +++ b/intervention/forms/modals/revocation.py @@ -11,6 +11,7 @@ from django.utils.translation import gettext_lazy as _ from intervention.models import RevocationDocument from konova.forms.modals import BaseModalForm, RemoveModalForm +from konova.utils import validators from konova.utils.message_templates import REVOCATION_ADDED, REVOCATION_EDITED @@ -19,6 +20,7 @@ class NewRevocationModalForm(BaseModalForm): label=_("Date"), label_suffix=_(""), help_text=_("Date of revocation"), + validators=[validators.reasonable_date], widget=forms.DateInput( attrs={ "type": "date", diff --git a/konova/forms/modals/document_form.py b/konova/forms/modals/document_form.py index 96b4f8e..427ef9f 100644 --- a/konova/forms/modals/document_form.py +++ b/konova/forms/modals/document_form.py @@ -12,6 +12,7 @@ from django.utils.translation import gettext_lazy as _ from konova.forms.modals.base_form import BaseModalForm from konova.models import AbstractDocument +from konova.utils import validators from konova.utils.message_templates import DOCUMENT_EDITED, FILE_SIZE_TOO_LARGE, FILE_TYPE_UNSUPPORTED from user.models import UserActionLogEntry @@ -34,6 +35,7 @@ class NewDocumentModalForm(BaseModalForm): label=_("Created on"), label_suffix=_(""), help_text=_("When has this file been created? Important for photos."), + validators=[validators.reasonable_date], widget=forms.DateInput( attrs={ "type": "date", diff --git a/konova/forms/modals/resubmission_form.py b/konova/forms/modals/resubmission_form.py index 97a52dc..d23fb8a 100644 --- a/konova/forms/modals/resubmission_form.py +++ b/konova/forms/modals/resubmission_form.py @@ -14,6 +14,7 @@ from django.utils.translation import gettext_lazy as _ from konova.forms.modals.base_form import BaseModalForm from konova.models import Resubmission +from konova.utils import validators class ResubmissionModalForm(BaseModalForm): @@ -21,6 +22,7 @@ class ResubmissionModalForm(BaseModalForm): label_suffix=_(""), label=_("Date"), help_text=_("When do you want to be reminded?"), + validators=[validators.reasonable_date], widget=forms.DateInput( attrs={ "type": "date", diff --git a/konova/utils/validators.py b/konova/utils/validators.py new file mode 100644 index 0000000..a081364 --- /dev/null +++ b/konova/utils/validators.py @@ -0,0 +1,28 @@ +""" +Author: Michel Peltriaux +Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany +Contact: ksp-servicestelle@sgdnord.rlp.de +Created on: 17.05.23 + +""" +from datetime import datetime + +from django.core.exceptions import ValidationError +from django.utils.translation import gettext_lazy as _ + + +def reasonable_date(value): + """ Validator which checks that no dates like "01.01.1" can be entered + + Args: + value (): + + Returns: + + """ + min_date = datetime.fromisoformat("1950-01-01").date() + if value < min_date: + raise ValidationError( + _("This date is unrealistic. Please enter the correct date (>1950)."), + params={"value": value}, + ) diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo index 8d33b5bc6bc63c5957cac761931849ed34e0bf5d..2b61c229b0bbc2ed564f0e49104217d72f197ce2 100644 GIT binary patch delta 10710 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\n" "Language-Team: LANGUAGE \n" @@ -72,7 +72,7 @@ msgstr "Einträge erstellt bis..." #: analysis/forms.py:49 compensation/forms/mixins.py:21 #: compensation/templates/compensation/detail/eco_account/view.html:59 #: compensation/templates/compensation/report/eco_account/report.html:16 -#: compensation/utils/quality.py:112 ema/templates/ema/detail/view.html:49 +#: compensation/utils/quality.py:113 ema/templates/ema/detail/view.html:49 #: ema/templates/ema/report/report.html:16 ema/utils/quality.py:26 #: intervention/forms/intervention.py:104 #: intervention/templates/intervention/detail/view.html:56 @@ -398,7 +398,7 @@ msgstr "Kompensation XY; Flur ABC" #: compensation/forms/compensation.py:56 #: compensation/forms/modals/compensation_action.py:81 -#: compensation/forms/modals/deadline.py:49 +#: compensation/forms/modals/deadline.py:51 #: compensation/forms/modals/payment.py:49 #: compensation/templates/compensation/detail/compensation/includes/actions.html:35 #: compensation/templates/compensation/detail/compensation/includes/deadlines.html:39 @@ -446,7 +446,7 @@ msgstr "Neue Kompensation" msgid "Edit compensation" msgstr "Bearbeite Kompensation" -#: compensation/forms/eco_account.py:30 compensation/utils/quality.py:96 +#: compensation/forms/eco_account.py:30 compensation/utils/quality.py:97 msgid "Available Surface" msgstr "Verfügbare Fläche" @@ -486,7 +486,7 @@ msgstr "" #: compensation/forms/mixins.py:37 #: compensation/templates/compensation/detail/eco_account/view.html:63 #: compensation/templates/compensation/report/eco_account/report.html:20 -#: compensation/utils/quality.py:114 ema/templates/ema/detail/view.html:53 +#: compensation/utils/quality.py:115 ema/templates/ema/detail/view.html:53 #: ema/templates/ema/report/report.html:20 ema/utils/quality.py:28 #: intervention/forms/intervention.py:132 #: intervention/templates/intervention/detail/view.html:60 @@ -604,15 +604,15 @@ msgstr "Geben Sie die Daten der neuen Maßnahme ein" msgid "Edit action" msgstr "Maßnahme bearbeiten" -#: compensation/forms/modals/deadline.py:21 +#: compensation/forms/modals/deadline.py:23 msgid "Deadline Type" msgstr "Fristart" -#: compensation/forms/modals/deadline.py:24 +#: compensation/forms/modals/deadline.py:26 msgid "Select the deadline type" msgstr "Fristart wählen" -#: compensation/forms/modals/deadline.py:33 +#: compensation/forms/modals/deadline.py:35 #: compensation/templates/compensation/detail/compensation/includes/deadlines.html:36 #: compensation/templates/compensation/detail/eco_account/includes/deadlines.html:36 #: ema/templates/ema/detail/includes/deadlines.html:36 @@ -621,26 +621,30 @@ msgstr "Fristart wählen" msgid "Date" msgstr "Datum" -#: compensation/forms/modals/deadline.py:36 +#: compensation/forms/modals/deadline.py:38 msgid "Select date" msgstr "Datum wählen" -#: compensation/forms/modals/deadline.py:51 +#: compensation/forms/modals/deadline.py:53 #: compensation/forms/modals/payment.py:51 #: intervention/forms/modals/revocation.py:47 #: konova/forms/modals/document_form.py:61 msgid "Additional comment, maximum {} letters" msgstr "Zusätzlicher Kommentar, maximal {} Zeichen" -#: compensation/forms/modals/deadline.py:63 +#: compensation/forms/modals/deadline.py:65 msgid "New deadline" msgstr "Neue Frist" -#: compensation/forms/modals/deadline.py:64 +#: compensation/forms/modals/deadline.py:66 msgid "Insert data for the new deadline" msgstr "Geben Sie die Daten der neuen Frist ein" #: compensation/forms/modals/deadline.py:77 +msgid "This date is unrealistic. Please enter the correct date (>1950)." +msgstr "Dieses Datum ist unrealistisch. Geben Sie bitte das korrekte Datum ein (>1950)." + +#: compensation/forms/modals/deadline.py:95 #: compensation/templates/compensation/detail/compensation/includes/deadlines.html:64 #: compensation/templates/compensation/detail/eco_account/includes/deadlines.html:62 #: ema/templates/ema/detail/includes/deadlines.html:62 @@ -1262,13 +1266,13 @@ msgstr "Umsetzungstermin" msgid "Legal data" msgstr "Rechtliche Daten" -#: compensation/utils/quality.py:100 +#: compensation/utils/quality.py:101 msgid "Deductable surface can not be larger than state surface" msgstr "" "Die abbuchbare Fläche darf die Gesamtfläche der Zielzustände nicht " "überschreiten" -#: compensation/utils/quality.py:116 ema/utils/quality.py:30 +#: compensation/utils/quality.py:117 ema/utils/quality.py:30 #: intervention/utils/quality.py:68 msgid "Responsible data" msgstr "Daten zu den verantwortlichen Stellen" @@ -1283,7 +1287,7 @@ msgid "Compensation {} edited" msgstr "Kompensation {} bearbeitet" #: compensation/views/compensation/compensation.py:187 -#: compensation/views/eco_account/eco_account.py:161 ema/views/ema.py:212 +#: compensation/views/eco_account/eco_account.py:161 ema/views/ema.py:220 #: intervention/views/intervention.py:243 msgid "Edit {}" msgstr "Bearbeite {}" @@ -1306,11 +1310,11 @@ msgstr "Ökokonto {} hinzugefügt" msgid "Eco-Account {} edited" msgstr "Ökokonto {} bearbeitet" -#: compensation/views/eco_account/eco_account.py:268 +#: compensation/views/eco_account/eco_account.py:275 msgid "Eco-account removed" msgstr "Ökokonto entfernt" -#: ema/forms.py:42 ema/views/ema.py:95 +#: ema/forms.py:42 ema/views/ema.py:96 msgid "New EMA" msgstr "Neue EMA hinzufügen" @@ -1338,19 +1342,19 @@ msgstr "" msgid "Payment funded compensation" msgstr "Ersatzzahlungsmaßnahme" -#: ema/views/ema.py:52 +#: ema/views/ema.py:53 msgid "EMAs - Overview" msgstr "EMAs - Übersicht" -#: ema/views/ema.py:85 +#: ema/views/ema.py:86 msgid "EMA {} added" msgstr "EMA {} hinzugefügt" -#: ema/views/ema.py:202 +#: ema/views/ema.py:210 msgid "EMA {} edited" msgstr "EMA {} bearbeitet" -#: ema/views/ema.py:236 +#: ema/views/ema.py:244 msgid "EMA removed" msgstr "EMA entfernt" @@ -2095,7 +2099,8 @@ msgid "" "Do not forget to share your entry! Currently you are the only one having " "shared access." msgstr "" -"Denken Sie daran Ihren Eintrag freizugeben! Aktuell haben nur Sie eine Freigabe hierauf." +"Denken Sie daran Ihren Eintrag freizugeben! Aktuell haben nur Sie eine " +"Freigabe hierauf." #: konova/utils/message_templates.py:29 msgid "Unsupported file type" @@ -2270,7 +2275,7 @@ msgstr "Für Sie freigegeben - Datensatz kann bearbeitet werden" msgid "Access not granted" msgstr "Nicht freigegeben - Datensatz nur lesbar" -#: konova/views/home.py:80 templates/navbars/navbar.html:16 +#: konova/views/home.py:74 templates/navbars/navbar.html:16 msgid "Home" msgstr "Home" @@ -2306,15 +2311,15 @@ msgstr "{} ist nun für Sie freigegeben" msgid "Share link invalid" msgstr "Freigabelink ungültig" -#: news/models.py:12 +#: news/models.py:13 msgid "Default" msgstr "Standard" -#: news/models.py:13 +#: news/models.py:14 msgid "Info" msgstr "" -#: news/models.py:14 +#: news/models.py:15 msgid "Warning" msgstr "Warnung" @@ -2330,7 +2335,7 @@ msgstr "Ältere ..." msgid "All" msgstr "Alle" -#: news/templates/news/index.html:9 news/views.py:34 +#: news/templates/news/index.html:9 news/views.py:27 msgid "News" msgstr "Neuigkeiten"