36_Quality_checks #37

Merged
mpeltriaux merged 7 commits from 36_Quality_checks into master 2021-10-26 07:50:38 +02:00
6 changed files with 272 additions and 382 deletions
Showing only changes of commit a5b1f68f62 - Show all commits

View File

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

View File

@ -16,6 +16,7 @@ from codelist.models import KonovaCode
from codelist.settings import CODELIST_REGISTRATION_OFFICE_ID, CODELIST_CONSERVATION_OFFICE_ID, CODELIST_LAW_ID, \ from codelist.settings import CODELIST_REGISTRATION_OFFICE_ID, CODELIST_CONSERVATION_OFFICE_ID, CODELIST_LAW_ID, \
CODELIST_PROCESS_TYPE_ID CODELIST_PROCESS_TYPE_ID
from intervention.managers import InterventionManager from intervention.managers import InterventionManager
from intervention.utils.quality import InterventionQualityChecker
from konova.models import BaseObject, Geometry, UuidModel, BaseResource, AbstractDocument, \ from konova.models import BaseObject, Geometry, UuidModel, BaseResource, AbstractDocument, \
generate_document_file_upload_path generate_document_file_upload_path
from konova.settings import DEFAULT_SRID_RLP, LANIS_LINK_TEMPLATE, LANIS_ZOOM_LUT 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) 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'") handler = models.CharField(max_length=500, null=True, blank=True, help_text="Refers to 'Eingriffsverursacher' or 'Maßnahmenträger'")
def __str__(self): def __str__(self):
return "ZB: {} | ETS: {} | Handler: {}".format( return "ZB: {} | ETS: {} | Handler: {}".format(
self.registration_office, self.registration_office,
@ -296,62 +296,15 @@ class Intervention(BaseObject):
pass pass
super().delete(using, keep_parents) super().delete(using, keep_parents)
def quality_check(self) -> list: def quality_check(self) -> InterventionQualityChecker:
""" Quality check """ Quality check
Returns: Returns:
ret_msgs (list): Holds error messages ret_msgs (list): Holds error messages
""" """
ret_msgs = [] checker = InterventionQualityChecker(obj=self)
checker.run_check()
self._check_quality_responsible_data(ret_msgs) return checker
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"))
def get_LANIS_link(self) -> str: def get_LANIS_link(self) -> str:
""" Generates a link for LANIS depending on the geometry """ Generates a link for LANIS depending on the geometry

View File

@ -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"))

34
konova/utils/quality.py Normal file
View File

@ -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.

View File

@ -19,7 +19,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -37,22 +37,23 @@ msgstr "Vom"
msgid "To" msgid "To"
msgstr "Bis" 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/detail/eco_account/view.html:58
#: compensation/templates/compensation/report/eco_account/report.html:16 #: compensation/templates/compensation/report/eco_account/report.html:16
#: ema/templates/ema/detail/view.html:42 #: ema/templates/ema/detail/view.html:42
#: ema/templates/ema/report/report.html:16 intervention/forms/forms.py:101 #: ema/templates/ema/report/report.html:16 intervention/forms/forms.py:101
#: intervention/templates/intervention/detail/view.html:56 #: intervention/templates/intervention/detail/view.html:56
#: intervention/templates/intervention/report/report.html:37 #: intervention/templates/intervention/report/report.html:37
#: intervention/utils/quality.py:49
msgid "Conservation office" msgid "Conservation office"
msgstr "Eintragungsstelle" 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" msgid "Select the responsible office"
msgstr "Verantwortliche Stelle" msgstr "Verantwortliche Stelle"
#: analysis/forms.py:58 compensation/forms/forms.py:68 #: analysis/forms.py:58 compensation/forms/forms.py:67
#: compensation/forms/forms.py:105 compensation/forms/forms.py:156 #: compensation/forms/forms.py:104 compensation/forms/forms.py:155
#: intervention/forms/forms.py:63 intervention/forms/forms.py:80 #: intervention/forms/forms.py:63 intervention/forms/forms.py:80
#: intervention/forms/forms.py:96 intervention/forms/forms.py:112 #: intervention/forms/forms.py:96 intervention/forms/forms.py:112
msgid "Click for selection" msgid "Click for selection"
@ -298,18 +299,18 @@ msgstr "Vor"
msgid "Show only unrecorded" msgid "Show only unrecorded"
msgstr "Nur unverzeichnete anzeigen" 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 #: compensation/tables.py:166 ema/tables.py:28 intervention/forms/forms.py:27
#: intervention/tables.py:23 #: intervention/tables.py:23
#: intervention/templates/intervention/detail/includes/compensations.html:30 #: intervention/templates/intervention/detail/includes/compensations.html:30
msgid "Identifier" msgid "Identifier"
msgstr "Kennung" 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" msgid "Generated automatically"
msgstr "Automatisch generiert" 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/tables.py:171
#: compensation/templates/compensation/detail/compensation/includes/documents.html:28 #: compensation/templates/compensation/detail/compensation/includes/documents.html:28
#: compensation/templates/compensation/detail/compensation/view.html:31 #: compensation/templates/compensation/detail/compensation/view.html:31
@ -329,23 +330,23 @@ msgstr "Automatisch generiert"
msgid "Title" msgid "Title"
msgstr "Bezeichnung" 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" msgid "An explanatory name"
msgstr "Aussagekräftiger Titel" 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" msgid "Compensation XY; Location ABC"
msgstr "Kompensation XY; Flur ABC" msgstr "Kompensation XY; Flur ABC"
#: compensation/forms/forms.py:56 #: compensation/forms/forms.py:55
msgid "Fundings" msgid "Fundings"
msgstr "Förderungen" msgstr "Förderungen"
#: compensation/forms/forms.py:59 #: compensation/forms/forms.py:58
msgid "Select fundings for this compensation" msgid "Select fundings for this compensation"
msgstr "Wählen Sie ggf. Fördermittelprojekte" 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/forms/modalForms.py:272 compensation/forms/modalForms.py:367
#: compensation/templates/compensation/detail/compensation/includes/actions.html:34 #: compensation/templates/compensation/detail/compensation/includes/actions.html:34
#: compensation/templates/compensation/detail/compensation/includes/deadlines.html:34 #: compensation/templates/compensation/detail/compensation/includes/deadlines.html:34
@ -364,63 +365,65 @@ msgstr "Wählen Sie ggf. Fördermittelprojekte"
msgid "Comment" msgid "Comment"
msgstr "Kommentar" 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" msgid "Additional comment"
msgstr "Zusätzlicher Kommentar" 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/detail/eco_account/view.html:62
#: compensation/templates/compensation/report/eco_account/report.html:20 #: compensation/templates/compensation/report/eco_account/report.html:20
#: ema/templates/ema/detail/view.html:46 #: ema/templates/ema/detail/view.html:46
#: ema/templates/ema/report/report.html:20 intervention/forms/forms.py:129 #: ema/templates/ema/report/report.html:20 intervention/forms/forms.py:129
#: intervention/templates/intervention/detail/view.html:60 #: intervention/templates/intervention/detail/view.html:60
#: intervention/templates/intervention/report/report.html:41 #: intervention/templates/intervention/report/report.html:41
#: intervention/utils/quality.py:42
msgid "Conservation office file number" msgid "Conservation office file number"
msgstr "Aktenzeichen Eintragungsstelle" 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" msgid "ETS-123/ABC.456"
msgstr "" msgstr ""
#: compensation/forms/forms.py:122 #: compensation/forms/forms.py:121
msgid "Eco-account handler" msgid "Eco-account handler"
msgstr "Maßnahmenträger" msgstr "Maßnahmenträger"
#: compensation/forms/forms.py:126 #: compensation/forms/forms.py:125
msgid "Who handles the eco-account" msgid "Who handles the eco-account"
msgstr "Wer für die Herrichtung des Ökokontos verantwortlich ist" 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" msgid "Company Mustermann"
msgstr "Firma 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/detail/compensation/view.html:35
#: compensation/templates/compensation/report/compensation/report.html:16 #: compensation/templates/compensation/report/compensation/report.html:16
msgid "compensates intervention" msgid "compensates intervention"
msgstr "kompensiert Eingriff" msgstr "kompensiert Eingriff"
#: compensation/forms/forms.py:149 #: compensation/forms/forms.py:148
msgid "Select the intervention for which this compensation compensates" msgid "Select the intervention for which this compensation compensates"
msgstr "Wählen Sie den Eingriff, für den diese Kompensation bestimmt ist" 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" msgid "New compensation"
msgstr "Neue Kompensation" msgstr "Neue Kompensation"
#: compensation/forms/forms.py:232 #: compensation/forms/forms.py:231
msgid "Edit compensation" msgid "Edit compensation"
msgstr "Bearbeite Kompensation" msgstr "Bearbeite Kompensation"
#: compensation/forms/forms.py:291 #: compensation/forms/forms.py:290
msgid "Available Surface" msgid "Available Surface"
msgstr "Verfügbare Fläche" msgstr "Verfügbare Fläche"
#: compensation/forms/forms.py:294 #: compensation/forms/forms.py:293
msgid "The amount that can be used for deductions" msgid "The amount that can be used for deductions"
msgstr "Die für Abbuchungen zur Verfügung stehende Menge" 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" msgid "Agreement date"
msgstr "Vereinbarungsdatum" msgstr "Vereinbarungsdatum"
@ -876,7 +879,7 @@ msgid "Recorded on "
msgstr "Verzeichnet am" msgstr "Verzeichnet am"
#: compensation/templates/compensation/detail/compensation/view.html:71 #: 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/compensation/report.html:24
#: compensation/templates/compensation/report/eco_account/report.html:28 #: compensation/templates/compensation/report/eco_account/report.html:28
#: ema/templates/ema/detail/view.html:54 #: ema/templates/ema/detail/view.html:54
@ -885,7 +888,7 @@ msgid "Funded by"
msgstr "Gefördert mit" msgstr "Gefördert mit"
#: compensation/templates/compensation/detail/compensation/view.html:79 #: 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/compensation/report.html:31
#: compensation/templates/compensation/report/eco_account/report.html:35 #: compensation/templates/compensation/report/eco_account/report.html:35
#: compensation/templates/compensation/report/eco_account/report.html:49 #: compensation/templates/compensation/report/eco_account/report.html:49
@ -897,7 +900,7 @@ msgid "None"
msgstr "-" msgstr "-"
#: compensation/templates/compensation/detail/compensation/view.html:84 #: 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/compensation/report.html:37
#: compensation/templates/compensation/report/eco_account/report.html:54 #: compensation/templates/compensation/report/eco_account/report.html:54
#: ema/templates/ema/detail/view.html:67 #: ema/templates/ema/detail/view.html:67
@ -908,7 +911,7 @@ msgid "Last modified"
msgstr "Zuletzt bearbeitet" msgstr "Zuletzt bearbeitet"
#: compensation/templates/compensation/detail/compensation/view.html:92 #: 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 #: ema/templates/ema/detail/view.html:82 intervention/forms/modalForms.py:40
#: intervention/templates/intervention/detail/view.html:116 #: intervention/templates/intervention/detail/view.html:116
msgid "Shared with" 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:57
#: compensation/templates/compensation/detail/eco_account/view.html:61 #: 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: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:41 ema/templates/ema/detail/view.html:45
#: ema/templates/ema/detail/view.html:49 #: ema/templates/ema/detail/view.html:49
#: intervention/templates/intervention/detail/view.html:30 #: 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:63
#: intervention/templates/intervention/detail/view.html:95 #: intervention/templates/intervention/detail/view.html:95
#: intervention/templates/intervention/detail/view.html:99 #: intervention/templates/intervention/detail/view.html:99
msgid "Missing" msgid "missing"
msgstr "Fehlt" 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 #: compensation/templates/compensation/report/eco_account/report.html:24
#: ema/templates/ema/detail/view.html:50 #: ema/templates/ema/detail/view.html:50
#: ema/templates/ema/report/report.html:24 #: ema/templates/ema/report/report.html:24
@ -1017,42 +1021,42 @@ msgstr "Kompensation {} hinzugefügt"
msgid "Compensation {} edited" msgid "Compensation {} edited"
msgstr "Kompensation {} bearbeitet" msgstr "Kompensation {} bearbeitet"
#: compensation/views/compensation_views.py:213 #: compensation/views/compensation_views.py:216
#: compensation/views/eco_account_views.py:287 ema/views.py:175 #: compensation/views/eco_account_views.py:290 ema/views.py:178
#: intervention/views.py:437 #: intervention/views.py:447
msgid "Log" msgid "Log"
msgstr "Log" msgstr "Log"
#: compensation/views/compensation_views.py:234 #: compensation/views/compensation_views.py:237
msgid "Compensation removed" msgid "Compensation removed"
msgstr "Kompensation entfernt" msgstr "Kompensation entfernt"
#: compensation/views/compensation_views.py:253 #: compensation/views/compensation_views.py:256
#: compensation/views/eco_account_views.py:386 ema/views.py:328 #: compensation/views/eco_account_views.py:389 ema/views.py:331
#: intervention/views.py:126 #: intervention/views.py:127
msgid "Document added" msgid "Document added"
msgstr "Dokument hinzugefügt" msgstr "Dokument hinzugefügt"
#: compensation/views/compensation_views.py:309 #: compensation/views/compensation_views.py:321
#: compensation/views/eco_account_views.py:330 ema/views.py:272 #: compensation/views/eco_account_views.py:333 ema/views.py:275
msgid "State added" msgid "State added"
msgstr "Zustand hinzugefügt" msgstr "Zustand hinzugefügt"
#: compensation/views/compensation_views.py:328 #: compensation/views/compensation_views.py:340
#: compensation/views/eco_account_views.py:349 ema/views.py:291 #: compensation/views/eco_account_views.py:352 ema/views.py:294
msgid "Action added" msgid "Action added"
msgstr "Maßnahme hinzugefügt" msgstr "Maßnahme hinzugefügt"
#: compensation/views/compensation_views.py:347 #: compensation/views/compensation_views.py:359
#: compensation/views/eco_account_views.py:368 ema/views.py:310 #: compensation/views/eco_account_views.py:371 ema/views.py:313
msgid "Deadline added" msgid "Deadline added"
msgstr "Frist/Termin hinzugefügt" msgstr "Frist/Termin hinzugefügt"
#: compensation/views/compensation_views.py:366 #: compensation/views/compensation_views.py:378
msgid "State removed" msgid "State removed"
msgstr "Zustand gelöscht" msgstr "Zustand gelöscht"
#: compensation/views/compensation_views.py:385 #: compensation/views/compensation_views.py:397
msgid "Action removed" msgid "Action removed"
msgstr "Maßnahme entfernt" msgstr "Maßnahme entfernt"
@ -1064,25 +1068,25 @@ msgstr "Ökokonto {} hinzugefügt"
msgid "Eco-Account {} edited" msgid "Eco-Account {} edited"
msgstr "Ökokonto {} bearbeitet" msgstr "Ökokonto {} bearbeitet"
#: compensation/views/eco_account_views.py:237 #: compensation/views/eco_account_views.py:240
msgid "Eco-account removed" msgid "Eco-account removed"
msgstr "Ökokonto entfernt" msgstr "Ökokonto entfernt"
#: compensation/views/eco_account_views.py:264 #: compensation/views/eco_account_views.py:267
msgid "Deduction removed" msgid "Deduction removed"
msgstr "Abbuchung entfernt" msgstr "Abbuchung entfernt"
#: compensation/views/eco_account_views.py:307 ema/views.py:249 #: compensation/views/eco_account_views.py:310 ema/views.py:252
#: intervention/views.py:477 #: intervention/views.py:487
msgid "{} unrecorded" msgid "{} unrecorded"
msgstr "{} entzeichnet" msgstr "{} entzeichnet"
#: compensation/views/eco_account_views.py:307 ema/views.py:249 #: compensation/views/eco_account_views.py:310 ema/views.py:252
#: intervention/views.py:477 #: intervention/views.py:487
msgid "{} recorded" msgid "{} recorded"
msgstr "{} verzeichnet" 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" msgid "Deduction added"
msgstr "Abbuchung hinzugefügt" msgstr "Abbuchung hinzugefügt"
@ -1126,11 +1130,11 @@ msgstr "Ersatzzahlungsmaßnahme"
msgid "EMA {} added" msgid "EMA {} added"
msgstr "EMA {} hinzugefügt" msgstr "EMA {} hinzugefügt"
#: ema/views.py:202 #: ema/views.py:205
msgid "EMA {} edited" msgid "EMA {} edited"
msgstr "EMA {} bearbeitet" msgstr "EMA {} bearbeitet"
#: ema/views.py:232 #: ema/views.py:235
msgid "EMA removed" msgid "EMA removed"
msgstr "EMA entfernt" msgstr "EMA entfernt"
@ -1157,6 +1161,7 @@ msgstr "Bauvorhaben XY; Flur ABC"
#: intervention/forms/forms.py:51 #: intervention/forms/forms.py:51
#: intervention/templates/intervention/detail/view.html:35 #: intervention/templates/intervention/detail/view.html:35
#: intervention/templates/intervention/report/report.html:16 #: intervention/templates/intervention/report/report.html:16
#: intervention/utils/quality.py:82
msgid "Process type" msgid "Process type"
msgstr "Verfahrenstyp" msgstr "Verfahrenstyp"
@ -1167,12 +1172,14 @@ msgstr "Mehrfachauswahl möglich"
#: intervention/forms/forms.py:85 #: intervention/forms/forms.py:85
#: intervention/templates/intervention/detail/view.html:48 #: intervention/templates/intervention/detail/view.html:48
#: intervention/templates/intervention/report/report.html:29 #: intervention/templates/intervention/report/report.html:29
#: intervention/utils/quality.py:46
msgid "Registration office" msgid "Registration office"
msgstr "Zulassungsbehörde" msgstr "Zulassungsbehörde"
#: intervention/forms/forms.py:117 #: intervention/forms/forms.py:117
#: intervention/templates/intervention/detail/view.html:52 #: intervention/templates/intervention/detail/view.html:52
#: intervention/templates/intervention/report/report.html:33 #: intervention/templates/intervention/report/report.html:33
#: intervention/utils/quality.py:39
msgid "Registration office file number" msgid "Registration office file number"
msgstr "Aktenzeichen Zulassungsbehörde" msgstr "Aktenzeichen Zulassungsbehörde"
@ -1183,6 +1190,7 @@ msgstr ""
#: intervention/forms/forms.py:141 #: intervention/forms/forms.py:141
#: intervention/templates/intervention/detail/view.html:64 #: intervention/templates/intervention/detail/view.html:64
#: intervention/templates/intervention/report/report.html:45 #: intervention/templates/intervention/report/report.html:45
#: intervention/utils/quality.py:52
msgid "Intervention handler" msgid "Intervention handler"
msgstr "Eingriffsverursacher" msgstr "Eingriffsverursacher"
@ -1193,6 +1201,7 @@ msgstr "Wer führt den Eingriff durch"
#: intervention/forms/forms.py:154 #: intervention/forms/forms.py:154
#: intervention/templates/intervention/detail/view.html:96 #: intervention/templates/intervention/detail/view.html:96
#: intervention/templates/intervention/report/report.html:83 #: intervention/templates/intervention/report/report.html:83
#: intervention/utils/quality.py:73
msgid "Registration date" msgid "Registration date"
msgstr "Datum Zulassung bzw. Satzungsbeschluss" msgstr "Datum Zulassung bzw. Satzungsbeschluss"
@ -1302,34 +1311,6 @@ msgstr ""
"Das Ökokonto {} hat für eine Abbuchung von {} m² nicht ausreichend " "Das Ökokonto {} hat für eine Abbuchung von {} m² nicht ausreichend "
"Restfläche. Es stehen noch {} m² zur Verfügung." "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/tables.py:45
#: intervention/templates/intervention/detail/includes/revocation.html:8 #: intervention/templates/intervention/detail/includes/revocation.html:8
#: intervention/templates/intervention/detail/includes/revocation.html:57 #: intervention/templates/intervention/detail/includes/revocation.html:57
@ -1404,61 +1385,80 @@ msgstr "Abbuchungen von Ökokonten"
msgid "Exist" msgid "Exist"
msgstr "Vorhanden" 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" msgid "Intervention {} added"
msgstr "Eingriff {} hinzugefügt" msgstr "Eingriff {} hinzugefügt"
#: intervention/views.py:221 #: intervention/views.py:231
msgid "This intervention has a revocation from {}" msgid "This intervention has a revocation from {}"
msgstr "Es existiert ein Widerspruch vom {}" msgstr "Es existiert ein Widerspruch vom {}"
#: intervention/views.py:237 #: intervention/views.py:274
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
msgid "Intervention {} edited" msgid "Intervention {} edited"
msgstr "Eingriff {} bearbeitet" msgstr "Eingriff {} bearbeitet"
#: intervention/views.py:296 #: intervention/views.py:306
msgid "{} removed" msgid "{} removed"
msgstr "{} entfernt" msgstr "{} entfernt"
#: intervention/views.py:317 #: intervention/views.py:327
msgid "Revocation removed" msgid "Revocation removed"
msgstr "Widerspruch entfernt" msgstr "Widerspruch entfernt"
#: intervention/views.py:343 #: intervention/views.py:353
msgid "{} has already been shared with you" msgid "{} has already been shared with you"
msgstr "{} wurde bereits für Sie freigegeben" msgstr "{} wurde bereits für Sie freigegeben"
#: intervention/views.py:348 #: intervention/views.py:358
msgid "{} has been shared with you" msgid "{} has been shared with you"
msgstr "{} ist nun für Sie freigegeben" msgstr "{} ist nun für Sie freigegeben"
#: intervention/views.py:355 #: intervention/views.py:365
msgid "Share link invalid" msgid "Share link invalid"
msgstr "Freigabelink ungültig" msgstr "Freigabelink ungültig"
#: intervention/views.py:376 #: intervention/views.py:386
msgid "Share settings updated" msgid "Share settings updated"
msgstr "Freigabe Einstellungen aktualisiert" msgstr "Freigabe Einstellungen aktualisiert"
#: intervention/views.py:395 #: intervention/views.py:405
msgid "Check performed" msgid "Check performed"
msgstr "Prüfung durchgeführt" msgstr "Prüfung durchgeführt"
#: intervention/views.py:415 #: intervention/views.py:425
msgid "Revocation added" msgid "Revocation added"
msgstr "Widerspruch hinzugefügt" msgstr "Widerspruch hinzugefügt"
#: intervention/views.py:482 #: intervention/views.py:492
msgid "There are errors on this intervention:" msgid "There are errors on this intervention:"
msgstr "Es liegen Fehler in diesem Eingriff vor:" msgstr "Es liegen Fehler in diesem Eingriff vor:"
@ -1499,10 +1499,6 @@ msgstr "Löschen"
msgid "You are about to remove {} {}" msgid "You are about to remove {} {}"
msgstr "Sie sind dabei {} {} zu löschen" 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 #: konova/forms.py:322
msgid "Are you sure?" msgid "Are you sure?"
msgstr "Sind Sie sicher?" 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" msgstr "Diese Daten sind für Sie nicht freigegeben"
#: konova/utils/message_templates.py:16 #: 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." msgid "You need to be part of another user group."
msgstr "Hierfür müssen Sie einer anderen Nutzergruppe angehören!" 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 #: venv/lib/python3.7/site-packages/fontawesome_5/fields.py:16
msgid "A fontawesome icon field" msgid "A fontawesome icon field"
msgstr "" 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"