From b6e52f6b4c85a4e6dbe6e712e14b6a632b778af5 Mon Sep 17 00:00:00 2001 From: mpeltriaux Date: Mon, 25 Oct 2021 13:06:54 +0200 Subject: [PATCH] #36 Quality checks * adds AbstractQualityChecker as base for all quality checker instances * adds InterventionQualityChecker, inheriting from AbstractQualityChecker * adds functionality to InterventionQualityChecker * adds/updates translations --- intervention/forms/modalForms.py | 6 +- intervention/models.py | 57 +--- intervention/utils/quality.py | 112 ++++++++ konova/utils/quality.py | 34 +++ locale/de/LC_MESSAGES/django.mo | Bin 26795 -> 26682 bytes locale/de/LC_MESSAGES/django.po | 445 ++++++++----------------------- 6 files changed, 272 insertions(+), 382 deletions(-) create mode 100644 intervention/utils/quality.py create mode 100644 konova/utils/quality.py diff --git a/intervention/forms/modalForms.py b/intervention/forms/modalForms.py index 1af0ddcf..4f8fa750 100644 --- a/intervention/forms/modalForms.py +++ b/intervention/forms/modalForms.py @@ -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 diff --git a/intervention/models.py b/intervention/models.py index 9d0c8816..7fbb9226 100644 --- a/intervention/models.py +++ b/intervention/models.py @@ -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 diff --git a/intervention/utils/quality.py b/intervention/utils/quality.py new file mode 100644 index 00000000..72ed2a73 --- /dev/null +++ b/intervention/utils/quality.py @@ -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")) diff --git a/konova/utils/quality.py b/konova/utils/quality.py new file mode 100644 index 00000000..b59c3272 --- /dev/null +++ b/konova/utils/quality.py @@ -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}") + diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo index 8a1e11b3bf85fc2addccaff72983a2c4993babf7..a992cbb136e1f7e893caa5e4795d15c90460558b 100644 GIT binary patch delta 8583 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 delta 8555 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%0A}>4#1EBwT9JB8g~b+9^Ml zbQj!5j3C`qh30w`yHMtjLrvL1op-s(JV0dw;w1TST!87O?k!^h<+>gt0%{jH+WUsj zEVt5Tlo!q@FLul=Y62QMiku~- zwOfZz^Nt&IPo=ZG+Bsu-iL>01T~JvyyJC7tRb}-wXURMJW*0g=O)G1?v)&H~ALE=} zQdz2|jv)+P?x}NM%pK%aSsOjBzgO+f@t^v*C+Elc+IP8^\n" "Language-Team: LANGUAGE \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 "" \ No newline at end of file