diff --git a/compensation/models/compensation.py b/compensation/models/compensation.py index 703f7cd4..65a62b6e 100644 --- a/compensation/models/compensation.py +++ b/compensation/models/compensation.py @@ -170,7 +170,7 @@ class AbstractCompensation(BaseObject, GeoReferencedMixin): """ if not self.is_shared_with(request.user): messages.info(request, DATA_UNSHARED_EXPLANATION) - request = self._set_geometry_conflict_message(request) + request = self.set_geometry_conflict_message(request) return request diff --git a/compensation/templates/compensation/detail/compensation/view.html b/compensation/templates/compensation/detail/compensation/view.html index 581bf799..c210986a 100644 --- a/compensation/templates/compensation/detail/compensation/view.html +++ b/compensation/templates/compensation/detail/compensation/view.html @@ -110,7 +110,10 @@ {% include 'map/geom_form.html' %}
- {% include 'konova/comment_card.html' %} + {% include 'konova/includes/parcels.html' %} +
+
+ {% include 'konova/includes/comment_card.html' %}
diff --git a/compensation/templates/compensation/detail/eco_account/view.html b/compensation/templates/compensation/detail/eco_account/view.html index 717d6d53..493a9292 100644 --- a/compensation/templates/compensation/detail/eco_account/view.html +++ b/compensation/templates/compensation/detail/eco_account/view.html @@ -93,7 +93,10 @@ {% include 'map/geom_form.html' %}
- {% include 'konova/comment_card.html' %} + {% include 'konova/includes/parcels.html' %} +
+
+ {% include 'konova/includes/comment_card.html' %}
diff --git a/compensation/views/compensation.py b/compensation/views/compensation.py index b5efc984..bfd7ba62 100644 --- a/compensation/views/compensation.py +++ b/compensation/views/compensation.py @@ -170,6 +170,7 @@ def detail_view(request: HttpRequest, id: str): template = "compensation/detail/compensation/view.html" comp = get_object_or_404(Compensation, id=id) geom_form = SimpleGeomForm(instance=comp) + parcels = comp.get_underlying_parcels() _user = request.user is_data_shared = comp.intervention.is_shared_with(_user) @@ -189,6 +190,7 @@ def detail_view(request: HttpRequest, id: str): context = { "obj": comp, "geom_form": geom_form, + "parcels": parcels, "has_access": is_data_shared, "actions": actions, "before_states": before_states, diff --git a/compensation/views/eco_account.py b/compensation/views/eco_account.py index 7b4c27e2..118a9f6e 100644 --- a/compensation/views/eco_account.py +++ b/compensation/views/eco_account.py @@ -181,6 +181,7 @@ def detail_view(request: HttpRequest, id: str): id=id ) geom_form = SimpleGeomForm(instance=acc) + parcels = acc.get_underlying_parcels() _user = request.user is_data_shared = acc.is_shared_with(_user) @@ -207,6 +208,7 @@ def detail_view(request: HttpRequest, id: str): context = { "obj": acc, "geom_form": geom_form, + "parcels": parcels, "has_access": is_data_shared, "before_states": before_states, "after_states": after_states, diff --git a/ema/models/ema.py b/ema/models/ema.py index 8bc4ac65..2c61a241 100644 --- a/ema/models/ema.py +++ b/ema/models/ema.py @@ -106,7 +106,7 @@ class Ema(AbstractCompensation, ShareableObjectMixin, RecordableObjectMixin): """ if not self.is_shared_with(request.user): messages.info(request, DATA_UNSHARED_EXPLANATION) - self._set_geometry_conflict_message(request) + self.set_geometry_conflict_message(request) return request diff --git a/ema/templates/ema/detail/view.html b/ema/templates/ema/detail/view.html index 6635569a..230363b4 100644 --- a/ema/templates/ema/detail/view.html +++ b/ema/templates/ema/detail/view.html @@ -77,7 +77,15 @@
+
{% include 'map/geom_form.html' %} +
+
+ {% include 'konova/includes/parcels.html' %} +
+
+ {% include 'konova/includes/comment_card.html' %} +

diff --git a/ema/views.py b/ema/views.py index dc2fa49a..fc94686b 100644 --- a/ema/views.py +++ b/ema/views.py @@ -125,6 +125,7 @@ def detail_view(request: HttpRequest, id: str): ema = get_object_or_404(Ema, id=id, deleted=None) geom_form = SimpleGeomForm(instance=ema) + parcels = ema.get_underlying_parcels() _user = request.user is_data_shared = ema.is_shared_with(_user) @@ -143,6 +144,7 @@ def detail_view(request: HttpRequest, id: str): context = { "obj": ema, "geom_form": geom_form, + "parcels": parcels, "has_access": is_data_shared, "before_states": before_states, "after_states": after_states, diff --git a/intervention/models/intervention.py b/intervention/models/intervention.py index a31eb9a3..b54bbcf5 100644 --- a/intervention/models/intervention.py +++ b/intervention/models/intervention.py @@ -278,7 +278,7 @@ class Intervention(BaseObject, ShareableObjectMixin, RecordableObjectMixin, Chec """ if not self.is_shared_with(request.user): messages.info(request, DATA_UNSHARED_EXPLANATION) - request = self._set_geometry_conflict_message(request) + request = self.set_geometry_conflict_message(request) return request diff --git a/intervention/templates/intervention/detail/view.html b/intervention/templates/intervention/detail/view.html index 408b3939..e51f3ecd 100644 --- a/intervention/templates/intervention/detail/view.html +++ b/intervention/templates/intervention/detail/view.html @@ -127,7 +127,10 @@ {% include 'map/geom_form.html' %}
- {% include 'konova/comment_card.html' %} + {% include 'konova/includes/parcels.html' %} +
+
+ {% include 'konova/includes/comment_card.html' %}
diff --git a/intervention/views.py b/intervention/views.py index 60d75249..d18dce23 100644 --- a/intervention/views.py +++ b/intervention/views.py @@ -236,6 +236,8 @@ def detail_view(request: HttpRequest, id: str): instance=intervention, ) + parcels = intervention.get_underlying_parcels() + # Inform user about revocation if intervention.legal.revocations.exists(): messages.error( @@ -249,6 +251,7 @@ def detail_view(request: HttpRequest, id: str): "compensations": compensations, "has_access": is_data_shared, "geom_form": geom_form, + "parcels": parcels, "is_default_member": in_group(_user, DEFAULT_GROUP), "is_zb_member": in_group(_user, ZB_GROUP), "is_ets_member": in_group(_user, ETS_GROUP), diff --git a/konova/admin.py b/konova/admin.py index 23e29a65..02568de9 100644 --- a/konova/admin.py +++ b/konova/admin.py @@ -20,6 +20,7 @@ class GeometryAdmin(admin.ModelAdmin): class ParcelAdmin(admin.ModelAdmin): list_display = [ "id", + "gmrkng", "flr", "flrstck_nnr", "flrstck_zhlr", @@ -30,7 +31,6 @@ class ParcelAdmin(admin.ModelAdmin): class DistrictAdmin(admin.ModelAdmin): list_display = [ "id", - "gmrkng", "gmnd", "krs", ] diff --git a/konova/models/geometry.py b/konova/models/geometry.py index e9d8c61c..aad39d6f 100644 --- a/konova/models/geometry.py +++ b/konova/models/geometry.py @@ -111,12 +111,12 @@ class Geometry(BaseResource): for result in fetched_parcels: fetched_parcel = result[typename] parcel_obj = Parcel.objects.get_or_create( + gmrkng=fetched_parcel["ave:gemarkung"], flr=fetched_parcel["ave:flur"], flrstck_nnr=fetched_parcel['ave:flstnrnen'], flrstck_zhlr=fetched_parcel['ave:flstnrzae'], )[0] district = District.objects.get_or_create( - gmrkng=fetched_parcel["ave:gemarkung"], gmnd=fetched_parcel["ave:gemeinde"], krs=fetched_parcel["ave:kreis"], )[0] @@ -127,6 +127,20 @@ class Geometry(BaseResource): self.parcels.set(underlying_parcels) + def get_underlying_parcels(self): + """ Getter for related parcels and their districts + + Returns: + parcels (QuerySet): The related parcels as queryset + """ + parcels = self.parcels.all().prefetch_related( + "district" + ).order_by( + "gmrkng", + ) + + return parcels + class GeometryConflict(UuidModel): """ diff --git a/konova/models/object.py b/konova/models/object.py index ded39ad1..49c1f4e0 100644 --- a/konova/models/object.py +++ b/konova/models/object.py @@ -420,13 +420,29 @@ class GeoReferencedMixin(models.Model): class Meta: abstract = True - def _set_geometry_conflict_message(self, request: HttpRequest): + def get_underlying_parcels(self): + """ Getter for related parcels + + Returns: + parcels (Iterable): An empty list or a Queryset + """ + if self.geometry is not None: + return self.geometry.get_underlying_parcels() + else: + return [] + + def set_geometry_conflict_message(self, request: HttpRequest): + if self.geometry is None: + return request + instance_objs = [] add_message = False conflicts = self.geometry.conflicts_geometries.all() + for conflict in conflicts: instance_objs += conflict.affected_geometry.get_data_objects() add_message = True + conflicts = self.geometry.conflicted_by_geometries.all() for conflict in conflicts: instance_objs += conflict.conflicting_geometry.get_data_objects() diff --git a/konova/models/parcel.py b/konova/models/parcel.py index 35f5978b..487225e6 100644 --- a/konova/models/parcel.py +++ b/konova/models/parcel.py @@ -24,6 +24,12 @@ class Parcel(UuidModel): """ geometries = models.ManyToManyField("konova.Geometry", related_name="parcels", blank=True) district = models.ForeignKey("konova.District", on_delete=models.SET_NULL, null=True, blank=True, related_name="parcels") + gmrkng = models.CharField( + max_length=1000, + help_text="Gemarkung", + null=True, + blank=True, + ) flrstck_nnr = models.CharField( max_length=1000, help_text="Flurstücksnenner", @@ -45,7 +51,7 @@ class Parcel(UuidModel): updated_on = models.DateTimeField(auto_now_add=True) def __str__(self): - return f"{self.flr} | {self.flrstck_nnr} | {self.flrstck_zhlr}" + return f"{self.gmrkng} | {self.flr} | {self.flrstck_zhlr} | {self.flrstck_nnr}" class District(UuidModel): @@ -56,12 +62,6 @@ class District(UuidModel): District. """ - gmrkng = models.CharField( - max_length=1000, - help_text="Gemarkung", - null=True, - blank=True, - ) gmnd = models.CharField( max_length=1000, help_text="Gemeinde", @@ -76,4 +76,4 @@ class District(UuidModel): ) def __str__(self): - return f"{self.gmrkng} | {self.gmnd} | {self.krs}" + return f"{self.gmnd} | {self.krs}" diff --git a/konova/templates/konova/comment_card.html b/konova/templates/konova/includes/comment_card.html similarity index 100% rename from konova/templates/konova/comment_card.html rename to konova/templates/konova/includes/comment_card.html diff --git a/konova/templates/konova/includes/parcels.html b/konova/templates/konova/includes/parcels.html new file mode 100644 index 00000000..e15fa3d0 --- /dev/null +++ b/konova/templates/konova/includes/parcels.html @@ -0,0 +1,29 @@ +{% load i18n %} +
+

{% trans 'Spatial reference' %}

+
+
+ + + + + + + + + + + + {% for parcel in parcels %} + + + + + + + + {% endfor %} + + +
{% trans 'Kreis' %}{% trans 'Gemarkung' %}{% trans 'Parcel' %}{% trans 'Parcel counter' %}{% trans 'Parcel number' %}
{{parcel.district.krs|default_if_none:"-"}}{{parcel.gmrkng|default_if_none:"-"}}{{parcel.flr|default_if_none:"-"}}{{parcel.flrstck_zhlr|default_if_none:"-"}}{{parcel.flrstck_nnr|default_if_none:"-"}}
+
\ No newline at end of file diff --git a/konova/utils/wfs/spatial.py b/konova/utils/wfs/spatial.py index ed64f3cf..6d0ddda9 100644 --- a/konova/utils/wfs/spatial.py +++ b/konova/utils/wfs/spatial.py @@ -22,7 +22,6 @@ class AbstractWFSFetcher: # base_url represents not the capabilities url but the parameter-free base url base_url = None version = None - wfs = None auth_user = None auth_pw = None auth_digest_obj = None diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo index bd3e82d8..b03903cb 100644 Binary files a/locale/de/LC_MESSAGES/django.mo and b/locale/de/LC_MESSAGES/django.mo differ diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po index 04aefdf0..fbfccf67 100644 --- a/locale/de/LC_MESSAGES/django.po +++ b/locale/de/LC_MESSAGES/django.po @@ -11,15 +11,15 @@ #: intervention/forms/forms.py:52 intervention/forms/forms.py:154 #: intervention/forms/forms.py:166 intervention/forms/modalForms.py:125 #: intervention/forms/modalForms.py:138 intervention/forms/modalForms.py:151 -#: konova/forms.py:139 konova/forms.py:240 konova/forms.py:308 -#: konova/forms.py:335 konova/forms.py:345 konova/forms.py:358 -#: konova/forms.py:370 konova/forms.py:388 user/forms.py:38 +#: konova/forms.py:139 konova/forms.py:240 konova/forms.py:309 +#: konova/forms.py:336 konova/forms.py:346 konova/forms.py:359 +#: konova/forms.py:371 konova/forms.py:389 user/forms.py:38 #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-16 09:17+0100\n" +"POT-Creation-Date: 2022-01-05 14:04+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -329,7 +329,7 @@ msgstr "Automatisch generiert" #: intervention/templates/intervention/detail/includes/documents.html:28 #: intervention/templates/intervention/detail/view.html:31 #: intervention/templates/intervention/report/report.html:12 -#: konova/forms.py:334 +#: konova/forms.py:335 msgid "Title" msgstr "Bezeichnung" @@ -356,7 +356,7 @@ msgstr "Kompensation XY; Flur ABC" #: intervention/templates/intervention/detail/includes/documents.html:31 #: intervention/templates/intervention/detail/includes/payments.html:34 #: intervention/templates/intervention/detail/includes/revocation.html:38 -#: konova/forms.py:369 konova/templates/konova/comment_card.html:16 +#: konova/forms.py:370 konova/templates/konova/includes/comment_card.html:16 msgid "Comment" msgstr "Kommentar" @@ -472,7 +472,7 @@ msgstr "Zahlung wird an diesem Datum erwartet" #: compensation/forms/modalForms.py:62 compensation/forms/modalForms.py:239 #: compensation/forms/modalForms.py:317 intervention/forms/modalForms.py:152 -#: konova/forms.py:371 +#: konova/forms.py:372 msgid "Additional comment, maximum {} letters" msgstr "Zusätzlicher Kommentar, maximal {} Zeichen" @@ -793,7 +793,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.py:387 +#: konova/forms.py:388 msgid "Add new document" msgstr "Neues Dokument hinzufügen" @@ -1056,41 +1056,41 @@ msgstr "Kompensation {} hinzugefügt" msgid "Compensation {} edited" msgstr "Kompensation {} bearbeitet" -#: compensation/views/compensation.py:228 compensation/views/eco_account.py:307 -#: ema/views.py:181 intervention/views.py:474 +#: compensation/views/compensation.py:230 compensation/views/eco_account.py:309 +#: ema/views.py:181 intervention/views.py:477 msgid "Log" msgstr "Log" -#: compensation/views/compensation.py:251 +#: compensation/views/compensation.py:253 msgid "Compensation removed" msgstr "Kompensation entfernt" -#: compensation/views/compensation.py:272 compensation/views/eco_account.py:459 +#: compensation/views/compensation.py:274 compensation/views/eco_account.py:461 #: ema/views.py:348 intervention/views.py:129 msgid "Document added" msgstr "Dokument hinzugefügt" -#: compensation/views/compensation.py:341 compensation/views/eco_account.py:353 +#: compensation/views/compensation.py:343 compensation/views/eco_account.py:355 #: ema/views.py:286 msgid "State added" msgstr "Zustand hinzugefügt" -#: compensation/views/compensation.py:362 compensation/views/eco_account.py:374 +#: compensation/views/compensation.py:364 compensation/views/eco_account.py:376 #: ema/views.py:307 msgid "Action added" msgstr "Maßnahme hinzugefügt" -#: compensation/views/compensation.py:383 compensation/views/eco_account.py:439 +#: compensation/views/compensation.py:385 compensation/views/eco_account.py:441 #: ema/views.py:328 msgid "Deadline added" msgstr "Frist/Termin hinzugefügt" -#: compensation/views/compensation.py:405 compensation/views/eco_account.py:396 +#: compensation/views/compensation.py:407 compensation/views/eco_account.py:398 #: ema/views.py:418 msgid "State removed" msgstr "Zustand gelöscht" -#: compensation/views/compensation.py:427 compensation/views/eco_account.py:418 +#: compensation/views/compensation.py:429 compensation/views/eco_account.py:420 #: ema/views.py:440 msgid "Action removed" msgstr "Maßnahme entfernt" @@ -1103,45 +1103,45 @@ msgstr "Ökokonto {} hinzugefügt" msgid "Eco-Account {} edited" msgstr "Ökokonto {} bearbeitet" -#: compensation/views/eco_account.py:255 +#: compensation/views/eco_account.py:257 msgid "Eco-account removed" msgstr "Ökokonto entfernt" -#: compensation/views/eco_account.py:283 +#: compensation/views/eco_account.py:285 msgid "Deduction removed" msgstr "Abbuchung entfernt" -#: compensation/views/eco_account.py:328 ema/views.py:261 -#: intervention/views.py:516 +#: compensation/views/eco_account.py:330 ema/views.py:261 +#: intervention/views.py:519 msgid "{} unrecorded" msgstr "{} entzeichnet" -#: compensation/views/eco_account.py:328 ema/views.py:261 -#: intervention/views.py:516 +#: compensation/views/eco_account.py:330 ema/views.py:261 +#: intervention/views.py:519 msgid "{} recorded" msgstr "{} verzeichnet" -#: compensation/views/eco_account.py:529 intervention/views.py:497 +#: compensation/views/eco_account.py:531 intervention/views.py:500 msgid "Deduction added" msgstr "Abbuchung hinzugefügt" -#: compensation/views/eco_account.py:612 ema/views.py:516 -#: intervention/views.py:372 +#: compensation/views/eco_account.py:614 ema/views.py:516 +#: intervention/views.py:375 msgid "{} has already been shared with you" msgstr "{} wurde bereits für Sie freigegeben" -#: compensation/views/eco_account.py:617 ema/views.py:521 -#: intervention/views.py:377 +#: compensation/views/eco_account.py:619 ema/views.py:521 +#: intervention/views.py:380 msgid "{} has been shared with you" msgstr "{} ist nun für Sie freigegeben" -#: compensation/views/eco_account.py:624 ema/views.py:528 -#: intervention/views.py:384 +#: compensation/views/eco_account.py:626 ema/views.py:528 +#: intervention/views.py:387 msgid "Share link invalid" msgstr "Freigabelink ungültig" -#: compensation/views/eco_account.py:647 ema/views.py:551 -#: intervention/views.py:407 +#: compensation/views/eco_account.py:649 ema/views.py:551 +#: intervention/views.py:410 msgid "Share settings updated" msgstr "Freigabe Einstellungen aktualisiert" @@ -1333,7 +1333,7 @@ msgstr "Kompensationen und Zahlungen geprüft" msgid "Run check" msgstr "Prüfung vornehmen" -#: intervention/forms/modalForms.py:196 konova/forms.py:453 +#: intervention/forms/modalForms.py:196 konova/forms.py:454 msgid "" "I, {} {}, confirm that all necessary control steps have been performed by " "myself." @@ -1472,31 +1472,31 @@ msgstr "" msgid "Intervention {} added" msgstr "Eingriff {} hinzugefügt" -#: intervention/views.py:243 +#: intervention/views.py:245 msgid "This intervention has {} revocations" msgstr "Dem Eingriff liegen {} Widersprüche vor" -#: intervention/views.py:290 +#: intervention/views.py:293 msgid "Intervention {} edited" msgstr "Eingriff {} bearbeitet" -#: intervention/views.py:325 +#: intervention/views.py:328 msgid "{} removed" msgstr "{} entfernt" -#: intervention/views.py:346 +#: intervention/views.py:349 msgid "Revocation removed" msgstr "Widerspruch entfernt" -#: intervention/views.py:428 +#: intervention/views.py:431 msgid "Check performed" msgstr "Prüfung durchgeführt" -#: intervention/views.py:450 +#: intervention/views.py:453 msgid "Revocation added" msgstr "Widerspruch hinzugefügt" -#: intervention/views.py:521 +#: intervention/views.py:524 msgid "There are errors on this intervention:" msgstr "Es liegen Fehler in diesem Eingriff vor:" @@ -1525,11 +1525,11 @@ msgstr "Speichern" msgid "Not editable" msgstr "Nicht editierbar" -#: konova/forms.py:138 konova/forms.py:307 +#: konova/forms.py:138 konova/forms.py:308 msgid "Confirm" msgstr "Bestätige" -#: konova/forms.py:150 konova/forms.py:316 +#: konova/forms.py:150 konova/forms.py:317 msgid "Remove" msgstr "Löschen" @@ -1542,56 +1542,56 @@ msgstr "Sie sind dabei {} {} zu löschen" msgid "Geometry" msgstr "Geometrie" -#: konova/forms.py:317 +#: konova/forms.py:318 msgid "Are you sure?" msgstr "Sind Sie sicher?" -#: konova/forms.py:344 +#: konova/forms.py:345 msgid "Created on" msgstr "Erstellt" -#: konova/forms.py:346 +#: konova/forms.py:347 msgid "When has this file been created? Important for photos." msgstr "Wann wurde diese Datei erstellt oder das Foto aufgenommen?" -#: konova/forms.py:357 +#: konova/forms.py:358 #: venv/lib/python3.7/site-packages/django/db/models/fields/files.py:231 msgid "File" msgstr "Datei" -#: konova/forms.py:359 +#: konova/forms.py:360 msgid "Allowed formats: pdf, jpg, png. Max size 15 MB." msgstr "Formate: pdf, jpg, png. Maximal 15 MB." -#: konova/forms.py:405 +#: konova/forms.py:406 msgid "Unsupported file type" msgstr "Dateiformat nicht unterstützt" -#: konova/forms.py:412 +#: konova/forms.py:413 msgid "File too large" msgstr "Datei zu groß" -#: konova/forms.py:421 +#: konova/forms.py:422 msgid "Added document" msgstr "Dokument hinzugefügt" -#: konova/forms.py:444 +#: konova/forms.py:445 msgid "Confirm record" msgstr "Verzeichnen bestätigen" -#: konova/forms.py:452 +#: konova/forms.py:453 msgid "Record data" msgstr "Daten verzeichnen" -#: konova/forms.py:459 +#: konova/forms.py:460 msgid "Confirm unrecord" msgstr "Entzeichnen bestätigen" -#: konova/forms.py:460 +#: konova/forms.py:461 msgid "Unrecord data" msgstr "Daten entzeichnen" -#: konova/forms.py:461 +#: konova/forms.py:462 msgid "I, {} {}, confirm that this data must be unrecorded." msgstr "" "Ich, {} {}, bestätige, dass diese Daten wieder entzeichnet werden müssen." @@ -1663,6 +1663,30 @@ msgstr "Anzeigen" msgid "Deduct" msgstr "Abbuchen" +#: konova/templates/konova/includes/parcels.html:3 +msgid "Spatial reference" +msgstr "Raumreferenz" + +#: konova/templates/konova/includes/parcels.html:9 +msgid "Kreis" +msgstr "Kreis" + +#: konova/templates/konova/includes/parcels.html:10 +msgid "Gemarkung" +msgstr "Gemarkung" + +#: konova/templates/konova/includes/parcels.html:11 +msgid "Parcel" +msgstr "Flur" + +#: konova/templates/konova/includes/parcels.html:12 +msgid "Parcel counter" +msgstr "Flurstückzähler" + +#: konova/templates/konova/includes/parcels.html:13 +msgid "Parcel number" +msgstr "Flurstücknenner" + #: konova/templates/konova/widgets/generate-content-input.html:6 msgid "Generate new" msgstr "Neu generieren" @@ -1726,8 +1750,8 @@ msgid "" "Action canceled. Eco account is recorded or deductions exist. Only " "conservation office member can perform this action." msgstr "" -"Aktion abgebrochen. Ökokonto ist bereits verzeichnet oder Abbuchungen liegen vor. Nur " -"Eintragungsstellennutzer können diese Aktion jetzt durchführen." +"Aktion abgebrochen. Ökokonto ist bereits verzeichnet oder Abbuchungen liegen " +"vor. Nur Eintragungsstellennutzer können diese Aktion jetzt durchführen." #: konova/utils/message_templates.py:25 msgid "Edited general data"