From 0e4113249f3e32e734fe079d1d17996a1ece6f68 Mon Sep 17 00:00:00 2001 From: mpeltriaux Date: Mon, 25 Oct 2021 14:36:58 +0200 Subject: [PATCH] #36 Quality checks * adds quality check logic for EcoAccount with EcoAccountQualityChecker * adds/updates translations * adds quality check logic for EMA with EmaQualityChecker --- compensation/models.py | 14 ++++---- compensation/utils/quality.py | 56 +++++++++++++++++++++++++++++++ ema/models.py | 15 ++++----- ema/utils/quality.py | 22 ++++++++---- konova/forms.py | 9 +++-- locale/de/LC_MESSAGES/django.mo | Bin 26776 -> 26933 bytes locale/de/LC_MESSAGES/django.po | 57 ++++++++++++++++++-------------- 7 files changed, 124 insertions(+), 49 deletions(-) diff --git a/compensation/models.py b/compensation/models.py index 5367b2e2..c672714e 100644 --- a/compensation/models.py +++ b/compensation/models.py @@ -19,7 +19,7 @@ from codelist.settings import CODELIST_COMPENSATION_ACTION_ID, CODELIST_BIOTOPES CODELIST_COMPENSATION_FUNDING_ID from compensation.managers import CompensationStateManager, EcoAccountDeductionManager, CompensationActionManager, \ EcoAccountManager, CompensationManager -from compensation.utils.quality import CompensationQualityChecker +from compensation.utils.quality import CompensationQualityChecker, EcoAccountQualityChecker from intervention.models import Intervention, ResponsibilityData, LegalData from konova.models import BaseObject, BaseResource, Geometry, UuidModel, AbstractDocument, \ generate_document_file_upload_path @@ -447,17 +447,15 @@ class EcoAccount(AbstractCompensation): y, ) - def quality_check(self) -> list: + def quality_check(self) -> EcoAccountQualityChecker: """ Quality check Returns: - ret_msgs (list): Holds error messages + ret_msgs (EcoAccountQualityChecker): Holds validity and error messages """ - ret_msgs = [] - - # ToDo: Add check methods! - - return ret_msgs + checker = EcoAccountQualityChecker(self) + checker.run_check() + return checker def get_documents(self) -> QuerySet: """ Getter for all documents of an EcoAccount diff --git a/compensation/utils/quality.py b/compensation/utils/quality.py index 0e3c2cf0..28002db4 100644 --- a/compensation/utils/quality.py +++ b/compensation/utils/quality.py @@ -46,3 +46,59 @@ class CompensationQualityChecker(AbstractQualityChecker): """ if not self.obj.actions.all(): self._add_missing_attr_name(_con("Compensation", "Actions")) + + +class EcoAccountQualityChecker(CompensationQualityChecker): + def run_check(self): + """ Checks on data quality for an EcoAccount + + Returns: + + """ + self._check_deductable_surface() + self._check_responsible_data() + self._check_legal_data() + super().run_check() + + def _check_legal_data(self): + """ Checks the data quality for LegalData + + Returns: + + """ + try: + legal = self.obj.legal + if legal.registration_date is None: + self._add_missing_attr_name(_("Agreement date")) + except AttributeError: + self._add_missing_attr_name(_("Legal data")) + + def _check_deductable_surface(self): + """ Checks the quality of the deductable surface value + + Returns: + + """ + surface = self.obj.deductable_surface + if surface is None or surface == 0: + self._add_missing_attr_name(_("Available Surface")) + after_state_surface = self.obj.get_state_after_surface_sum() + if surface > after_state_surface: + self.messages.append( + _("Deductable surface can not be larger than state surface") + ) + + def _check_responsible_data(self): + """ Checks on responsible data quality + + Returns: + + """ + try: + resp = self.obj.responsible + if resp.conservation_office is None: + self._add_missing_attr_name(_("Conservation office")) + if resp.conservation_file_number is None or len(resp.conservation_file_number) == 0: + self._add_missing_attr_name(_("Conservation office file number")) + except AttributeError: + self._add_missing_attr_name(_("Responsible data")) diff --git a/ema/models.py b/ema/models.py index e8d31c4f..a0b5f5e7 100644 --- a/ema/models.py +++ b/ema/models.py @@ -6,8 +6,9 @@ from django.db.models import QuerySet from compensation.models import AbstractCompensation from ema.managers import EmaManager +from ema.utils.quality import EmaQualityChecker from konova.models import AbstractDocument, generate_document_file_upload_path -from konova.settings import DEFAULT_SRID_RLP, LANIS_LINK_TEMPLATE, EMA_DOC_PATH +from konova.settings import DEFAULT_SRID_RLP, LANIS_LINK_TEMPLATE from user.models import UserActionLogEntry @@ -80,17 +81,15 @@ class Ema(AbstractCompensation): y, ) - def quality_check(self) -> list: + def quality_check(self) -> EmaQualityChecker: """ Quality check Returns: - ret_msgs (list): Holds error messages + ret_msgs (EmaQualityChecker): Holds validity error messages """ - ret_msgs = [] - - # ToDo: Add check methods! - - return ret_msgs + checker = EmaQualityChecker(self) + checker.run_check() + return checker def get_documents(self) -> QuerySet: """ Getter for all documents of an EMA diff --git a/ema/utils/quality.py b/ema/utils/quality.py index 8c57f51f..dc7b07ca 100644 --- a/ema/utils/quality.py +++ b/ema/utils/quality.py @@ -5,16 +5,26 @@ Contact: michel.peltriaux@sgdnord.rlp.de Created on: 25.10.21 """ -from konova.utils.quality import AbstractQualityChecker +from django.utils.translation import gettext_lazy as _ +from compensation.utils.quality import CompensationQualityChecker -class EmaQualityChecker(AbstractQualityChecker): +class EmaQualityChecker(CompensationQualityChecker): def run_check(self): - """ Perform all defined data checks + super().run_check() + self._check_responsible_data() + + def _check_responsible_data(self): + """ Checks on responsible data quality Returns: """ - - self._check_geometry() - self.valid = len(self.messages) == 0 + try: + resp = self.obj.responsible + if resp.conservation_office is None: + self._add_missing_attr_name(_("Conservation office")) + if resp.conservation_file_number is None or len(resp.conservation_file_number) == 0: + self._add_missing_attr_name(_("Conservation office file number")) + except AttributeError: + self._add_missing_attr_name(_("Responsible data")) diff --git a/konova/forms.py b/konova/forms.py index 74e53896..83cf720a 100644 --- a/konova/forms.py +++ b/konova/forms.py @@ -472,13 +472,16 @@ class RecordModalForm(BaseModalForm): """ super_val = super().is_valid() - msgs = self.instance.quality_check() or [] - for msg in msgs: + if self.instance.recorded: + # If user wants to unrecord an already recorded dataset, we do not need to perform custom checks + return super_val + checker = self.instance.quality_check() + for msg in checker.messages: self.add_error( "confirm", msg ) - return super_val and (len(msgs) == 0) + return super_val and checker.valid def save(self): with transaction.atomic(): diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo index f84bd1867b5720a30a73b2e0f99650fce62d0e7e..817362f26e53b00788a39b311366b260d21ca839 100644 GIT binary patch delta 8448 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 delta 8410 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 diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po index a2995547..88d2ad0c 100644 --- a/locale/de/LC_MESSAGES/django.po +++ b/locale/de/LC_MESSAGES/django.po @@ -19,7 +19,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 13:37+0200\n" +"POT-Creation-Date: 2021-10-25 14:13+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -40,11 +40,11 @@ msgstr "Bis" #: 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 +#: compensation/utils/quality.py:100 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:51 +#: intervention/utils/quality.py:49 msgid "Conservation office" msgstr "Eintragungsstelle" @@ -372,11 +372,11 @@ msgstr "Zusätzlicher Kommentar" #: 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 +#: compensation/utils/quality.py:102 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:44 +#: intervention/utils/quality.py:42 msgid "Conservation office file number" msgstr "Aktenzeichen Eintragungsstelle" @@ -414,7 +414,7 @@ msgstr "Neue Kompensation" msgid "Edit compensation" msgstr "Bearbeite Kompensation" -#: compensation/forms/forms.py:290 +#: compensation/forms/forms.py:290 compensation/utils/quality.py:84 msgid "Available Surface" msgstr "Verfügbare Fläche" @@ -424,6 +424,7 @@ msgstr "Die für Abbuchungen zur Verfügung stehende Menge" #: compensation/forms/forms.py:302 #: compensation/templates/compensation/detail/eco_account/view.html:66 +#: compensation/utils/quality.py:72 msgid "Agreement date" msgstr "Vereinbarungsdatum" @@ -804,6 +805,7 @@ msgstr "Dokument löschen" #: compensation/templates/compensation/detail/compensation/includes/states-after.html:8 #: compensation/templates/compensation/detail/eco_account/includes/states-after.html:8 +#: compensation/utils/quality.py:39 #: ema/templates/ema/detail/includes/states-after.html:8 msgid "States after" msgstr "Zielzustand" @@ -840,6 +842,7 @@ msgstr "Zustand entfernen" #: compensation/templates/compensation/detail/compensation/includes/states-before.html:8 #: compensation/templates/compensation/detail/eco_account/includes/states-before.html:8 +#: compensation/utils/quality.py:37 #: ema/templates/ema/detail/includes/states-before.html:8 msgid "States before" msgstr "Ausgangszustand" @@ -1013,10 +1016,24 @@ msgstr "In LANIS öffnen" msgid "Deductions for" msgstr "Abbuchungen für" -#: compensation/utils/quality.py:35 +#: compensation/utils/quality.py:34 msgid "States unequal" msgstr "Ungleiche Zustandsflächenmengen" +#: compensation/utils/quality.py:74 intervention/utils/quality.py:84 +msgid "Legal data" +msgstr "Rechtliche Daten" + +#: compensation/utils/quality.py:88 +msgid "Deductable surface can not be larger than state surface" +msgstr "" +"Die abbuchbare Fläche darf die Gesamtfläche der Zielzustände nicht " +"überschreiten" + +#: compensation/utils/quality.py:104 intervention/utils/quality.py:55 +msgid "Responsible data" +msgstr "Daten zu den verantwortlichen Stellen" + #: compensation/views/compensation_views.py:77 msgid "Compensation {} added" msgstr "Kompensation {} hinzugefügt" @@ -1165,7 +1182,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:84 +#: intervention/utils/quality.py:82 msgid "Process type" msgstr "Verfahrenstyp" @@ -1176,14 +1193,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:48 +#: 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:41 +#: intervention/utils/quality.py:39 msgid "Registration office file number" msgstr "Aktenzeichen Zulassungsbehörde" @@ -1194,7 +1211,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:54 +#: intervention/utils/quality.py:52 msgid "Intervention handler" msgstr "Eingriffsverursacher" @@ -1205,7 +1222,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:75 +#: intervention/utils/quality.py:73 msgid "Registration date" msgstr "Datum Zulassung bzw. Satzungsbeschluss" @@ -1389,27 +1406,19 @@ msgstr "Abbuchungen von Ökokonten" msgid "Exist" msgstr "Vorhanden" -#: intervention/utils/quality.py:57 -msgid "Responsible data" -msgstr "Daten zu den verantwortlichen Stellen" - -#: intervention/utils/quality.py:72 +#: intervention/utils/quality.py:70 msgid "Revocation exists" msgstr "Widerspruch liegt vor" -#: intervention/utils/quality.py:78 +#: intervention/utils/quality.py:76 msgid "Binding date" msgstr "Datum Bestandskraft" -#: intervention/utils/quality.py:81 +#: intervention/utils/quality.py:79 msgid "Laws" msgstr "Gesetze" -#: intervention/utils/quality.py:86 -msgid "Legal data" -msgstr "Rechtliche Daten" - -#: intervention/utils/quality.py:100 +#: intervention/utils/quality.py:98 msgid "No compensation of any type found (Compensation, Payment, Deduction)" msgstr "" "Kein Ausgleich jeglicher Art gefunden (Kompensation, Ersatzzahlung, "