#36 Quality checks

* adds AbstractQualityChecker as base for all quality checker instances
* adds InterventionQualityChecker, inheriting from AbstractQualityChecker
* adds functionality to InterventionQualityChecker
* adds/updates translations
pull/37/head
mpeltriaux 3 years ago
parent e2409fdbde
commit a5b1f68f62

@ -208,13 +208,13 @@ class RunCheckModalForm(BaseModalForm):
"""
super_result = super().is_valid()
# Perform check
msgs = self.instance.quality_check()
for msg in msgs:
checker = self.instance.quality_check()
for msg in checker.messages:
self.add_error(
"checked_intervention",
msg
)
return super_result and (len(msgs) == 0)
return super_result and checker.valid
def save(self):
""" Saving logic

@ -16,6 +16,7 @@ from codelist.models import KonovaCode
from codelist.settings import CODELIST_REGISTRATION_OFFICE_ID, CODELIST_CONSERVATION_OFFICE_ID, CODELIST_LAW_ID, \
CODELIST_PROCESS_TYPE_ID
from intervention.managers import InterventionManager
from intervention.utils.quality import InterventionQualityChecker
from konova.models import BaseObject, Geometry, UuidModel, BaseResource, AbstractDocument, \
generate_document_file_upload_path
from konova.settings import DEFAULT_SRID_RLP, LANIS_LINK_TEMPLATE, LANIS_ZOOM_LUT
@ -56,7 +57,6 @@ class ResponsibilityData(UuidModel):
conservation_file_number = models.CharField(max_length=1000, blank=True, null=True)
handler = models.CharField(max_length=500, null=True, blank=True, help_text="Refers to 'Eingriffsverursacher' or 'Maßnahmenträger'")
def __str__(self):
return "ZB: {} | ETS: {} | Handler: {}".format(
self.registration_office,
@ -296,62 +296,15 @@ class Intervention(BaseObject):
pass
super().delete(using, keep_parents)
def quality_check(self) -> list:
def quality_check(self) -> InterventionQualityChecker:
""" Quality check
Returns:
ret_msgs (list): Holds error messages
"""
ret_msgs = []
self._check_quality_responsible_data(ret_msgs)
self._check_quality_legal_data(ret_msgs)
# ToDo: Extend for more!
return ret_msgs
def _check_quality_responsible_data(self, ret_msgs: list):
""" Checks data quality of related ResponsibilityData
Args:
ret_msgs (dict): Holds error messages
Returns:
"""
try:
# Check for file numbers
if not self.responsible.registration_file_number or len(self.responsible.registration_file_number) == 0:
ret_msgs.append(_("Registration office file number missing"))
if not self.responsible.conservation_file_number or len(self.responsible.conservation_file_number) == 0:
ret_msgs.append(_("Conservation office file number missing"))
except AttributeError:
# responsible data not found
ret_msgs.append(_("Responsible data missing"))
def _check_quality_legal_data(self, ret_msgs: list):
""" Checks data quality of related LegalData
Args:
ret_msgs (dict): Holds error messages
Returns:
"""
try:
# Check for a revocation
if self.legal.revocation:
ret_msgs.append(_("Revocation exists"))
if self.legal.registration_date is None:
ret_msgs.append(_("Registration date missing"))
if self.legal.binding_date is None:
ret_msgs.append(_("Binding on missing"))
except AttributeError:
ret_msgs.append(_("Legal data missing"))
checker = InterventionQualityChecker(obj=self)
checker.run_check()
return checker
def get_LANIS_link(self) -> str:
""" Generates a link for LANIS depending on the geometry

@ -0,0 +1,112 @@
"""
Author: Michel Peltriaux
Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany
Contact: michel.peltriaux@sgdnord.rlp.de
Created on: 25.10.21
"""
from django.utils.translation import gettext_lazy as _
from konova.utils.quality import AbstractQualityChecker
class InterventionQualityChecker(AbstractQualityChecker):
def run_check(self):
""" Perform all defined data checks
Returns:
"""
self._check_responsible_data()
self._check_legal_data()
self._check_compensations()
self._check_geometry()
self.valid = len(self.messages) == 0
def _check_responsible_data(self):
""" Checks data quality of related ResponsibilityData
Args:
self.messages (dict): Holds error messages
Returns:
"""
try:
resp = self.obj.responsible
# Check for file numbers
if not resp.registration_file_number or len(resp.registration_file_number) == 0:
self._add_missing_attr_name(_("Registration office file number"))
if not resp.conservation_file_number or len(resp.conservation_file_number) == 0:
self._add_missing_attr_name(_("Conservation office file number"))
# Check for selected offices
if resp.registration_office is None:
self._add_missing_attr_name(_("Registration office"))
if resp.conservation_office is None:
self._add_missing_attr_name(_("Conservation office"))
if resp.handler is None:
self._add_missing_attr_name(_("Intervention handler"))
except AttributeError:
# responsible data not found
self._add_missing_attr_name(_("Responsible data"))
def _check_legal_data(self):
""" Checks data quality of related LegalData
Args:
self.messages (dict): Holds error messages
Returns:
"""
try:
legal = self.obj.legal
# Check for a revocation
if legal.revocation:
self.messages.append(_("Revocation exists"))
if legal.registration_date is None:
self._add_missing_attr_name(_("Registration date"))
if legal.binding_date is None:
self._add_missing_attr_name(_("Binding date"))
if legal.laws.count() == 0:
self._add_missing_attr_name(_("Laws"))
if legal.process_type is None:
self._add_missing_attr_name(_("Process type"))
except AttributeError:
self._add_missing_attr_name(_("Legal data"))
def _check_compensations(self):
""" Checks for compensation, deduction or payment
Returns:
"""
c_comps = self.obj.compensations.count()
c_pays = self.obj.payments.count()
c_deducs = self.obj.deductions.count()
c_all = c_comps + c_pays + c_deducs
if c_all == 0:
self.messages.append(
_("No compensation of any type found (Compensation, Payment, Deduction)")
)
def _check_geometry(self):
""" Checks on the geometry
Returns:
"""
try:
geometry_obj = self.obj.geometry
if geometry_obj.geom.empty:
self._add_missing_attr_name(_("Geometry"))
except AttributeError:
self._add_missing_attr_name(_("Geometry"))

@ -0,0 +1,34 @@
"""
Author: Michel Peltriaux
Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany
Contact: michel.peltriaux@sgdnord.rlp.de
Created on: 25.10.21
"""
from abc import abstractmethod
from django.utils.translation import gettext_lazy as _
from konova.models import BaseObject
class AbstractQualityChecker:
valid = False
messages = []
obj = None
class Meta:
abstract = True
def __init__(self, obj: BaseObject):
self.obj = obj
self.messages = []
self.valid = False
@abstractmethod
def run_check(self):
raise NotImplementedError
def _add_missing_attr_name(self, attr_name: str):
missing = _('missing')
self.messages.append(f"{attr_name} {missing}")

Binary file not shown.

@ -19,7 +19,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-10-22 13:14+0200\n"
"POT-Creation-Date: 2021-10-25 12:54+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -37,22 +37,23 @@ msgstr "Vom"
msgid "To"
msgstr "Bis"
#: analysis/forms.py:47 compensation/forms/forms.py:94
#: analysis/forms.py:47 compensation/forms/forms.py:93
#: compensation/templates/compensation/detail/eco_account/view.html:58
#: compensation/templates/compensation/report/eco_account/report.html:16
#: ema/templates/ema/detail/view.html:42
#: ema/templates/ema/report/report.html:16 intervention/forms/forms.py:101
#: intervention/templates/intervention/detail/view.html:56
#: intervention/templates/intervention/report/report.html:37
#: intervention/utils/quality.py:49
msgid "Conservation office"
msgstr "Eintragungsstelle"
#: analysis/forms.py:49 compensation/forms/forms.py:96
#: analysis/forms.py:49 compensation/forms/forms.py:95
msgid "Select the responsible office"
msgstr "Verantwortliche Stelle"
#: analysis/forms.py:58 compensation/forms/forms.py:68
#: compensation/forms/forms.py:105 compensation/forms/forms.py:156
#: analysis/forms.py:58 compensation/forms/forms.py:67
#: compensation/forms/forms.py:104 compensation/forms/forms.py:155
#: intervention/forms/forms.py:63 intervention/forms/forms.py:80
#: intervention/forms/forms.py:96 intervention/forms/forms.py:112
msgid "Click for selection"
@ -298,18 +299,18 @@ msgstr "Vor"
msgid "Show only unrecorded"
msgstr "Nur unverzeichnete anzeigen"
#: compensation/forms/forms.py:32 compensation/tables.py:25
#: compensation/forms/forms.py:31 compensation/tables.py:25
#: compensation/tables.py:166 ema/tables.py:28 intervention/forms/forms.py:27
#: intervention/tables.py:23
#: intervention/templates/intervention/detail/includes/compensations.html:30
msgid "Identifier"
msgstr "Kennung"
#: compensation/forms/forms.py:35 intervention/forms/forms.py:30
#: compensation/forms/forms.py:34 intervention/forms/forms.py:30
msgid "Generated automatically"
msgstr "Automatisch generiert"
#: compensation/forms/forms.py:44 compensation/tables.py:30
#: compensation/forms/forms.py:43 compensation/tables.py:30
#: compensation/tables.py:171
#: compensation/templates/compensation/detail/compensation/includes/documents.html:28
#: compensation/templates/compensation/detail/compensation/view.html:31
@ -329,23 +330,23 @@ msgstr "Automatisch generiert"
msgid "Title"
msgstr "Bezeichnung"
#: compensation/forms/forms.py:46 intervention/forms/forms.py:41
#: compensation/forms/forms.py:45 intervention/forms/forms.py:41
msgid "An explanatory name"
msgstr "Aussagekräftiger Titel"
#: compensation/forms/forms.py:50 ema/forms.py:47 ema/forms.py:105
#: compensation/forms/forms.py:49 ema/forms.py:47 ema/forms.py:105
msgid "Compensation XY; Location ABC"
msgstr "Kompensation XY; Flur ABC"
#: compensation/forms/forms.py:56
#: compensation/forms/forms.py:55
msgid "Fundings"
msgstr "Förderungen"
#: compensation/forms/forms.py:59
#: compensation/forms/forms.py:58
msgid "Select fundings for this compensation"
msgstr "Wählen Sie ggf. Fördermittelprojekte"
#: compensation/forms/forms.py:74 compensation/forms/modalForms.py:61
#: compensation/forms/forms.py:73 compensation/forms/modalForms.py:61
#: compensation/forms/modalForms.py:272 compensation/forms/modalForms.py:367
#: compensation/templates/compensation/detail/compensation/includes/actions.html:34
#: compensation/templates/compensation/detail/compensation/includes/deadlines.html:34
@ -364,63 +365,65 @@ msgstr "Wählen Sie ggf. Fördermittelprojekte"
msgid "Comment"
msgstr "Kommentar"
#: compensation/forms/forms.py:76 intervention/forms/forms.py:181
#: compensation/forms/forms.py:75 intervention/forms/forms.py:181
msgid "Additional comment"
msgstr "Zusätzlicher Kommentar"
#: compensation/forms/forms.py:110
#: compensation/forms/forms.py:109
#: compensation/templates/compensation/detail/eco_account/view.html:62
#: compensation/templates/compensation/report/eco_account/report.html:20
#: ema/templates/ema/detail/view.html:46
#: ema/templates/ema/report/report.html:20 intervention/forms/forms.py:129
#: intervention/templates/intervention/detail/view.html:60
#: intervention/templates/intervention/report/report.html:41
#: intervention/utils/quality.py:42
msgid "Conservation office file number"
msgstr "Aktenzeichen Eintragungsstelle"
#: compensation/forms/forms.py:116 intervention/forms/forms.py:135
#: compensation/forms/forms.py:115 intervention/forms/forms.py:135
msgid "ETS-123/ABC.456"
msgstr ""
#: compensation/forms/forms.py:122
#: compensation/forms/forms.py:121
msgid "Eco-account handler"
msgstr "Maßnahmenträger"
#: compensation/forms/forms.py:126
#: compensation/forms/forms.py:125
msgid "Who handles the eco-account"
msgstr "Wer für die Herrichtung des Ökokontos verantwortlich ist"
#: compensation/forms/forms.py:129 intervention/forms/forms.py:148
#: compensation/forms/forms.py:128 intervention/forms/forms.py:148
msgid "Company Mustermann"
msgstr "Firma Mustermann"
#: compensation/forms/forms.py:147
#: compensation/forms/forms.py:146
#: compensation/templates/compensation/detail/compensation/view.html:35
#: compensation/templates/compensation/report/compensation/report.html:16
msgid "compensates intervention"
msgstr "kompensiert Eingriff"
#: compensation/forms/forms.py:149
#: compensation/forms/forms.py:148
msgid "Select the intervention for which this compensation compensates"
msgstr "Wählen Sie den Eingriff, für den diese Kompensation bestimmt ist"
#: compensation/forms/forms.py:174
#: compensation/forms/forms.py:173
msgid "New compensation"
msgstr "Neue Kompensation"
#: compensation/forms/forms.py:232
#: compensation/forms/forms.py:231
msgid "Edit compensation"
msgstr "Bearbeite Kompensation"
#: compensation/forms/forms.py:291
#: compensation/forms/forms.py:290
msgid "Available Surface"
msgstr "Verfügbare Fläche"
#: compensation/forms/forms.py:294
#: compensation/forms/forms.py:293
msgid "The amount that can be used for deductions"
msgstr "Die für Abbuchungen zur Verfügung stehende Menge"
#: compensation/forms/forms.py:303
#: compensation/forms/forms.py:302
#: compensation/templates/compensation/detail/eco_account/view.html:66
msgid "Agreement date"
msgstr "Vereinbarungsdatum"
@ -876,7 +879,7 @@ msgid "Recorded on "
msgstr "Verzeichnet am"
#: compensation/templates/compensation/detail/compensation/view.html:71
#: compensation/templates/compensation/detail/eco_account/view.html:70
#: compensation/templates/compensation/detail/eco_account/view.html:74
#: compensation/templates/compensation/report/compensation/report.html:24
#: compensation/templates/compensation/report/eco_account/report.html:28
#: ema/templates/ema/detail/view.html:54
@ -885,7 +888,7 @@ msgid "Funded by"
msgstr "Gefördert mit"
#: compensation/templates/compensation/detail/compensation/view.html:79
#: compensation/templates/compensation/detail/eco_account/view.html:78
#: compensation/templates/compensation/detail/eco_account/view.html:82
#: compensation/templates/compensation/report/compensation/report.html:31
#: compensation/templates/compensation/report/eco_account/report.html:35
#: compensation/templates/compensation/report/eco_account/report.html:49
@ -897,7 +900,7 @@ msgid "None"
msgstr "-"
#: compensation/templates/compensation/detail/compensation/view.html:84
#: compensation/templates/compensation/detail/eco_account/view.html:83
#: compensation/templates/compensation/detail/eco_account/view.html:87
#: compensation/templates/compensation/report/compensation/report.html:37
#: compensation/templates/compensation/report/eco_account/report.html:54
#: ema/templates/ema/detail/view.html:67
@ -908,7 +911,7 @@ msgid "Last modified"
msgstr "Zuletzt bearbeitet"
#: compensation/templates/compensation/detail/compensation/view.html:92
#: compensation/templates/compensation/detail/eco_account/view.html:91
#: compensation/templates/compensation/detail/eco_account/view.html:95
#: ema/templates/ema/detail/view.html:82 intervention/forms/modalForms.py:40
#: intervention/templates/intervention/detail/view.html:116
msgid "Shared with"
@ -962,6 +965,7 @@ msgstr "Keine Flächenmenge für Abbuchungen eingegeben. Bitte bearbeiten."
#: compensation/templates/compensation/detail/eco_account/view.html:57
#: compensation/templates/compensation/detail/eco_account/view.html:61
#: compensation/templates/compensation/detail/eco_account/view.html:65
#: compensation/templates/compensation/detail/eco_account/view.html:69
#: ema/templates/ema/detail/view.html:41 ema/templates/ema/detail/view.html:45
#: ema/templates/ema/detail/view.html:49
#: intervention/templates/intervention/detail/view.html:30
@ -974,10 +978,10 @@ msgstr "Keine Flächenmenge für Abbuchungen eingegeben. Bitte bearbeiten."
#: intervention/templates/intervention/detail/view.html:63
#: intervention/templates/intervention/detail/view.html:95
#: intervention/templates/intervention/detail/view.html:99
msgid "Missing"
msgstr "Fehlt"
msgid "missing"
msgstr "fehlt"
#: compensation/templates/compensation/detail/eco_account/view.html:66
#: compensation/templates/compensation/detail/eco_account/view.html:70
#: compensation/templates/compensation/report/eco_account/report.html:24
#: ema/templates/ema/detail/view.html:50
#: ema/templates/ema/report/report.html:24
@ -1017,42 +1021,42 @@ msgstr "Kompensation {} hinzugefügt"
msgid "Compensation {} edited"
msgstr "Kompensation {} bearbeitet"
#: compensation/views/compensation_views.py:213
#: compensation/views/eco_account_views.py:287 ema/views.py:175
#: intervention/views.py:437
#: compensation/views/compensation_views.py:216
#: compensation/views/eco_account_views.py:290 ema/views.py:178
#: intervention/views.py:447
msgid "Log"
msgstr "Log"
#: compensation/views/compensation_views.py:234
#: compensation/views/compensation_views.py:237
msgid "Compensation removed"
msgstr "Kompensation entfernt"
#: compensation/views/compensation_views.py:253
#: compensation/views/eco_account_views.py:386 ema/views.py:328
#: intervention/views.py:126
#: compensation/views/compensation_views.py:256
#: compensation/views/eco_account_views.py:389 ema/views.py:331
#: intervention/views.py:127
msgid "Document added"
msgstr "Dokument hinzugefügt"
#: compensation/views/compensation_views.py:309
#: compensation/views/eco_account_views.py:330 ema/views.py:272
#: compensation/views/compensation_views.py:321
#: compensation/views/eco_account_views.py:333 ema/views.py:275
msgid "State added"
msgstr "Zustand hinzugefügt"
#: compensation/views/compensation_views.py:328
#: compensation/views/eco_account_views.py:349 ema/views.py:291
#: compensation/views/compensation_views.py:340
#: compensation/views/eco_account_views.py:352 ema/views.py:294
msgid "Action added"
msgstr "Maßnahme hinzugefügt"
#: compensation/views/compensation_views.py:347
#: compensation/views/eco_account_views.py:368 ema/views.py:310
#: compensation/views/compensation_views.py:359
#: compensation/views/eco_account_views.py:371 ema/views.py:313
msgid "Deadline added"
msgstr "Frist/Termin hinzugefügt"
#: compensation/views/compensation_views.py:366
#: compensation/views/compensation_views.py:378
msgid "State removed"
msgstr "Zustand gelöscht"
#: compensation/views/compensation_views.py:385
#: compensation/views/compensation_views.py:397
msgid "Action removed"
msgstr "Maßnahme entfernt"
@ -1064,25 +1068,25 @@ msgstr "Ökokonto {} hinzugefügt"
msgid "Eco-Account {} edited"
msgstr "Ökokonto {} bearbeitet"
#: compensation/views/eco_account_views.py:237
#: compensation/views/eco_account_views.py:240
msgid "Eco-account removed"
msgstr "Ökokonto entfernt"
#: compensation/views/eco_account_views.py:264
#: compensation/views/eco_account_views.py:267
msgid "Deduction removed"
msgstr "Abbuchung entfernt"
#: compensation/views/eco_account_views.py:307 ema/views.py:249
#: intervention/views.py:477
#: compensation/views/eco_account_views.py:310 ema/views.py:252
#: intervention/views.py:487
msgid "{} unrecorded"
msgstr "{} entzeichnet"
#: compensation/views/eco_account_views.py:307 ema/views.py:249
#: intervention/views.py:477
#: compensation/views/eco_account_views.py:310 ema/views.py:252
#: intervention/views.py:487
msgid "{} recorded"
msgstr "{} verzeichnet"
#: compensation/views/eco_account_views.py:443 intervention/views.py:459
#: compensation/views/eco_account_views.py:455 intervention/views.py:469
msgid "Deduction added"
msgstr "Abbuchung hinzugefügt"
@ -1126,11 +1130,11 @@ msgstr "Ersatzzahlungsmaßnahme"
msgid "EMA {} added"
msgstr "EMA {} hinzugefügt"
#: ema/views.py:202
#: ema/views.py:205
msgid "EMA {} edited"
msgstr "EMA {} bearbeitet"
#: ema/views.py:232
#: ema/views.py:235
msgid "EMA removed"
msgstr "EMA entfernt"
@ -1157,6 +1161,7 @@ msgstr "Bauvorhaben XY; Flur ABC"
#: intervention/forms/forms.py:51
#: intervention/templates/intervention/detail/view.html:35
#: intervention/templates/intervention/report/report.html:16
#: intervention/utils/quality.py:82
msgid "Process type"
msgstr "Verfahrenstyp"
@ -1167,12 +1172,14 @@ msgstr "Mehrfachauswahl möglich"
#: intervention/forms/forms.py:85
#: intervention/templates/intervention/detail/view.html:48
#: intervention/templates/intervention/report/report.html:29
#: intervention/utils/quality.py:46
msgid "Registration office"
msgstr "Zulassungsbehörde"
#: intervention/forms/forms.py:117
#: intervention/templates/intervention/detail/view.html:52
#: intervention/templates/intervention/report/report.html:33
#: intervention/utils/quality.py:39
msgid "Registration office file number"
msgstr "Aktenzeichen Zulassungsbehörde"
@ -1183,6 +1190,7 @@ msgstr ""
#: intervention/forms/forms.py:141
#: intervention/templates/intervention/detail/view.html:64
#: intervention/templates/intervention/report/report.html:45
#: intervention/utils/quality.py:52
msgid "Intervention handler"
msgstr "Eingriffsverursacher"
@ -1193,6 +1201,7 @@ msgstr "Wer führt den Eingriff durch"
#: intervention/forms/forms.py:154
#: intervention/templates/intervention/detail/view.html:96
#: intervention/templates/intervention/report/report.html:83
#: intervention/utils/quality.py:73
msgid "Registration date"
msgstr "Datum Zulassung bzw. Satzungsbeschluss"
@ -1302,34 +1311,6 @@ msgstr ""
"Das Ökokonto {} hat für eine Abbuchung von {} m² nicht ausreichend "
"Restfläche. Es stehen noch {} m² zur Verfügung."
#: intervention/models.py:326
msgid "Registration office file number missing"
msgstr "Aktenzeichen Zulassungsbehörde fehlt"
#: intervention/models.py:329
msgid "Conservation office file number missing"
msgstr "Aktenzeichen Naturschutzbehörde fehlt"
#: intervention/models.py:332
msgid "Responsible data missing"
msgstr "Daten zu Verantwortlichen fehlen"
#: intervention/models.py:346
msgid "Revocation exists"
msgstr "Widerspruch liegt vor"
#: intervention/models.py:349
msgid "Registration date missing"
msgstr "Datum Zulassung bzw. Satzungsbeschluss fehlt"
#: intervention/models.py:352
msgid "Binding on missing"
msgstr "Datum Bestandskraft fehlt"
#: intervention/models.py:354
msgid "Legal data missing"
msgstr "Rechtliche Daten fehlen"
#: intervention/tables.py:45
#: intervention/templates/intervention/detail/includes/revocation.html:8
#: intervention/templates/intervention/detail/includes/revocation.html:57
@ -1404,61 +1385,80 @@ msgstr "Abbuchungen von Ökokonten"
msgid "Exist"
msgstr "Vorhanden"
#: intervention/views.py:79
#: intervention/utils/quality.py:55
msgid "Responsible data"
msgstr "Daten zu den verantwortlichen Stellen"
#: intervention/utils/quality.py:70
msgid "Revocation exists"
msgstr "Widerspruch liegt vor"
#: intervention/utils/quality.py:76
msgid "Binding date"
msgstr "Datum Bestandskraft"
#: intervention/utils/quality.py:79
msgid "Laws"
msgstr "Gesetze"
#: intervention/utils/quality.py:84
msgid "Legal data"
msgstr "Rechtliche Daten"
#: intervention/utils/quality.py:98
msgid "No compensation of any type found (Compensation, Payment, Deduction)"
msgstr "Kein Ausgleich jeglicher Art gefunden (Kompensation, Ersatzzahlung, Abbuchung)"
#: intervention/utils/quality.py:110 intervention/utils/quality.py:112
#: konova/forms.py:246 templates/form/collapsable/form.html:45
msgid "Geometry"
msgstr "Geometrie"
#: intervention/views.py:80
msgid "Intervention {} added"
msgstr "Eingriff {} hinzugefügt"
#: intervention/views.py:221
#: intervention/views.py:231
msgid "This intervention has a revocation from {}"
msgstr "Es existiert ein Widerspruch vom {}"
#: intervention/views.py:237
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 "
"recording."
msgstr ""
"Beachten Sie: Diese Daten sind für Sie noch nicht freigegeben worden. Das "
"bedeutet, dass Sie nur lesenden Zugriff hierauf haben und weder bearbeiten, "
"noch Prüfungen durchführen oder verzeichnen können."
#: intervention/views.py:264
#: intervention/views.py:274
msgid "Intervention {} edited"
msgstr "Eingriff {} bearbeitet"
#: intervention/views.py:296
#: intervention/views.py:306
msgid "{} removed"
msgstr "{} entfernt"
#: intervention/views.py:317
#: intervention/views.py:327
msgid "Revocation removed"
msgstr "Widerspruch entfernt"
#: intervention/views.py:343
#: intervention/views.py:353
msgid "{} has already been shared with you"
msgstr "{} wurde bereits für Sie freigegeben"
#: intervention/views.py:348
#: intervention/views.py:358
msgid "{} has been shared with you"
msgstr "{} ist nun für Sie freigegeben"
#: intervention/views.py:355
#: intervention/views.py:365
msgid "Share link invalid"
msgstr "Freigabelink ungültig"
#: intervention/views.py:376
#: intervention/views.py:386
msgid "Share settings updated"
msgstr "Freigabe Einstellungen aktualisiert"
#: intervention/views.py:395
#: intervention/views.py:405
msgid "Check performed"
msgstr "Prüfung durchgeführt"
#: intervention/views.py:415
#: intervention/views.py:425
msgid "Revocation added"
msgstr "Widerspruch hinzugefügt"
#: intervention/views.py:482
#: intervention/views.py:492
msgid "There are errors on this intervention:"
msgstr "Es liegen Fehler in diesem Eingriff vor:"
@ -1499,10 +1499,6 @@ msgstr "Löschen"
msgid "You are about to remove {} {}"
msgstr "Sie sind dabei {} {} zu löschen"
#: konova/forms.py:246 templates/form/collapsable/form.html:45
msgid "Geometry"
msgstr "Geometrie"
#: konova/forms.py:322
msgid "Are you sure?"
msgstr "Sind Sie sicher?"
@ -1653,6 +1649,16 @@ msgid "This data is not shared with you"
msgstr "Diese Daten sind für Sie nicht freigegeben"
#: konova/utils/message_templates.py:16
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 "
"recording."
msgstr ""
"Beachten Sie: Diese Daten sind für Sie noch nicht freigegeben worden. Das "
"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:17
msgid "You need to be part of another user group."
msgstr "Hierfür müssen Sie einer anderen Nutzergruppe angehören!"
@ -3113,219 +3119,4 @@ msgstr ""
#: venv/lib/python3.7/site-packages/fontawesome_5/fields.py:16
msgid "A fontawesome icon field"
msgstr ""
#~ msgid "After"
#~ msgstr "Nach"
#~ msgid "Total interventions"
#~ msgstr "Insgesamt"
#~ msgid "Amount total"
#~ msgstr "Anzahl insgesamt"
#~ msgid "Amount checked"
#~ msgstr "Anzahl geprüft"
#~ msgid "Amount recorded"
#~ msgstr "Anzahl verzeichnet"
#~ msgid "Funding by..."
#~ msgstr "Gefördert mit..."
#~ msgid "Invalid input"
#~ msgstr "Eingabe fehlerhaft"
#~ msgid "Map"
#~ msgstr "Karte"
#~ msgid "Where does the intervention take place"
#~ msgstr "Wo findet der Eingriff statt"
#~ msgid "Which intervention type is this"
#~ msgstr "Welcher Eingriffstyp"
#~ msgid "Based on which law"
#~ msgstr "Basiert auf welchem Recht"
#~ msgid "Data provider"
#~ msgstr "Datenbereitsteller"
#~ msgid "Who provides the data for the intervention"
#~ msgstr "Wer stellt die Daten für den Eingriff zur Verfügung"
#~ msgid "Organization"
#~ msgstr "Organisation"
#~ msgid "Data provider details"
#~ msgstr "Datenbereitsteller Details"
#~ msgid "Further details"
#~ msgstr "Weitere Details"
#~ msgid "Files"
#~ msgstr "Dateien"
#~ msgid "Transfer note"
#~ msgstr "Verwendungszweck"
#~ msgid "Note for money transfer"
#~ msgstr "Verwendungszweck für Überweisung"
#~ msgid "Transfer comment"
#~ msgstr "Verwendungszweck"
#~ msgid "Edit {}"
#~ msgstr "Bearbeite {}"
#~ msgid "Delete {}"
#~ msgstr "Lösche {}"
#~ msgid "Actions"
#~ msgstr "Aktionen"
#~ msgid "Missing surfaces: "
#~ msgstr "Fehlende Flächen: "
#~ msgid "This will remove '{}'. Are you sure?"
#~ msgstr "Hiermit wird '{}' gelöscht. Sind Sie sicher?"
#~ msgid "Your own"
#~ msgstr "Eigene"
#~ msgid "Quickstart"
#~ msgstr "Schnellstart"
#~ msgid "Logged in as"
#~ msgstr "Eingeloggt als"
#~ msgid "Last login on"
#~ msgstr "Zuletzt eingeloggt am"
#~ msgid "Add new eco account"
#~ msgstr "Neues Ökokonto hinzufügen"
#~ msgid "Delete EMA"
#~ msgstr "Lösche EMA"
#~ msgid "Menu"
#~ msgstr "Menü"
#~ msgid "Process"
#~ msgstr "Vorgang"
#~ msgid "Process management"
#~ msgstr "Vorgangsverwaltung"
#~ msgid "New process"
#~ msgstr "Neuer Vorgang"
#~ msgid "Intervention management"
#~ msgstr "Eingriffsverwaltung"
#~ msgid "Show intervention"
#~ msgstr "Zeige Eingriffe"
#~ msgid "Eco-account management"
#~ msgstr "Ökokontoverwaltung"
#~ msgid "Show eco-accounts"
#~ msgstr "Zeige Ökokonten"
#~ msgid "You are currently working as "
#~ msgstr "Sie arbeiten gerade als "
#~ msgid "Change..."
#~ msgstr "Ändern..."
#~ msgid ""
#~ "Interventions must be part of a process. Please fill in the missing data "
#~ "for the process"
#~ msgstr ""
#~ "Eingriffe müssen zu einem Vorgang gehören. Bitte geben SIe die fehlenden "
#~ "Daten für den Vorgang ein."
#~ msgid "You are working as"
#~ msgstr "Sie arbeiten gerade als "
#~ msgid "Role changed"
#~ msgstr "Rolle geändert"
#~ msgid "Official"
#~ msgstr "Amtlich"
#~ msgid "Company"
#~ msgstr "Firma"
#~ msgid "NGO"
#~ msgstr "NGO"
#~ msgid "Licencing Authority"
#~ msgstr "Zulassungsbehörde"
#~ msgid "Proper title of the process"
#~ msgstr "Titel des Vorgangs"
#~ msgid "Which process type is this"
#~ msgstr "Welcher Vorgangstyp"
#~ msgid "Licencing document identifier"
#~ msgstr "Aktenzeichen Zulassungsbehörde"
#~ msgid "Comment licensing authority"
#~ msgstr "Kommentar Zulassungsbehörde"
#~ msgid "Registration document identifier"
#~ msgstr "Aktenzeichen Eintragungsstelle"
#~ msgid "Edit process"
#~ msgstr "Vorgang bearbeiten"
#~ msgid "private"
#~ msgstr "privat"
#~ msgid "accessible"
#~ msgstr "bereitgestellt"
#~ msgid "licensed"
#~ msgstr "genehmigt"
#~ msgid "official"
#~ msgstr "bestandskräftig"
#~ msgid ""
#~ "A process is based on an intervention. Please fill in the missing data "
#~ "for this intervention"
#~ msgstr ""
#~ "Ein Vorgang basiert immer auf einem Eingriff. Bitte geben Sie die "
#~ "fehlenden Daten für diesen Eingriff ein"
#~ msgid "{} status changed from {} to {}"
#~ msgstr "{} Status von {} auf {} geändert"
#~ msgid "Process {} added"
#~ msgstr "Vorgang {} hinzugefügt"
#~ msgid "Current role"
#~ msgstr "Aktuelle Rolle"
#~ msgid "Object title"
#~ msgstr "Objekt Titel"
#~ msgid "Object identifier"
#~ msgstr "Objekt Identifikator"
#~ msgid "Open process"
#~ msgstr "Vorgang öffnen"
#~ msgid "Delete process"
#~ msgstr "Vorgang löschen"
#~ msgid "Licensing authority document identifier"
#~ msgstr "Aktenzeichen Zulassungsbehörde"
#~ msgid "Registration office document identifier"
#~ msgstr "Aktenzeichen Eintragungsstelle"
#~ msgid "You have been logged out"
#~ msgstr "Sie wurden ausgeloggt"
msgstr ""
Loading…
Cancel
Save