From e2fe85a4fb51a377295038386b8983ad60ea2fd0 Mon Sep 17 00:00:00 2001 From: mpeltriaux Date: Fri, 7 Jan 2022 15:41:40 +0100 Subject: [PATCH] #57 Deduction shortcut remove * removes deduction shortcut * adds missing quality checks on intervention deduction accounts validity * fixes error if checked intervention shall be checked again * adds/updates translations --- compensation/utils/quality.py | 12 ++++++ intervention/forms/modalForms.py | 61 ++++++++++++++++++++++------ intervention/models/intervention.py | 3 +- konova/forms.py | 22 +++++++++- konova/templates/konova/home.html | 10 ----- locale/de/LC_MESSAGES/django.mo | Bin 29366 -> 29386 bytes locale/de/LC_MESSAGES/django.po | 51 ++++++++++++----------- 7 files changed, 111 insertions(+), 48 deletions(-) diff --git a/compensation/utils/quality.py b/compensation/utils/quality.py index b622fcdd..b7f8daa7 100644 --- a/compensation/utils/quality.py +++ b/compensation/utils/quality.py @@ -58,8 +58,20 @@ class EcoAccountQualityChecker(CompensationQualityChecker): self._check_deductable_surface() self._check_responsible_data() self._check_legal_data() + self._check_record_state() super().run_check() + def _check_record_state(self): + """ Checks the data quality for recorded state + + Returns: + + """ + if self.obj.recorded is None: + self.messages.append( + _("Not recorded") + ) + def _check_legal_data(self): """ Checks the data quality for Legal diff --git a/intervention/forms/modalForms.py b/intervention/forms/modalForms.py index 7adc6864..aea9f2ce 100644 --- a/intervention/forms/modalForms.py +++ b/intervention/forms/modalForms.py @@ -189,27 +189,43 @@ class CheckModalForm(BaseModalForm): widget=forms.CheckboxInput(), required=True ) + valid = None def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.form_title = _("Run check") self.form_caption = _("I, {} {}, confirm that all necessary control steps have been performed by myself.").format(self.user.first_name, self.user.last_name) + self.valid = False - def is_valid(self) -> bool: - """ Perform a validity check based on quality_check() logic + def _are_deductions_valid(self): + """ Performs validity checks on deductions and their eco-account Returns: - result (bool) + + """ + deductions = self.instance.deductions.all() + for deduction in deductions: + checker = deduction.account.quality_check() + for msg in checker.messages: + self.add_error( + "checked_comps", + f"{deduction.account.identifier}: {msg}" + ) + return checker.valid + return True + + def _are_comps_valid(self): + """ Performs validity checks on all types of compensations + + Types of compensations are + * regular Compensations + * deductions from EcoAccounts + + Returns: + """ - super_result = super().is_valid() - # Perform check - checker = self.instance.quality_check() - for msg in checker.messages: - self.add_error( - "checked_intervention", - msg - ) comps = self.instance.compensations.all() + comps_valid = True for comp in comps: checker = comp.quality_check() for msg in checker.messages: @@ -217,7 +233,28 @@ class CheckModalForm(BaseModalForm): "checked_comps", f"{comp.identifier}: {msg}" ) - return super_result and checker.valid + comps_valid = checker.valid + deductions_valid = self._are_deductions_valid() + return deductions_valid and comps_valid + + def is_valid(self) -> bool: + """ Perform a validity check based on quality_check() logic + + Returns: + result (bool) + """ + super_valid = super().is_valid() + # Perform check + checker = self.instance.quality_check() + for msg in checker.messages: + self.add_error( + "checked_intervention", + msg + ) + all_comps_valid = self._are_comps_valid() + intervention_valid = checker.valid + + return super_valid and intervention_valid and all_comps_valid def save(self): """ Saving logic diff --git a/intervention/models/intervention.py b/intervention/models/intervention.py index b54bbcf5..737dd407 100644 --- a/intervention/models/intervention.py +++ b/intervention/models/intervention.py @@ -145,7 +145,8 @@ class Intervention(BaseObject, ShareableObjectMixin, RecordableObjectMixin, Chec def set_checked(self, user: User) -> UserActionLogEntry: log_entry = super().set_checked(user) - self.add_log_entry_to_compensations(log_entry) + if log_entry is not None: + self.add_log_entry_to_compensations(log_entry) return log_entry def set_unrecorded(self, user: User): diff --git a/konova/forms.py b/konova/forms.py index c4dff7d7..4ad309ed 100644 --- a/konova/forms.py +++ b/konova/forms.py @@ -492,6 +492,23 @@ class RecordModalForm(BaseModalForm): valid = valid and comps_valid return super_val and valid + def _are_deductions_valid(self): + """ Performs validity checks on deductions and their eco-account + + Returns: + + """ + deductions = self.instance.deductions.all() + for deduction in deductions: + checker = deduction.account.quality_check() + for msg in checker.messages: + self.add_error( + "confirm", + f"{deduction.account.identifier}: {msg}" + ) + return checker.valid + return True + def _are_compensations_valid(self): """ Runs a special case for intervention-compensations validity @@ -508,7 +525,10 @@ class RecordModalForm(BaseModalForm): "confirm", f"{comp.identifier}: {msg}" ) - return comps_valid + + deductions_valid = self._are_deductions_valid() + + return comps_valid and deductions_valid def save(self): with transaction.atomic(): diff --git a/konova/templates/konova/home.html b/konova/templates/konova/home.html index 918eae59..533bbba3 100644 --- a/konova/templates/konova/home.html +++ b/konova/templates/konova/home.html @@ -119,18 +119,8 @@ - - -
-

diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo index f9f5bf9c4400d0908f5e54e33af413a517f33a64..2edf9a00a3a2bca27cb79905575d3ca11179826d 100644 GIT binary patch delta 7338 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 delta 7341 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\n" "Language-Team: LANGUAGE \n" @@ -40,7 +40,7 @@ msgstr "Bis" #: analysis/forms.py:47 compensation/forms/forms.py:77 #: compensation/templates/compensation/detail/eco_account/view.html:58 #: compensation/templates/compensation/report/eco_account/report.html:16 -#: compensation/utils/quality.py:100 ema/templates/ema/detail/view.html:49 +#: compensation/utils/quality.py:112 ema/templates/ema/detail/view.html:49 #: ema/templates/ema/report/report.html:16 ema/utils/quality.py:26 #: intervention/forms/forms.py:100 #: intervention/templates/intervention/detail/view.html:56 @@ -212,7 +212,7 @@ msgstr "Abbuchungen" #: compensation/templates/compensation/detail/eco_account/includes/states-before.html:36 #: ema/templates/ema/detail/includes/states-after.html:36 #: ema/templates/ema/detail/includes/states-before.html:36 -#: intervention/forms/modalForms.py:258 +#: intervention/forms/modalForms.py:295 msgid "Surface" msgstr "Fläche" @@ -275,7 +275,7 @@ msgid "Type" msgstr "Typ" #: analysis/templates/analysis/reports/includes/old_data/amount.html:24 -#: intervention/forms/modalForms.py:269 intervention/forms/modalForms.py:276 +#: intervention/forms/modalForms.py:306 intervention/forms/modalForms.py:313 #: intervention/tables.py:88 #: intervention/templates/intervention/detail/view.html:19 #: konova/templates/konova/home.html:11 templates/navbars/navbar.html:22 @@ -285,7 +285,7 @@ msgstr "Eingriff" #: analysis/templates/analysis/reports/includes/old_data/amount.html:34 #: compensation/tables.py:224 #: compensation/templates/compensation/detail/eco_account/view.html:19 -#: intervention/forms/modalForms.py:242 intervention/forms/modalForms.py:249 +#: intervention/forms/modalForms.py:279 intervention/forms/modalForms.py:286 #: konova/templates/konova/home.html:88 templates/navbars/navbar.html:34 msgid "Eco-account" msgstr "Ökokonto" @@ -367,7 +367,7 @@ msgstr "Zusätzlicher Kommentar" #: compensation/forms/forms.py:93 #: compensation/templates/compensation/detail/eco_account/view.html:62 #: compensation/templates/compensation/report/eco_account/report.html:20 -#: compensation/utils/quality.py:102 ema/templates/ema/detail/view.html:53 +#: compensation/utils/quality.py:114 ema/templates/ema/detail/view.html:53 #: ema/templates/ema/report/report.html:20 ema/utils/quality.py:28 #: intervention/forms/forms.py:128 #: intervention/templates/intervention/detail/view.html:60 @@ -427,7 +427,7 @@ msgstr "Neue Kompensation" msgid "Edit compensation" msgstr "Bearbeite Kompensation" -#: compensation/forms/forms.py:302 compensation/utils/quality.py:84 +#: compensation/forms/forms.py:302 compensation/utils/quality.py:96 msgid "Available Surface" msgstr "Verfügbare Fläche" @@ -437,7 +437,7 @@ msgstr "Die für Abbuchungen zur Verfügung stehende Menge" #: compensation/forms/forms.py:314 #: compensation/templates/compensation/detail/eco_account/view.html:66 -#: compensation/utils/quality.py:72 +#: compensation/utils/quality.py:84 msgid "Agreement date" msgstr "Vereinbarungsdatum" @@ -492,7 +492,7 @@ msgstr "Biotoptyp" msgid "Select the biotope type" msgstr "Biotoptyp wählen" -#: compensation/forms/modalForms.py:136 intervention/forms/modalForms.py:260 +#: compensation/forms/modalForms.py:136 intervention/forms/modalForms.py:297 msgid "in m²" msgstr "" @@ -1033,17 +1033,21 @@ msgstr "-" msgid "States unequal" msgstr "Ungleiche Zustandsflächenmengen" -#: compensation/utils/quality.py:74 intervention/utils/quality.py:84 +#: compensation/utils/quality.py:72 +msgid "Not recorded" +msgstr "Noch nicht verzeichnet" + +#: compensation/utils/quality.py:86 intervention/utils/quality.py:84 msgid "Legal data" msgstr "Rechtliche Daten" -#: compensation/utils/quality.py:88 +#: compensation/utils/quality.py:100 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 ema/utils/quality.py:30 +#: compensation/utils/quality.py:116 ema/utils/quality.py:30 #: intervention/utils/quality.py:55 msgid "Responsible data" msgstr "Daten zu den verantwortlichen Stellen" @@ -1328,12 +1332,12 @@ msgstr "Eingriffsdaten geprüft" msgid "Checked compensations data and payments" msgstr "Kompensationen und Zahlungen geprüft" -#: intervention/forms/modalForms.py:195 +#: intervention/forms/modalForms.py:196 #: intervention/templates/intervention/detail/includes/controls.html:19 msgid "Run check" msgstr "Prüfung vornehmen" -#: intervention/forms/modalForms.py:196 konova/forms.py:457 +#: intervention/forms/modalForms.py:197 konova/forms.py:457 msgid "" "I, {} {}, confirm that all necessary control steps have been performed by " "myself." @@ -1341,23 +1345,23 @@ msgstr "" "Ich, {} {}, bestätige, dass die notwendigen Kontrollschritte durchgeführt " "wurden:" -#: intervention/forms/modalForms.py:244 +#: intervention/forms/modalForms.py:281 msgid "Only recorded accounts can be selected for deductions" msgstr "Nur verzeichnete Ökokonten können für Abbuchungen verwendet werden." -#: intervention/forms/modalForms.py:271 +#: intervention/forms/modalForms.py:308 msgid "Only shared interventions can be selected" msgstr "Nur freigegebene Eingriffe können gewählt werden" -#: intervention/forms/modalForms.py:284 +#: intervention/forms/modalForms.py:321 msgid "New Deduction" msgstr "Neue Abbuchung" -#: intervention/forms/modalForms.py:285 +#: intervention/forms/modalForms.py:322 msgid "Enter the information for a new deduction from a chosen eco-account" msgstr "Geben Sie die Informationen für eine neue Abbuchung ein." -#: intervention/forms/modalForms.py:313 +#: intervention/forms/modalForms.py:350 msgid "" "Eco-account {} is not recorded yet. You can only deduct from recorded " "accounts." @@ -1365,7 +1369,7 @@ msgstr "" "Ökokonto {} ist noch nicht verzeichnet. Abbuchungen können nur von " "verzeichneten Ökokonten erfolgen." -#: intervention/forms/modalForms.py:326 +#: intervention/forms/modalForms.py:363 msgid "" "The account {} has not enough surface for a deduction of {} m². There are " "only {} m² left" @@ -1659,10 +1663,6 @@ msgstr "Neu" msgid "Show" msgstr "Anzeigen" -#: konova/templates/konova/home.html:130 -msgid "Deduct" -msgstr "Abbuchen" - #: konova/templates/konova/includes/parcels.html:3 msgid "Spatial reference" msgstr "Raumreferenz" @@ -3560,6 +3560,9 @@ msgstr "" msgid "Unable to connect to qpid with SASL mechanism %s" msgstr "" +#~ msgid "Deduct" +#~ msgstr "Abbuchen" + #~ msgid "No file given!" #~ msgstr "Keine Datei angegeben!"