From a571c28027a8aa00bdbeee3c1e8c97f6e3021b0b Mon Sep 17 00:00:00 2001 From: mpeltriaux Date: Wed, 28 Jun 2023 14:21:26 +0200 Subject: [PATCH] Geometry simplification * simplifies geometries on SimpleGeomForm if threshold GEOM_MAX_VERTICES has been exceeded * geometry is iteratively simplified to find a proper tolerance value which satisfies the GEOM_MAX_VERTICES threshold --- .../views/compensation/compensation.py | 14 +- compensation/views/eco_account/eco_account.py | 12 +- ema/views/ema.py | 13 +- intervention/views/intervention.py | 12 +- konova/forms/geometry_form.py | 41 ++ konova/settings.py | 2 + konova/utils/message_templates.py | 5 +- locale/de/LC_MESSAGES/django.mo | Bin 46906 -> 47170 bytes locale/de/LC_MESSAGES/django.po | 355 +++++++++--------- 9 files changed, 277 insertions(+), 177 deletions(-) diff --git a/compensation/views/compensation/compensation.py b/compensation/views/compensation/compensation.py index 95ac714d..32787f84 100644 --- a/compensation/views/compensation/compensation.py +++ b/compensation/views/compensation/compensation.py @@ -26,7 +26,7 @@ from konova.settings import DEFAULT_GROUP, ZB_GROUP, ETS_GROUP from konova.sub_settings.context_settings import TAB_TITLE_IDENTIFIER from konova.utils.message_templates import COMPENSATION_REMOVED_TEMPLATE, DATA_CHECKED_PREVIOUSLY_TEMPLATE, \ RECORDED_BLOCKS_EDIT, CHECKED_RECORDED_RESET, FORM_INVALID, PARAMS_INVALID, IDENTIFIER_REPLACED, \ - COMPENSATION_ADDED_TEMPLATE, DO_NOT_FORGET_TO_SHARE + COMPENSATION_ADDED_TEMPLATE, DO_NOT_FORGET_TO_SHARE, GEOMETRY_SIMPLIFIED from konova.utils.user_checks import in_group @@ -103,6 +103,11 @@ def new_view(request: HttpRequest, intervention_id: str = None): ) ) messages.success(request, COMPENSATION_ADDED_TEMPLATE.format(comp.identifier)) + if geom_form.geometry_simplified: + messages.info( + request, + GEOMETRY_SIMPLIFIED + ) return redirect("compensation:detail", id=comp.id) else: messages.error(request, FORM_INVALID, extra_tags="danger",) @@ -175,6 +180,11 @@ def edit_view(request: HttpRequest, id: str): if intervention_recorded or intervention_checked: messages.info(request, CHECKED_RECORDED_RESET) messages.success(request, _("Compensation {} edited").format(comp.identifier)) + if geom_form.geometry_simplified: + messages.info( + request, + GEOMETRY_SIMPLIFIED + ) return redirect("compensation:detail", id=comp.id) else: messages.error(request, FORM_INVALID, extra_tags="danger",) @@ -218,6 +228,8 @@ def detail_view(request: HttpRequest, id: str): _user = request.user is_data_shared = comp.intervention.is_shared_with(_user) + + # Order states according to surface before_states = comp.before_states.all().prefetch_related("biotope_type").order_by("-surface") after_states = comp.after_states.all().prefetch_related("biotope_type").order_by("-surface") diff --git a/compensation/views/eco_account/eco_account.py b/compensation/views/eco_account/eco_account.py index 914d10e9..71cfda51 100644 --- a/compensation/views/eco_account/eco_account.py +++ b/compensation/views/eco_account/eco_account.py @@ -22,7 +22,7 @@ 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 from konova.utils.message_templates import CANCEL_ACC_RECORDED_OR_DEDUCTED, RECORDED_BLOCKS_EDIT, FORM_INVALID, \ - IDENTIFIER_REPLACED, DO_NOT_FORGET_TO_SHARE + IDENTIFIER_REPLACED, DO_NOT_FORGET_TO_SHARE, GEOMETRY_SIMPLIFIED from konova.utils.user_checks import in_group @@ -84,6 +84,11 @@ def new_view(request: HttpRequest): ) ) messages.success(request, _("Eco-Account {} added").format(acc.identifier)) + if geom_form.geometry_simplified: + messages.info( + request, + GEOMETRY_SIMPLIFIED + ) return redirect("compensation:acc:detail", id=acc.id) else: messages.error(request, FORM_INVALID, extra_tags="danger",) @@ -149,6 +154,11 @@ def edit_view(request: HttpRequest, id: str): # The data form takes the geom form for processing, as well as the performing user acc = data_form.save(request.user, geom_form) messages.success(request, _("Eco-Account {} edited").format(acc.identifier)) + if geom_form.geometry_simplified: + messages.info( + request, + GEOMETRY_SIMPLIFIED + ) return redirect("compensation:acc:detail", id=acc.id) else: messages.error(request, FORM_INVALID, extra_tags="danger",) diff --git a/ema/views/ema.py b/ema/views/ema.py index f2875dbe..53d525a6 100644 --- a/ema/views/ema.py +++ b/ema/views/ema.py @@ -23,7 +23,7 @@ from konova.forms.modals import RemoveModalForm from konova.settings import DEFAULT_GROUP, ZB_GROUP, ETS_GROUP from konova.sub_settings.context_settings import TAB_TITLE_IDENTIFIER from konova.utils.message_templates import RECORDED_BLOCKS_EDIT, IDENTIFIER_REPLACED, FORM_INVALID, \ - DO_NOT_FORGET_TO_SHARE + DO_NOT_FORGET_TO_SHARE, GEOMETRY_SIMPLIFIED from konova.utils.user_checks import in_group @@ -84,6 +84,12 @@ def new_view(request: HttpRequest): ) ) messages.success(request, _("EMA {} added").format(ema.identifier)) + if geom_form.geometry_simplified: + messages.info( + request, + GEOMETRY_SIMPLIFIED + ) + return redirect("ema:detail", id=ema.id) else: messages.error(request, FORM_INVALID, extra_tags="danger",) @@ -208,6 +214,11 @@ def edit_view(request: HttpRequest, id: str): # The data form takes the geom form for processing, as well as the performing user ema = data_form.save(request.user, geom_form) messages.success(request, _("EMA {} edited").format(ema.identifier)) + if geom_form.geometry_simplified: + messages.info( + request, + GEOMETRY_SIMPLIFIED + ) return redirect("ema:detail", id=ema.id) else: messages.error(request, FORM_INVALID, extra_tags="danger",) diff --git a/intervention/views/intervention.py b/intervention/views/intervention.py index f67762aa..a69ba4a0 100644 --- a/intervention/views/intervention.py +++ b/intervention/views/intervention.py @@ -22,7 +22,7 @@ from konova.forms.modals import RemoveModalForm from konova.settings import DEFAULT_GROUP, ZB_GROUP, ETS_GROUP from konova.sub_settings.context_settings import TAB_TITLE_IDENTIFIER from konova.utils.message_templates import DATA_CHECKED_PREVIOUSLY_TEMPLATE, RECORDED_BLOCKS_EDIT, \ - CHECKED_RECORDED_RESET, FORM_INVALID, IDENTIFIER_REPLACED, DO_NOT_FORGET_TO_SHARE + CHECKED_RECORDED_RESET, FORM_INVALID, IDENTIFIER_REPLACED, DO_NOT_FORGET_TO_SHARE, GEOMETRY_SIMPLIFIED from konova.utils.user_checks import in_group @@ -88,6 +88,11 @@ def new_view(request: HttpRequest): ) ) messages.success(request, _("Intervention {} added").format(intervention.identifier)) + if geom_form.geometry_simplified: + messages.info( + request, + GEOMETRY_SIMPLIFIED + ) return redirect("intervention:detail", id=intervention.id) else: messages.error(request, FORM_INVALID, extra_tags="danger",) @@ -231,6 +236,11 @@ def edit_view(request: HttpRequest, id: str): messages.success(request, _("Intervention {} edited").format(intervention.identifier)) if i_check or i_rec: messages.info(request, CHECKED_RECORDED_RESET) + if geom_form.geometry_simplified: + messages.info( + request, + GEOMETRY_SIMPLIFIED + ) return redirect("intervention:detail", id=intervention.id) else: messages.error(request, FORM_INVALID, extra_tags="danger",) diff --git a/konova/forms/geometry_form.py b/konova/forms/geometry_form.py index 09449af5..ff5b0ca1 100644 --- a/konova/forms/geometry_form.py +++ b/konova/forms/geometry_form.py @@ -15,6 +15,7 @@ from django.utils.translation import gettext_lazy as _ from konova.forms.base_form import BaseForm from konova.models import Geometry +from konova.settings import GEOM_MAX_VERTICES from konova.tasks import celery_update_parcels, celery_check_for_geometry_conflicts from konova.sub_settings.lanis_settings import DEFAULT_SRID_RLP from user.models import UserActionLogEntry @@ -25,6 +26,7 @@ class SimpleGeomForm(BaseForm): """ read_only = True + geometry_simplified = False geom = MultiPolygonField( srid=DEFAULT_SRID_RLP, label=_("Geometry"), @@ -124,6 +126,38 @@ class SimpleGeomForm(BaseForm): return is_valid + def __is_vertices_num_valid(self): + """ Checks whether the number of vertices in the geometry is not too high + + Returns: + + """ + geom = self.cleaned_data.get("geom") + g = gdal.OGRGeometry(geom, srs=DEFAULT_SRID_RLP) + num_vertices = g.num_coords + + return num_vertices <= GEOM_MAX_VERTICES + + def __simplify_geometry(self, geom, max_vert: int): + """ Simplifies a geometry + + Geometry will be simplified until a threshold of max vertices has been reached. + + Args: + geom (MultiPolygon): The geometry + max_vert (int): Threshold of maximum vertices in geometry + + Returns: + geom (MultiPolygon): The simplified geometry + """ + tolerance = 0.1 + n = geom.num_coords + while(n > max_vert): + geom = geom.simplify(tolerance) + n = geom.num_coords + tolerance += 0.1 + return geom + def save(self, action: UserActionLogEntry): """ Saves the form's geometry @@ -149,6 +183,13 @@ class SimpleGeomForm(BaseForm): geom=self.cleaned_data.get("geom", MultiPolygon(srid=DEFAULT_SRID_RLP)), created=action, ) + + is_vertices_num_valid = self.__is_vertices_num_valid() + if not is_vertices_num_valid: + geometry.geom = self.__simplify_geometry(geometry.geom, max_vert=GEOM_MAX_VERTICES) + geometry.save() + self.geometry_simplified = True + # Start parcel update and geometry conflict checking procedure in a background process celery_update_parcels.delay(geometry.id) celery_check_for_geometry_conflicts.delay(geometry.id) diff --git a/konova/settings.py b/konova/settings.py index 18a5b818..5a5da1c8 100644 --- a/konova/settings.py +++ b/konova/settings.py @@ -44,3 +44,5 @@ STRF_DATE_TIME = "%d.%m.%Y %H:%M:%S" DEFAULT_GROUP = "Default" ZB_GROUP = "Registration office" ETS_GROUP = "Conservation office" + +GEOM_MAX_VERTICES = 10000 diff --git a/konova/utils/message_templates.py b/konova/utils/message_templates.py index 6790dffb..6e8fa65e 100644 --- a/konova/utils/message_templates.py +++ b/konova/utils/message_templates.py @@ -7,6 +7,8 @@ Created on: 02.08.21 """ from django.utils.translation import gettext_lazy as _ +from konova.settings import GEOM_MAX_VERTICES + NO_DETAILS = _("no further details") UNKNOWN = _("Unknown") UNGROUPED = _("Ungrouped") @@ -79,8 +81,9 @@ DOCUMENT_EDITED = _("Document edited") EDITED_GENERAL_DATA = _("Edited general data") ADDED_DEADLINE = _("Added deadline") -# Geometry conflicts +# Geometry GEOMETRY_CONFLICT_WITH_TEMPLATE = _("Geometry conflict detected with {}") +GEOMETRY_SIMPLIFIED = _("The geometry contained more than {} vertices. It had to be simplified to match the allowed limit of {} vertices.").format(GEOM_MAX_VERTICES, GEOM_MAX_VERTICES) # INTERVENTION INTERVENTION_HAS_REVOCATIONS_TEMPLATE = _("This intervention has {} revocations") diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo index 2b61c229b0bbc2ed564f0e49104217d72f197ce2..85da40f03636913c0f49ac38be22c16c2cfda76e 100644 GIT binary patch delta 10911 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 diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po index daf46234..f087f717 100644 --- a/locale/de/LC_MESSAGES/django.po +++ b/locale/de/LC_MESSAGES/django.po @@ -6,14 +6,14 @@ #: compensation/filters/eco_account.py:21 #: compensation/forms/modals/compensation_action.py:82 #: compensation/forms/modals/deadline.py:52 -#: compensation/forms/modals/payment.py:23 -#: compensation/forms/modals/payment.py:34 -#: compensation/forms/modals/payment.py:50 -#: intervention/forms/intervention.py:56 intervention/forms/intervention.py:176 -#: intervention/forms/intervention.py:188 -#: intervention/forms/modals/revocation.py:20 -#: intervention/forms/modals/revocation.py:33 -#: intervention/forms/modals/revocation.py:46 +#: compensation/forms/modals/payment.py:24 +#: compensation/forms/modals/payment.py:35 +#: compensation/forms/modals/payment.py:52 +#: intervention/forms/intervention.py:57 intervention/forms/intervention.py:177 +#: intervention/forms/intervention.py:190 +#: intervention/forms/modals/revocation.py:21 +#: intervention/forms/modals/revocation.py:35 +#: intervention/forms/modals/revocation.py:48 #: konova/filters/mixins/file_number.py:17 #: konova/filters/mixins/file_number.py:18 #: konova/filters/mixins/geo_reference.py:25 @@ -29,21 +29,21 @@ #: 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:31 konova/forms/modals/document_form.py:25 -#: konova/forms/modals/document_form.py:35 -#: konova/forms/modals/document_form.py:48 -#: konova/forms/modals/document_form.py:60 -#: konova/forms/modals/document_form.py:78 +#: konova/forms/geometry_form.py:33 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 +#: konova/forms/modals/document_form.py:80 #: konova/forms/modals/remove_form.py:23 -#: konova/forms/modals/resubmission_form.py:21 -#: konova/forms/modals/resubmission_form.py:36 konova/forms/remove_form.py:19 +#: konova/forms/modals/resubmission_form.py:22 +#: konova/forms/modals/resubmission_form.py:38 konova/forms/remove_form.py:19 #: user/forms/user.py:39 #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-17 12:42+0200\n" +"POT-Creation-Date: 2023-06-28 14:12+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -53,57 +53,58 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: analysis/forms.py:24 analysis/templates/analysis/reports/detail.html:8 +#: analysis/forms.py:25 analysis/templates/analysis/reports/detail.html:8 msgid "From" msgstr "Vom" -#: analysis/forms.py:25 +#: analysis/forms.py:27 msgid "Entries created from..." msgstr "Einträge erstellt seit..." -#: analysis/forms.py:37 +#: analysis/forms.py:39 msgid "To" msgstr "Bis" -#: analysis/forms.py:38 +#: analysis/forms.py:41 msgid "Entries created until..." msgstr "Einträge erstellt bis..." -#: analysis/forms.py:49 compensation/forms/mixins.py:21 +#: analysis/forms.py:52 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: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/forms/intervention.py:105 #: intervention/templates/intervention/detail/view.html:56 #: intervention/templates/intervention/report/report.html:37 #: intervention/utils/quality.py:62 konova/filters/mixins/office.py:34 msgid "Conservation office" msgstr "Eintragungsstelle" -#: analysis/forms.py:51 compensation/forms/mixins.py:23 +#: analysis/forms.py:54 compensation/forms/mixins.py:23 msgid "Select the responsible office" msgstr "Verantwortliche Stelle" -#: analysis/forms.py:60 compensation/forms/compensation.py:94 +#: analysis/forms.py:63 compensation/forms/compensation.py:94 #: compensation/forms/mixins.py:32 compensation/forms/mixins.py:62 -#: intervention/forms/intervention.py:66 intervention/forms/intervention.py:83 -#: intervention/forms/intervention.py:99 intervention/forms/intervention.py:115 -#: intervention/forms/intervention.py:156 intervention/forms/modals/share.py:41 +#: intervention/forms/intervention.py:67 intervention/forms/intervention.py:84 +#: intervention/forms/intervention.py:100 +#: intervention/forms/intervention.py:116 +#: intervention/forms/intervention.py:157 intervention/forms/modals/share.py:41 #: intervention/forms/modals/share.py:55 user/forms/modals/team.py:48 #: user/forms/modals/team.py:112 msgid "Click for selection" msgstr "Auswählen..." -#: analysis/forms.py:67 +#: analysis/forms.py:70 msgid "Generate report" msgstr "Bericht generieren" -#: analysis/forms.py:68 +#: analysis/forms.py:71 msgid "Select a timespan and the desired conservation office" msgstr "Wählen Sie die Zeitspanne und die gewünschte Eintragungsstelle" -#: analysis/forms.py:71 konova/forms/modals/base_form.py:30 +#: analysis/forms.py:74 konova/forms/modals/base_form.py:30 msgid "Continue" msgstr "Weiter" @@ -286,7 +287,7 @@ msgid "Compensation" msgstr "Kompensation" #: analysis/templates/analysis/reports/includes/intervention/compensated_by.html:21 -#: compensation/forms/modals/payment.py:63 +#: compensation/forms/modals/payment.py:65 msgid "Payment" msgstr "Zahlung" @@ -309,7 +310,7 @@ msgstr "" " " #: analysis/templates/analysis/reports/includes/intervention/laws.html:14 -#: intervention/forms/intervention.py:71 +#: intervention/forms/intervention.py:72 #: intervention/templates/intervention/detail/view.html:39 #: intervention/templates/intervention/report/report.html:20 msgid "Law" @@ -358,12 +359,12 @@ msgstr "Nur unverzeichnete anzeigen" #: compensation/forms/compensation.py:30 compensation/tables/compensation.py:23 #: compensation/tables/eco_account.py:24 ema/tables.py:26 -#: intervention/forms/intervention.py:29 intervention/tables.py:23 +#: intervention/forms/intervention.py:30 intervention/tables.py:23 #: intervention/templates/intervention/detail/includes/compensations.html:30 msgid "Identifier" msgstr "Kennung" -#: compensation/forms/compensation.py:33 intervention/forms/intervention.py:32 +#: compensation/forms/compensation.py:33 intervention/forms/intervention.py:33 #: user/forms/user.py:77 msgid "Generated automatically - not editable" msgstr "Automatisch generiert - nicht bearbeitbar" @@ -379,16 +380,16 @@ msgstr "Automatisch generiert - nicht bearbeitbar" #: ema/tables.py:31 ema/templates/ema/detail/includes/documents.html:28 #: ema/templates/ema/detail/view.html:31 #: ema/templates/ema/report/report.html:12 -#: intervention/forms/intervention.py:42 intervention/tables.py:28 +#: intervention/forms/intervention.py:43 intervention/tables.py:28 #: intervention/templates/intervention/detail/includes/compensations.html:33 #: intervention/templates/intervention/detail/includes/documents.html:33 #: intervention/templates/intervention/detail/view.html:31 #: intervention/templates/intervention/report/report.html:12 -#: konova/forms/modals/document_form.py:24 +#: konova/forms/modals/document_form.py:25 msgid "Title" msgstr "Bezeichnung" -#: compensation/forms/compensation.py:45 intervention/forms/intervention.py:44 +#: compensation/forms/compensation.py:45 intervention/forms/intervention.py:45 msgid "An explanatory name" msgstr "Aussagekräftiger Titel" @@ -399,7 +400,7 @@ msgstr "Kompensation XY; Flur ABC" #: compensation/forms/compensation.py:56 #: compensation/forms/modals/compensation_action.py:81 #: compensation/forms/modals/deadline.py:51 -#: compensation/forms/modals/payment.py:49 +#: compensation/forms/modals/payment.py:51 #: compensation/templates/compensation/detail/compensation/includes/actions.html:35 #: compensation/templates/compensation/detail/compensation/includes/deadlines.html:39 #: compensation/templates/compensation/detail/compensation/includes/documents.html:34 @@ -409,21 +410,21 @@ msgstr "Kompensation XY; Flur ABC" #: ema/templates/ema/detail/includes/actions.html:34 #: ema/templates/ema/detail/includes/deadlines.html:39 #: ema/templates/ema/detail/includes/documents.html:34 -#: intervention/forms/intervention.py:200 -#: intervention/forms/modals/revocation.py:45 +#: intervention/forms/intervention.py:203 +#: intervention/forms/modals/revocation.py:47 #: intervention/templates/intervention/detail/includes/documents.html:39 #: intervention/templates/intervention/detail/includes/payments.html:34 #: intervention/templates/intervention/detail/includes/revocation.html:38 -#: konova/forms/modals/document_form.py:59 -#: konova/forms/modals/resubmission_form.py:35 +#: konova/forms/modals/document_form.py:61 +#: konova/forms/modals/resubmission_form.py:37 #: konova/templates/konova/includes/comment_card.html:16 msgid "Comment" msgstr "Kommentar" #: compensation/forms/compensation.py:58 #: compensation/forms/modals/compensation_action.py:83 -#: intervention/forms/intervention.py:202 -#: konova/forms/modals/resubmission_form.py:37 +#: intervention/forms/intervention.py:205 +#: konova/forms/modals/resubmission_form.py:39 msgid "Additional comment" msgstr "Zusätzlicher Kommentar" @@ -438,7 +439,7 @@ msgid "Select the intervention for which this compensation compensates" msgstr "Wählen Sie den Eingriff, für den diese Kompensation bestimmt ist" #: compensation/forms/compensation.py:114 -#: compensation/views/compensation/compensation.py:115 +#: compensation/views/compensation/compensation.py:120 msgid "New compensation" msgstr "Neue Kompensation" @@ -446,38 +447,38 @@ msgstr "Neue Kompensation" msgid "Edit compensation" msgstr "Bearbeite Kompensation" -#: compensation/forms/eco_account.py:30 compensation/utils/quality.py:97 +#: compensation/forms/eco_account.py:31 compensation/utils/quality.py:97 msgid "Available Surface" msgstr "Verfügbare Fläche" -#: compensation/forms/eco_account.py:33 +#: compensation/forms/eco_account.py:34 msgid "The amount that can be used for deductions" msgstr "Die für Abbuchungen zur Verfügung stehende Menge" -#: compensation/forms/eco_account.py:42 +#: compensation/forms/eco_account.py:43 #: compensation/templates/compensation/detail/eco_account/view.html:67 #: compensation/utils/quality.py:84 msgid "Agreement date" msgstr "Vereinbarungsdatum" -#: compensation/forms/eco_account.py:44 +#: compensation/forms/eco_account.py:45 msgid "When did the parties agree on this?" msgstr "Wann wurde dieses Ökokonto offiziell vereinbart?" -#: compensation/forms/eco_account.py:70 -#: compensation/views/eco_account/eco_account.py:96 +#: compensation/forms/eco_account.py:72 +#: compensation/views/eco_account/eco_account.py:101 msgid "New Eco-Account" msgstr "Neues Ökokonto" -#: compensation/forms/eco_account.py:79 +#: compensation/forms/eco_account.py:81 msgid "Eco-Account XY; Location ABC" msgstr "Ökokonto XY; Flur ABC" -#: compensation/forms/eco_account.py:145 +#: compensation/forms/eco_account.py:147 msgid "Edit Eco-Account" msgstr "Ökokonto bearbeiten" -#: compensation/forms/eco_account.py:230 +#: compensation/forms/eco_account.py:232 msgid "The account can not be removed, since there are still deductions." msgstr "" "Das Ökokonto kann nicht entfernt werden, da hierzu noch Abbuchungen " @@ -488,14 +489,14 @@ msgstr "" #: compensation/templates/compensation/report/eco_account/report.html:20 #: 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/forms/intervention.py:133 #: intervention/templates/intervention/detail/view.html:60 #: intervention/templates/intervention/report/report.html:41 #: intervention/utils/quality.py:55 msgid "Conservation office file number" msgstr "Aktenzeichen Eintragungsstelle" -#: compensation/forms/mixins.py:43 intervention/forms/intervention.py:138 +#: compensation/forms/mixins.py:43 intervention/forms/intervention.py:139 msgid "ETS-123/ABC.456" msgstr "" @@ -511,11 +512,11 @@ msgstr "Zu welcher Kategorie dieser Maßnahmenträger gehört" msgid "Eco-Account handler detail" msgstr "Detailangabe zum Maßnahmenträger" -#: compensation/forms/mixins.py:71 intervention/forms/intervention.py:165 +#: compensation/forms/mixins.py:71 intervention/forms/intervention.py:166 msgid "Detail input on the handler" msgstr "Name der Behörde, Stadt, Firma, ..." -#: compensation/forms/mixins.py:74 intervention/forms/intervention.py:168 +#: compensation/forms/mixins.py:74 intervention/forms/intervention.py:169 msgid "Company Mustermann" msgstr "Firma Mustermann" @@ -604,31 +605,31 @@ msgstr "Geben Sie die Daten der neuen Maßnahme ein" msgid "Edit action" msgstr "Maßnahme bearbeiten" -#: compensation/forms/modals/deadline.py:23 +#: compensation/forms/modals/deadline.py:22 msgid "Deadline Type" msgstr "Fristart" -#: compensation/forms/modals/deadline.py:26 +#: compensation/forms/modals/deadline.py:25 msgid "Select the deadline type" msgstr "Fristart wählen" -#: compensation/forms/modals/deadline.py:35 +#: compensation/forms/modals/deadline.py:34 #: 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 -#: intervention/forms/modals/revocation.py:19 -#: konova/forms/modals/resubmission_form.py:22 +#: intervention/forms/modals/revocation.py:20 +#: konova/forms/modals/resubmission_form.py:23 msgid "Date" msgstr "Datum" -#: compensation/forms/modals/deadline.py:38 +#: compensation/forms/modals/deadline.py:37 msgid "Select date" msgstr "Datum wählen" #: 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 +#: compensation/forms/modals/payment.py:53 +#: intervention/forms/modals/revocation.py:49 +#: konova/forms/modals/document_form.py:63 msgid "Additional comment, maximum {} letters" msgstr "Zusätzlicher Kommentar, maximal {} Zeichen" @@ -640,39 +641,35 @@ msgstr "Neue Frist" 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/forms/modals/deadline.py:79 #: 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 msgid "Edit deadline" msgstr "Frist/Termin bearbeiten" -#: compensation/forms/modals/payment.py:24 +#: compensation/forms/modals/payment.py:25 msgid "in Euro" msgstr "in Euro" -#: compensation/forms/modals/payment.py:33 +#: compensation/forms/modals/payment.py:34 #: intervention/templates/intervention/detail/includes/payments.html:31 msgid "Due on" msgstr "Fällig am" -#: compensation/forms/modals/payment.py:36 +#: compensation/forms/modals/payment.py:38 msgid "Due on which date" msgstr "Zahlung wird an diesem Datum erwartet" -#: compensation/forms/modals/payment.py:64 +#: compensation/forms/modals/payment.py:66 msgid "Add a payment for intervention '{}'" msgstr "Neue Ersatzzahlung zu Eingriff '{}' hinzufügen" -#: compensation/forms/modals/payment.py:84 +#: compensation/forms/modals/payment.py:86 msgid "If there is no date you can enter, please explain why." msgstr "Falls Sie kein Datum angeben können, erklären Sie bitte weshalb." -#: compensation/forms/modals/payment.py:103 +#: compensation/forms/modals/payment.py:105 #: intervention/templates/intervention/detail/includes/payments.html:59 msgid "Edit payment" msgstr "Zahlung bearbeiten" @@ -924,7 +921,7 @@ msgstr "Öffentlicher Bericht" #: compensation/templates/compensation/detail/eco_account/includes/controls.html:15 #: ema/templates/ema/detail/includes/controls.html:15 #: intervention/templates/intervention/detail/includes/controls.html:15 -#: konova/forms/modals/resubmission_form.py:49 +#: konova/forms/modals/resubmission_form.py:51 #: templates/email/resubmission/resubmission.html:4 msgid "Resubmission" msgstr "Wiedervorlage" @@ -987,7 +984,7 @@ msgstr "Dokumente" #: compensation/templates/compensation/detail/eco_account/includes/documents.html:14 #: ema/templates/ema/detail/includes/documents.html:14 #: intervention/templates/intervention/detail/includes/documents.html:14 -#: konova/forms/modals/document_form.py:77 +#: konova/forms/modals/document_form.py:79 msgid "Add new document" msgstr "Neues Dokument hinzufügen" @@ -995,7 +992,7 @@ msgstr "Neues Dokument hinzufügen" #: compensation/templates/compensation/detail/eco_account/includes/documents.html:31 #: ema/templates/ema/detail/includes/documents.html:31 #: intervention/templates/intervention/detail/includes/documents.html:36 -#: konova/forms/modals/document_form.py:34 +#: konova/forms/modals/document_form.py:35 msgid "Created on" msgstr "Erstellt" @@ -1003,7 +1000,7 @@ msgstr "Erstellt" #: compensation/templates/compensation/detail/eco_account/includes/documents.html:61 #: ema/templates/ema/detail/includes/documents.html:61 #: intervention/templates/intervention/detail/includes/documents.html:70 -#: konova/forms/modals/document_form.py:139 +#: konova/forms/modals/document_form.py:141 msgid "Edit document" msgstr "Dokument bearbeiten" @@ -1281,14 +1278,14 @@ msgstr "Daten zu den verantwortlichen Stellen" msgid "Compensations - Overview" msgstr "Kompensationen - Übersicht" -#: compensation/views/compensation/compensation.py:177 -#: konova/utils/message_templates.py:38 +#: compensation/views/compensation/compensation.py:182 +#: konova/utils/message_templates.py:40 msgid "Compensation {} edited" msgstr "Kompensation {} bearbeitet" -#: compensation/views/compensation/compensation.py:187 -#: compensation/views/eco_account/eco_account.py:161 ema/views/ema.py:220 -#: intervention/views/intervention.py:243 +#: compensation/views/compensation/compensation.py:197 +#: compensation/views/eco_account/eco_account.py:171 ema/views/ema.py:231 +#: intervention/views/intervention.py:253 msgid "Edit {}" msgstr "Bearbeite {}" @@ -1306,15 +1303,15 @@ msgstr "Ökokonten - Übersicht" msgid "Eco-Account {} added" msgstr "Ökokonto {} hinzugefügt" -#: compensation/views/eco_account/eco_account.py:151 +#: compensation/views/eco_account/eco_account.py:156 msgid "Eco-Account {} edited" msgstr "Ökokonto {} bearbeitet" -#: compensation/views/eco_account/eco_account.py:275 +#: compensation/views/eco_account/eco_account.py:285 msgid "Eco-account removed" msgstr "Ökokonto entfernt" -#: ema/forms.py:42 ema/views/ema.py:96 +#: ema/forms.py:42 ema/views/ema.py:102 msgid "New EMA" msgstr "Neue EMA hinzufügen" @@ -1350,78 +1347,78 @@ msgstr "EMAs - Übersicht" msgid "EMA {} added" msgstr "EMA {} hinzugefügt" -#: ema/views/ema.py:210 +#: ema/views/ema.py:216 msgid "EMA {} edited" msgstr "EMA {} bearbeitet" -#: ema/views/ema.py:244 +#: ema/views/ema.py:255 msgid "EMA removed" msgstr "EMA entfernt" -#: intervention/forms/intervention.py:48 +#: intervention/forms/intervention.py:49 msgid "Construction XY; Location ABC" msgstr "Bauvorhaben XY; Flur ABC" -#: intervention/forms/intervention.py:54 +#: intervention/forms/intervention.py:55 #: intervention/templates/intervention/detail/view.html:35 #: intervention/templates/intervention/report/report.html:16 #: intervention/utils/quality.py:95 msgid "Process type" msgstr "Verfahrenstyp" -#: intervention/forms/intervention.py:73 +#: intervention/forms/intervention.py:74 msgid "Multiple selection possible" msgstr "Mehrfachauswahl möglich" -#: intervention/forms/intervention.py:88 +#: intervention/forms/intervention.py:89 #: intervention/templates/intervention/detail/view.html:48 #: intervention/templates/intervention/report/report.html:29 #: intervention/utils/quality.py:59 konova/filters/mixins/office.py:66 msgid "Registration office" msgstr "Zulassungsbehörde" -#: intervention/forms/intervention.py:120 +#: intervention/forms/intervention.py:121 #: intervention/templates/intervention/detail/view.html:52 #: intervention/templates/intervention/report/report.html:33 #: intervention/utils/quality.py:52 msgid "Registration office file number" msgstr "Aktenzeichen Zulassungsbehörde" -#: intervention/forms/intervention.py:126 +#: intervention/forms/intervention.py:127 msgid "ZB-123/ABC.456" msgstr "" -#: intervention/forms/intervention.py:144 +#: intervention/forms/intervention.py:145 msgid "Intervention handler type" msgstr "Art des Eingriffsverursachers" -#: intervention/forms/intervention.py:146 +#: intervention/forms/intervention.py:147 msgid "What type of handler is responsible for the intervention?" msgstr "Zu welcher Kategorie dieser Eingriffsverursacher gehört" -#: intervention/forms/intervention.py:161 +#: intervention/forms/intervention.py:162 msgid "Intervention handler detail" msgstr "Detailangabe zum Eingriffsverursacher" -#: intervention/forms/intervention.py:175 +#: intervention/forms/intervention.py:176 #: intervention/templates/intervention/detail/view.html:101 #: intervention/templates/intervention/report/report.html:81 #: intervention/utils/quality.py:86 msgid "Registration date" msgstr "Datum Zulassung bzw. Satzungsbeschluss" -#: intervention/forms/intervention.py:187 +#: intervention/forms/intervention.py:189 #: intervention/templates/intervention/detail/view.html:105 #: intervention/templates/intervention/report/report.html:85 msgid "Binding on" msgstr "Datum Bestandskraft bzw. Rechtskraft" -#: intervention/forms/intervention.py:213 -#: intervention/views/intervention.py:100 +#: intervention/forms/intervention.py:216 +#: intervention/views/intervention.py:105 msgid "New intervention" msgstr "Neuer Eingriff" -#: intervention/forms/intervention.py:303 +#: intervention/forms/intervention.py:306 msgid "Edit intervention" msgstr "Eingriff bearbeiten" @@ -1486,25 +1483,25 @@ msgstr "" "Das Ökokonto {} hat für eine Abbuchung von {} m² nicht ausreichend " "Restfläche. Es stehen noch {} m² zur Verfügung." -#: intervention/forms/modals/revocation.py:21 +#: intervention/forms/modals/revocation.py:22 msgid "Date of revocation" msgstr "Datum des Widerspruchs" -#: intervention/forms/modals/revocation.py:32 +#: intervention/forms/modals/revocation.py:34 #: intervention/templates/intervention/detail/includes/revocation.html:35 msgid "Document" msgstr "Dokument" -#: intervention/forms/modals/revocation.py:35 +#: intervention/forms/modals/revocation.py:37 msgid "Must be smaller than 15 Mb" msgstr "Muss kleiner als 15 Mb sein" -#: intervention/forms/modals/revocation.py:60 +#: intervention/forms/modals/revocation.py:62 #: intervention/templates/intervention/detail/includes/revocation.html:18 msgid "Add revocation" msgstr "Widerspruch hinzufügen" -#: intervention/forms/modals/revocation.py:78 +#: intervention/forms/modals/revocation.py:80 #: intervention/templates/intervention/detail/includes/revocation.html:69 msgid "Edit revocation" msgstr "Widerspruch bearbeiten" @@ -1657,11 +1654,11 @@ msgstr "Eingriffe - Übersicht" msgid "Intervention {} added" msgstr "Eingriff {} hinzugefügt" -#: intervention/views/intervention.py:231 +#: intervention/views/intervention.py:236 msgid "Intervention {} edited" msgstr "Eingriff {} bearbeitet" -#: intervention/views/intervention.py:268 +#: intervention/views/intervention.py:278 msgid "{} removed" msgstr "{} entfernt" @@ -1779,30 +1776,30 @@ msgstr "Speichern" msgid "Not editable" msgstr "Nicht editierbar" -#: konova/forms/geometry_form.py:30 konova/utils/quality.py:44 +#: konova/forms/geometry_form.py:32 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:99 +#: konova/forms/geometry_form.py:101 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/modals/document_form.py:36 +#: konova/forms/modals/document_form.py:37 msgid "When has this file been created? Important for photos." msgstr "Wann wurde diese Datei erstellt oder das Foto aufgenommen?" -#: konova/forms/modals/document_form.py:47 +#: konova/forms/modals/document_form.py:49 #: venv/lib/python3.7/site-packages/django/db/models/fields/files.py:231 msgid "File" msgstr "Datei" -#: konova/forms/modals/document_form.py:49 +#: konova/forms/modals/document_form.py:51 msgid "Allowed formats: pdf, jpg, png. Max size 15 MB." msgstr "Formate: pdf, jpg, png. Maximal 15 MB." -#: konova/forms/modals/document_form.py:114 +#: konova/forms/modals/document_form.py:116 msgid "Added document" msgstr "Dokument hinzugefügt" @@ -1839,15 +1836,15 @@ msgstr "Löschen" msgid "Are you sure?" msgstr "Sind Sie sicher?" -#: konova/forms/modals/resubmission_form.py:23 +#: konova/forms/modals/resubmission_form.py:24 msgid "When do you want to be reminded?" msgstr "Wann wollen Sie erinnert werden?" -#: konova/forms/modals/resubmission_form.py:50 +#: konova/forms/modals/resubmission_form.py:52 msgid "Set your resubmission for this entry." msgstr "Setzen Sie eine Wiedervorlage für diesen Eintrag." -#: konova/forms/modals/resubmission_form.py:71 +#: konova/forms/modals/resubmission_form.py:73 msgid "The date should be in the future" msgstr "Das Datum sollte in der Zukunft liegen" @@ -2021,32 +2018,32 @@ msgstr "Anfrage für neuen API Token" msgid "Resubmission - {}" msgstr "Wiedervorlage - {}" -#: konova/utils/message_templates.py:10 +#: konova/utils/message_templates.py:12 msgid "no further details" msgstr "keine weitere Angabe" -#: konova/utils/message_templates.py:11 +#: konova/utils/message_templates.py:13 #: venv/lib/python3.7/site-packages/django/forms/widgets.py:709 msgid "Unknown" msgstr "Unbekannt" -#: konova/utils/message_templates.py:12 +#: konova/utils/message_templates.py:14 msgid "Ungrouped" msgstr "Ohne Zuordnung" -#: konova/utils/message_templates.py:13 +#: konova/utils/message_templates.py:15 msgid "There was an error on this form." msgstr "Es gab einen Fehler im Formular." -#: konova/utils/message_templates.py:14 +#: konova/utils/message_templates.py:16 msgid "Invalid parameters" msgstr "Parameter ungültig" -#: konova/utils/message_templates.py:15 +#: konova/utils/message_templates.py:17 msgid "There are errors in this intervention." msgstr "Es liegen Fehler in diesem Eingriff vor:" -#: konova/utils/message_templates.py:16 +#: konova/utils/message_templates.py:18 msgid "" "The identifier '{}' had to be changed to '{}' since another entry has been " "added in the meanwhile, which uses this identifier" @@ -2054,33 +2051,33 @@ msgstr "" "Die Kennung '{}' musste zu '{}' geändert werden, da ein anderer Eintrag in " "der Zwischenzeit angelegt wurde, welcher diese Kennung nun bereits verwendet" -#: konova/utils/message_templates.py:17 +#: konova/utils/message_templates.py:19 msgid "" "Only conservation or registration office users are allowed to remove entries." msgstr "" "Nur Mitarbeiter der Naturschutz- oder Zulassungsbehördengruppe dürfen " "Einträge entfernen" -#: konova/utils/message_templates.py:18 +#: konova/utils/message_templates.py:20 msgid "You need to be part of another user group." msgstr "Hierfür müssen Sie einer anderen Nutzergruppe angehören!" -#: konova/utils/message_templates.py:19 +#: konova/utils/message_templates.py:21 msgid "Status of Checked and Recorded reseted" msgstr "'Geprüft'/'Verzeichnet' wurde zurückgesetzt" -#: konova/utils/message_templates.py:20 +#: konova/utils/message_templates.py:22 msgid "" "Entry is recorded. To edit data, the entry first needs to be unrecorded." msgstr "" "Eintrag ist verzeichnet. Um Daten zu bearbeiten, muss der Eintrag erst " "entzeichnet werden." -#: konova/utils/message_templates.py:23 +#: konova/utils/message_templates.py:25 msgid "This data is not shared with you" msgstr "Diese Daten sind für Sie nicht freigegeben" -#: konova/utils/message_templates.py:24 +#: konova/utils/message_templates.py:26 msgid "" "Remember: This data has not been shared with you, yet. This means you can " "only read but can not edit or perform any actions like running a check or " @@ -2090,11 +2087,11 @@ msgstr "" "bedeutet, dass Sie nur lesenden Zugriff hierauf haben und weder bearbeiten, " "noch Prüfungen durchführen oder verzeichnen können." -#: konova/utils/message_templates.py:25 +#: konova/utils/message_templates.py:27 msgid "Share settings updated" msgstr "Freigabe Einstellungen aktualisiert" -#: konova/utils/message_templates.py:26 +#: konova/utils/message_templates.py:28 msgid "" "Do not forget to share your entry! Currently you are the only one having " "shared access." @@ -2102,15 +2099,15 @@ msgstr "" "Denken Sie daran Ihren Eintrag freizugeben! Aktuell haben nur Sie eine " "Freigabe hierauf." -#: konova/utils/message_templates.py:29 +#: konova/utils/message_templates.py:31 msgid "Unsupported file type" msgstr "Dateiformat nicht unterstützt" -#: konova/utils/message_templates.py:30 +#: konova/utils/message_templates.py:32 msgid "File too large" msgstr "Datei zu groß" -#: konova/utils/message_templates.py:33 +#: konova/utils/message_templates.py:35 msgid "" "Action canceled. Eco account is recorded or deductions exist. Only " "conservation office member can perform this action." @@ -2118,136 +2115,144 @@ msgstr "" "Aktion abgebrochen. Ökokonto ist bereits verzeichnet oder Abbuchungen liegen " "vor. Nur Eintragungsstellennutzer können diese Aktion jetzt durchführen." -#: konova/utils/message_templates.py:36 +#: konova/utils/message_templates.py:38 msgid "Compensation {} added" msgstr "Kompensation {} hinzugefügt" -#: konova/utils/message_templates.py:37 +#: konova/utils/message_templates.py:39 msgid "Compensation {} removed" msgstr "Kompensation {} entfernt" -#: konova/utils/message_templates.py:39 +#: konova/utils/message_templates.py:41 msgid "Added compensation action" msgstr "Maßnahme hinzugefügt" -#: konova/utils/message_templates.py:40 +#: konova/utils/message_templates.py:42 msgid "Added compensation state" msgstr "Zustand hinzugefügt" -#: konova/utils/message_templates.py:43 +#: konova/utils/message_templates.py:45 msgid "State removed" msgstr "Zustand gelöscht" -#: konova/utils/message_templates.py:44 +#: konova/utils/message_templates.py:46 msgid "State edited" msgstr "Zustand bearbeitet" -#: konova/utils/message_templates.py:45 +#: konova/utils/message_templates.py:47 msgid "State added" msgstr "Zustand hinzugefügt" -#: konova/utils/message_templates.py:48 +#: konova/utils/message_templates.py:50 msgid "Action added" msgstr "Maßnahme hinzugefügt" -#: konova/utils/message_templates.py:49 +#: konova/utils/message_templates.py:51 msgid "Action edited" msgstr "Maßnahme bearbeitet" -#: konova/utils/message_templates.py:50 +#: konova/utils/message_templates.py:52 msgid "Action removed" msgstr "Maßnahme entfernt" -#: konova/utils/message_templates.py:53 +#: konova/utils/message_templates.py:55 msgid "Deduction added" msgstr "Abbuchung hinzugefügt" -#: konova/utils/message_templates.py:54 +#: konova/utils/message_templates.py:56 msgid "Deduction edited" msgstr "Abbuchung bearbeitet" -#: konova/utils/message_templates.py:55 +#: konova/utils/message_templates.py:57 msgid "Deduction removed" msgstr "Abbuchung entfernt" -#: konova/utils/message_templates.py:56 +#: konova/utils/message_templates.py:58 msgid "Unknown deduction" msgstr "Unbekannte Abbuchung" -#: konova/utils/message_templates.py:59 +#: konova/utils/message_templates.py:61 msgid "Deadline added" msgstr "Frist/Termin hinzugefügt" -#: konova/utils/message_templates.py:60 +#: konova/utils/message_templates.py:62 msgid "Deadline edited" msgstr "Frist/Termin bearbeitet" -#: konova/utils/message_templates.py:61 +#: konova/utils/message_templates.py:63 msgid "Deadline removed" msgstr "Frist/Termin gelöscht" -#: konova/utils/message_templates.py:64 +#: konova/utils/message_templates.py:66 msgid "Payment added" msgstr "Zahlung hinzugefügt" -#: konova/utils/message_templates.py:65 +#: konova/utils/message_templates.py:67 msgid "Payment edited" msgstr "Zahlung bearbeitet" -#: konova/utils/message_templates.py:66 +#: konova/utils/message_templates.py:68 msgid "Payment removed" msgstr "Zahlung gelöscht" -#: konova/utils/message_templates.py:69 +#: konova/utils/message_templates.py:71 msgid "Revocation added" msgstr "Widerspruch hinzugefügt" -#: konova/utils/message_templates.py:70 +#: konova/utils/message_templates.py:72 msgid "Revocation edited" msgstr "Widerspruch bearbeitet" -#: konova/utils/message_templates.py:71 +#: konova/utils/message_templates.py:73 msgid "Revocation removed" msgstr "Widerspruch entfernt" -#: konova/utils/message_templates.py:74 +#: konova/utils/message_templates.py:76 msgid "Document '{}' deleted" msgstr "Dokument '{}' gelöscht" -#: konova/utils/message_templates.py:75 +#: konova/utils/message_templates.py:77 msgid "Document added" msgstr "Dokument hinzugefügt" -#: konova/utils/message_templates.py:76 +#: konova/utils/message_templates.py:78 msgid "Document edited" msgstr "Dokument bearbeitet" -#: konova/utils/message_templates.py:79 +#: konova/utils/message_templates.py:81 msgid "Edited general data" msgstr "Allgemeine Daten bearbeitet" -#: konova/utils/message_templates.py:80 +#: konova/utils/message_templates.py:82 msgid "Added deadline" msgstr "Frist/Termin hinzugefügt" -#: konova/utils/message_templates.py:83 +#: konova/utils/message_templates.py:85 msgid "Geometry conflict detected with {}" msgstr "Geometriekonflikt mit folgenden Einträgen erkannt: {}" #: konova/utils/message_templates.py:86 +msgid "" +"The geometry contained more than {} vertices. It had to be simplified to " +"match the allowed limit of {} vertices." +msgstr "" +"Die Geometrie enthielt mehr als {} Eckpunkte. Sie musste vereinfacht werden um die Obergrenze von {} " +"erlaubten Eckpunkten einzuhalten." + +#: konova/utils/message_templates.py:89 msgid "This intervention has {} revocations" msgstr "Dem Eingriff liegen {} Widersprüche vor" -#: konova/utils/message_templates.py:89 +#: konova/utils/message_templates.py:92 msgid "Checked on {} by {}" msgstr "Am {} von {} geprüft worden" -#: konova/utils/message_templates.py:90 +#: konova/utils/message_templates.py:93 msgid "Data has changed since last check on {} by {}" msgstr "" "Daten wurden nach der letzten Prüfung geändert. Letzte Prüfung am {} durch {}" -#: konova/utils/message_templates.py:91 +#: konova/utils/message_templates.py:94 msgid "Current data not checked yet" msgstr "Momentane Daten noch nicht geprüft" @@ -2275,6 +2280,12 @@ msgstr "Für Sie freigegeben - Datensatz kann bearbeitet werden" msgid "Access not granted" msgstr "Nicht freigegeben - Datensatz nur lesbar" +#: konova/utils/validators.py:26 +msgid "This date is unrealistic. Please enter the correct date (>1950)." +msgstr "" +"Dieses Datum ist unrealistisch. Geben Sie bitte das korrekte Datum ein " +"(>1950)." + #: konova/views/home.py:74 templates/navbars/navbar.html:16 msgid "Home" msgstr "Home" -- 2.45.2