From fbcb2d9afd74d9a546773c7779f1da165e3992f9 Mon Sep 17 00:00:00 2001 From: mipel Date: Fri, 17 Sep 2021 13:33:51 +0200 Subject: [PATCH 1/3] Eco Account deduction * adds deductable_surface to EcoAccount model to provide an easy way to change the deductable amount from an account -> depends on external funding e.g. with AktionBlau or similar * adds overview of deducted and deductable volume to detail view * adds check to eco account model, so the deductable_surface can never be larger than the total amount of after_state surface sum * adds german formating for python logic based number formating * adds/updates translations --- compensation/models.py | 46 ++- .../compensation/detail/eco_account/view.html | 1 + intervention/forms.py | 7 +- konova/utils/general.py | 21 ++ locale/de/LC_MESSAGES/django.po | 329 +++++++++--------- 5 files changed, 236 insertions(+), 168 deletions(-) create mode 100644 konova/utils/general.py diff --git a/compensation/models.py b/compensation/models.py index 2732f9c7..990951b2 100644 --- a/compensation/models.py +++ b/compensation/models.py @@ -9,6 +9,7 @@ import shutil from django.contrib.auth.models import User from django.contrib.gis.db import models +from django.core.exceptions import ValidationError from django.core.validators import MinValueValidator from django.db.models import Sum, QuerySet from django.utils.translation import gettext_lazy as _ @@ -281,9 +282,22 @@ class EcoAccount(AbstractCompensation): related_name="+" ) + deductable_surface = models.FloatField( + blank=True, + null=True, + help_text="Amount of deductable surface - can be lower than the total surface due to deduction limitations", + default=0, + ) + def __str__(self): return "{}".format(self.identifier) + def clean(self): + # Deductable surface can not be larger than added states after surface + after_state_sum = self.get_state_after_surface_sum() + if self.deductable_surface > after_state_sum: + raise ValidationError(_("Deductable surface can not be larger than existing surfaces in after states")) + def save(self, *args, **kwargs): if self.identifier is None or len(self.identifier) == 0: # Create new identifier @@ -293,15 +307,34 @@ class EcoAccount(AbstractCompensation): self.identifier = new_id super().save(*args, **kwargs) + @property + def deductions_surface_sum(self) -> float: + """ Shortcut for get_deductions_surface. + + Can be used in templates + + Returns: + sum_surface (float) + """ + return self.get_deductions_surface() + def get_deductions_surface(self) -> float: - """ Calculates the account's deductions sum surface + """ Calculates the account's deductions surface sum Returns: sum_surface (float) """ return self.deductions.all().aggregate(Sum("surface"))["surface__sum"] or 0 - def get_available_rest(self, as_percentage: bool = False): + def get_state_after_surface_sum(self) -> float: + """ Calculates the account's after state surface sum + + Returns: + sum_surface (float) + """ + return self.after_states.all().aggregate(Sum("surface"))["surface__sum"] or 0 + + def get_available_rest(self, as_percentage: bool = False) -> float: """ Calculates available rest surface of the eco account Args: @@ -310,17 +343,16 @@ class EcoAccount(AbstractCompensation): Returns: """ - ret_val = 0 deductions = self.deductions.filter( intervention__deleted=None, ) deductions_surfaces = deductions.aggregate(Sum("surface"))["surface__sum"] or 0 - after_states_surfaces = self.after_states.all().aggregate(Sum("surface"))["surface__sum"] or deductions_surfaces ## no division by zero - ret_val = after_states_surfaces - deductions_surfaces + available_surfaces = self.deductable_surface or deductions_surfaces ## no division by zero + ret_val = available_surfaces - deductions_surfaces if as_percentage: - if after_states_surfaces > 0: - ret_val = int((ret_val / after_states_surfaces) * 100) + if available_surfaces > 0: + ret_val = int((ret_val / available_surfaces) * 100) else: ret_val = 0 return ret_val diff --git a/compensation/templates/compensation/detail/eco_account/view.html b/compensation/templates/compensation/detail/eco_account/view.html index f591b2c1..7af9b648 100644 --- a/compensation/templates/compensation/detail/eco_account/view.html +++ b/compensation/templates/compensation/detail/eco_account/view.html @@ -33,6 +33,7 @@ {% trans 'Available' %} + {{obj.deductions_surface_sum|floatformat:2}} / {{obj.deductable_surface|floatformat:2}} m² {% with available as value %} {% include 'konova/custom_widgets/progressbar.html' %} {% endwith %} diff --git a/intervention/forms.py b/intervention/forms.py index 508dbacb..c84c51c6 100644 --- a/intervention/forms.py +++ b/intervention/forms.py @@ -18,6 +18,7 @@ from compensation.models import EcoAccountDeduction, EcoAccount from intervention.models import Intervention, Revocation, RevocationDocument from konova.forms import BaseForm, BaseModalForm from konova.settings import DEFAULT_LAT, DEFAULT_LON, DEFAULT_ZOOM, ZB_GROUP, ETS_GROUP +from konova.utils.general import format_german_float from konova.utils.messenger import Messenger from konova.utils.user_checks import in_group from organisation.models import Organisation @@ -545,7 +546,11 @@ class NewDeductionForm(BaseModalForm): if not is_valid_surface: self.add_error( "surface", - _("The account {} has not enough surface for a deduction of {} m². There are only {} m² left").format(acc.identifier, form_surface, rest_surface), + _("The account {} has not enough surface for a deduction of {} m². There are only {} m² left").format( + acc.identifier, + format_german_float(form_surface), + format_german_float(rest_surface), + ), ) return is_valid_surface and super_result diff --git a/konova/utils/general.py b/konova/utils/general.py new file mode 100644 index 00000000..b7ee0ea8 --- /dev/null +++ b/konova/utils/general.py @@ -0,0 +1,21 @@ +""" +Author: Michel Peltriaux +Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany +Contact: michel.peltriaux@sgdnord.rlp.de +Created on: 17.09.21 + +""" + + +def format_german_float(num) -> str: + """ Writes a float into a string based on german float notation + + 10000.000 --> "10.000,00" + + Args: + num (float): The number + + Returns: + num (str): The number as german Gleitkommazahl + """ + return format(num, "0,.2f").replace(",", "X").replace(".", ",").replace("X", ".") diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po index b3405d5d..ac54d178 100644 --- a/locale/de/LC_MESSAGES/django.po +++ b/locale/de/LC_MESSAGES/django.po @@ -7,16 +7,16 @@ #: compensation/forms.py:67 compensation/forms.py:264 compensation/forms.py:345 #: intervention/filters.py:26 intervention/filters.py:40 #: intervention/filters.py:47 intervention/filters.py:48 -#: intervention/forms.py:322 intervention/forms.py:334 -#: intervention/forms.py:347 konova/forms.py:108 konova/forms.py:252 +#: intervention/forms.py:321 intervention/forms.py:333 +#: intervention/forms.py:346 konova/forms.py:108 konova/forms.py:252 #: konova/forms.py:287 konova/forms.py:292 konova/forms.py:304 -#: konova/forms.py:316 konova/forms.py:329 user/forms.py:38 +#: konova/forms.py:316 konova/forms.py:336 user/forms.py:38 #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-26 14:59+0200\n" +"POT-Creation-Date: 2021-09-17 12:53+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -53,16 +53,16 @@ msgstr "Zahlung wird an diesem Datum erwartet" #: ema/templates/ema/detail/includes/actions.html:34 #: ema/templates/ema/detail/includes/deadlines.html:34 #: ema/templates/ema/detail/includes/documents.html:31 -#: intervention/forms.py:346 +#: intervention/forms.py:345 #: intervention/templates/intervention/detail/includes/documents.html:31 #: intervention/templates/intervention/detail/includes/payments.html:34 -#: intervention/templates/intervention/detail/includes/revocation.html:35 +#: intervention/templates/intervention/detail/includes/revocation.html:38 #: konova/forms.py:315 msgid "Comment" msgstr "Kommentar" #: compensation/forms.py:68 compensation/forms.py:265 compensation/forms.py:346 -#: intervention/forms.py:348 konova/forms.py:317 +#: intervention/forms.py:347 konova/forms.py:317 msgid "Additional comment, maximum {} letters" msgstr "Zusätzlicher Kommentar, maximal {} Zeichen" @@ -133,7 +133,7 @@ msgstr "Fristart wählen" #: compensation/templates/compensation/detail/compensation/includes/deadlines.html:31 #: compensation/templates/compensation/detail/eco_account/includes/deadlines.html:31 #: ema/templates/ema/detail/includes/deadlines.html:31 -#: intervention/forms.py:321 +#: intervention/forms.py:320 msgid "Date" msgstr "Datum" @@ -169,20 +169,20 @@ msgstr "Maßnahmentyp wählen" #: compensation/templates/compensation/detail/compensation/includes/states-before.html:39 #: compensation/templates/compensation/detail/eco_account/includes/actions.html:37 #: compensation/templates/compensation/detail/eco_account/includes/deadlines.html:37 +#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:40 #: compensation/templates/compensation/detail/eco_account/includes/documents.html:34 #: compensation/templates/compensation/detail/eco_account/includes/states-after.html:39 #: compensation/templates/compensation/detail/eco_account/includes/states-before.html:39 -#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:37 #: ema/templates/ema/detail/includes/actions.html:37 #: ema/templates/ema/detail/includes/deadlines.html:37 #: ema/templates/ema/detail/includes/documents.html:34 #: ema/templates/ema/detail/includes/states-after.html:39 #: ema/templates/ema/detail/includes/states-before.html:39 #: intervention/templates/intervention/detail/includes/compensations.html:36 +#: intervention/templates/intervention/detail/includes/deductions.html:37 #: intervention/templates/intervention/detail/includes/documents.html:34 #: intervention/templates/intervention/detail/includes/payments.html:37 #: intervention/templates/intervention/detail/includes/revocation.html:41 -#: intervention/templates/intervention/detail/includes/deductions.html:37 #: templates/log.html:10 msgid "Action" msgstr "Aktionen" @@ -196,7 +196,7 @@ msgid "Select the unit" msgstr "Einheit wählen" #: compensation/forms.py:334 -#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:31 +#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:34 #: intervention/templates/intervention/detail/includes/deductions.html:31 msgid "Amount" msgstr "Menge" @@ -217,32 +217,37 @@ msgstr "Geben Sie die Daten der neuen Maßnahme ein" msgid "Added action" msgstr "Maßnahme hinzugefügt" -#: compensation/models.py:67 +#: compensation/models.py:77 msgid "cm" msgstr "" -#: compensation/models.py:68 +#: compensation/models.py:78 msgid "m" msgstr "" -#: compensation/models.py:69 +#: compensation/models.py:79 msgid "km" msgstr "" -#: compensation/models.py:70 +#: compensation/models.py:80 msgid "m²" msgstr "" -#: compensation/models.py:71 +#: compensation/models.py:81 msgid "ha" msgstr "" -#: compensation/models.py:72 +#: compensation/models.py:82 msgid "Pieces" msgstr "Stück" +#: compensation/models.py:299 +msgid "" +"Deductable surface can not be larger than existing surfaces in after states" +msgstr "" + #: compensation/tables.py:24 compensation/tables.py:164 ema/tables.py:28 -#: intervention/forms.py:30 intervention/tables.py:24 +#: intervention/forms.py:29 intervention/tables.py:23 #: intervention/templates/intervention/detail/includes/compensations.html:30 msgid "Identifier" msgstr "Kennung" @@ -253,8 +258,8 @@ msgstr "Kennung" #: compensation/templates/compensation/detail/eco_account/includes/documents.html:28 #: compensation/templates/compensation/detail/eco_account/view.html:31 #: ema/tables.py:33 ema/templates/ema/detail/includes/documents.html:28 -#: ema/templates/ema/detail/view.html:24 intervention/forms.py:37 -#: intervention/tables.py:29 +#: ema/templates/ema/detail/view.html:24 intervention/forms.py:36 +#: intervention/tables.py:28 #: intervention/templates/intervention/detail/includes/compensations.html:33 #: intervention/templates/intervention/detail/includes/documents.html:28 #: intervention/templates/intervention/detail/view.html:31 konova/forms.py:286 @@ -263,27 +268,28 @@ msgstr "Bezeichnung" #: compensation/tables.py:34 #: compensation/templates/compensation/detail/compensation/view.html:43 -#: intervention/tables.py:34 +#: intervention/tables.py:33 #: intervention/templates/intervention/detail/view.html:63 user/models.py:48 msgid "Checked" msgstr "Geprüft" #: compensation/tables.py:40 compensation/tables.py:179 #: compensation/templates/compensation/detail/compensation/view.html:57 -#: compensation/templates/compensation/detail/eco_account/view.html:43 +#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:31 +#: compensation/templates/compensation/detail/eco_account/view.html:44 #: ema/tables.py:38 ema/templates/ema/detail/view.html:28 -#: intervention/tables.py:40 +#: intervention/tables.py:39 #: intervention/templates/intervention/detail/view.html:77 user/models.py:49 msgid "Recorded" msgstr "Verzeichnet" #: compensation/tables.py:46 compensation/tables.py:185 ema/tables.py:44 -#: intervention/tables.py:52 +#: intervention/tables.py:51 msgid "Editable" msgstr "Freigegeben" #: compensation/tables.py:52 compensation/tables.py:191 ema/tables.py:50 -#: intervention/tables.py:58 +#: intervention/tables.py:57 msgid "Last edit" msgstr "Zuletzt bearbeitet" @@ -293,7 +299,7 @@ msgid "Compensations" msgstr "Kompensationen" #: compensation/tables.py:83 compensation/tables.py:222 ema/tables.py:82 -#: intervention/tables.py:89 +#: intervention/tables.py:88 msgid "Open {}" msgstr "Öffne {}" @@ -303,35 +309,35 @@ msgstr "Öffne {}" msgid "Compensation" msgstr "Kompensation" -#: compensation/tables.py:104 intervention/tables.py:108 +#: compensation/tables.py:104 intervention/tables.py:107 msgid "Not checked yet" msgstr "Noch nicht geprüft" -#: compensation/tables.py:109 intervention/tables.py:113 +#: compensation/tables.py:109 intervention/tables.py:112 msgid "Checked on {} by {}" msgstr "Am {} von {} geprüft worden" #: compensation/tables.py:128 #: compensation/templates/compensation/detail/compensation/view.html:60 -#: compensation/templates/compensation/detail/eco_account/view.html:46 +#: compensation/templates/compensation/detail/eco_account/view.html:47 #: ema/tables.py:101 ema/templates/ema/detail/view.html:31 -#: intervention/tables.py:132 +#: intervention/models.py:360 intervention/tables.py:131 #: intervention/templates/intervention/detail/view.html:80 msgid "Not recorded yet" msgstr "Noch nicht verzeichnet" #: compensation/tables.py:133 compensation/tables.py:260 ema/tables.py:106 -#: intervention/tables.py:137 +#: intervention/models.py:365 intervention/tables.py:136 msgid "Recorded on {} by {}" msgstr "Am {} von {} verzeichnet worden" #: compensation/tables.py:156 compensation/tables.py:283 ema/tables.py:129 -#: intervention/tables.py:160 +#: intervention/tables.py:159 msgid "Full access granted" msgstr "Für Sie freigegeben - Datensatz kann bearbeitet werden" #: compensation/tables.py:156 compensation/tables.py:283 ema/tables.py:129 -#: intervention/tables.py:160 +#: intervention/tables.py:159 msgid "Access not granted" msgstr "Nicht freigegeben - Datensatz nur lesbar" @@ -439,7 +445,7 @@ msgstr "Frist/Termin hinzufügen" #: compensation/templates/compensation/detail/compensation/includes/deadlines.html:28 #: compensation/templates/compensation/detail/eco_account/includes/deadlines.html:28 -#: ema/templates/ema/detail/includes/deadlines.html:28 intervention/forms.py:42 +#: ema/templates/ema/detail/includes/deadlines.html:28 intervention/forms.py:41 msgid "Type" msgstr "Typ" @@ -460,7 +466,7 @@ msgstr "Dokumente" #: compensation/templates/compensation/detail/eco_account/includes/documents.html:14 #: ema/templates/ema/detail/includes/documents.html:14 #: intervention/templates/intervention/detail/includes/documents.html:14 -#: konova/forms.py:328 +#: konova/forms.py:335 msgid "Add new document" msgstr "Neues Dokument hinzufügen" @@ -536,7 +542,7 @@ msgstr "Geprüft am " #: compensation/templates/compensation/detail/compensation/view.html:50 #: compensation/templates/compensation/detail/compensation/view.html:64 -#: compensation/templates/compensation/detail/eco_account/view.html:50 +#: compensation/templates/compensation/detail/eco_account/view.html:51 #: ema/templates/ema/detail/view.html:35 #: intervention/templates/intervention/detail/view.html:70 #: intervention/templates/intervention/detail/view.html:84 @@ -544,22 +550,22 @@ msgid "by" msgstr "von" #: compensation/templates/compensation/detail/compensation/view.html:64 -#: compensation/templates/compensation/detail/eco_account/view.html:50 +#: compensation/templates/compensation/detail/eco_account/view.html:51 #: ema/templates/ema/detail/view.html:35 #: intervention/templates/intervention/detail/view.html:84 msgid "Recorded on " msgstr "Verzeichnet am" #: compensation/templates/compensation/detail/compensation/view.html:71 -#: compensation/templates/compensation/detail/eco_account/view.html:69 +#: compensation/templates/compensation/detail/eco_account/view.html:70 #: ema/templates/ema/detail/view.html:54 #: intervention/templates/intervention/detail/view.html:103 msgid "Last modified" msgstr "Zuletzt bearbeitet" #: compensation/templates/compensation/detail/compensation/view.html:79 -#: compensation/templates/compensation/detail/eco_account/view.html:77 -#: ema/templates/ema/detail/view.html:69 intervention/forms.py:255 +#: compensation/templates/compensation/detail/eco_account/view.html:78 +#: ema/templates/ema/detail/view.html:69 intervention/forms.py:254 #: intervention/templates/intervention/detail/view.html:111 msgid "Shared with" msgstr "Freigegeben für" @@ -590,40 +596,28 @@ msgstr "Neue Abbuchung hinzufügen" msgid "Intervention Identifier" msgstr "Eingriffskennung" -#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:34 +#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:37 #: intervention/templates/intervention/detail/includes/deductions.html:34 #: user/models.py:51 msgid "Created" msgstr "Erstellt" -#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:43 -#: intervention/templates/intervention/detail/includes/deductions.html:43 -msgid "Eco-account deleted! Deduction invalid!" -msgstr "Ökokonto gelöscht! Abbuchung ungültig!" - -#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:43 -#: intervention/templates/intervention/detail/includes/deductions.html:43 -msgid "Eco-account not recorded! Deduction invalid!" -msgstr "Ökokonto nicht verzeichnet! Abbuchung ungültig!" - -#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:56 +#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:63 #: intervention/templates/intervention/detail/includes/deductions.html:56 msgid "Remove Deduction" msgstr "Abbuchung entfernen" #: compensation/templates/compensation/detail/eco_account/view.html:57 -#: ema/templates/ema/detail/view.html:42 -#: intervention/templates/intervention/detail/view.html:51 -msgid "Conservation office" -msgstr "Naturschutzbehörde" - -#: compensation/templates/compensation/detail/eco_account/view.html:60 -#: compensation/templates/compensation/detail/eco_account/view.html:64 -#: ema/templates/ema/detail/view.html:45 ema/templates/ema/detail/view.html:49 +#: compensation/templates/compensation/detail/eco_account/view.html:61 +#: compensation/templates/compensation/detail/eco_account/view.html:65 +#: 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 #: intervention/templates/intervention/detail/view.html:34 #: intervention/templates/intervention/detail/view.html:38 +#: intervention/templates/intervention/detail/view.html:42 #: intervention/templates/intervention/detail/view.html:46 +#: intervention/templates/intervention/detail/view.html:50 #: intervention/templates/intervention/detail/view.html:54 #: intervention/templates/intervention/detail/view.html:58 #: intervention/templates/intervention/detail/view.html:90 @@ -631,76 +625,82 @@ msgstr "Naturschutzbehörde" msgid "Missing" msgstr "Fehlt" -#: compensation/templates/compensation/detail/eco_account/view.html:61 +#: compensation/templates/compensation/detail/eco_account/view.html:58 +#: ema/templates/ema/detail/view.html:42 +#: intervention/templates/intervention/detail/view.html:51 +msgid "Conservation office" +msgstr "Naturschutzbehörde" + +#: compensation/templates/compensation/detail/eco_account/view.html:62 #: ema/templates/ema/detail/view.html:46 #: intervention/templates/intervention/detail/view.html:55 msgid "Conversation office file number" msgstr "Aktenzeichen Naturschutzbehörde" -#: compensation/templates/compensation/detail/eco_account/view.html:65 -#: ema/templates/ema/detail/view.html:50 intervention/forms.py:54 +#: compensation/templates/compensation/detail/eco_account/view.html:66 +#: ema/templates/ema/detail/view.html:50 intervention/forms.py:53 #: intervention/templates/intervention/detail/view.html:59 msgid "Intervention handler" msgstr "Eingriffsverursacher" -#: compensation/views/compensation_views.py:122 -#: compensation/views/eco_account_views.py:184 ema/views.py:127 -#: intervention/views.py:336 +#: compensation/views/compensation_views.py:123 +#: compensation/views/eco_account_views.py:190 ema/views.py:128 +#: intervention/views.py:391 msgid "Log" msgstr "Log" -#: compensation/views/compensation_views.py:143 +#: compensation/views/compensation_views.py:144 msgid "Compensation removed" msgstr "Kompensation entfernt" -#: compensation/views/compensation_views.py:162 -#: compensation/views/eco_account_views.py:283 ema/views.py:249 -#: intervention/views.py:93 +#: compensation/views/compensation_views.py:163 +#: compensation/views/eco_account_views.py:289 ema/views.py:250 +#: intervention/views.py:94 msgid "Document added" msgstr "Dokument hinzugefügt" -#: compensation/views/compensation_views.py:181 -#: compensation/views/eco_account_views.py:227 ema/views.py:193 +#: compensation/views/compensation_views.py:219 +#: compensation/views/eco_account_views.py:233 ema/views.py:194 msgid "State added" msgstr "Zustand hinzugefügt" -#: compensation/views/compensation_views.py:200 -#: compensation/views/eco_account_views.py:246 ema/views.py:212 +#: compensation/views/compensation_views.py:238 +#: compensation/views/eco_account_views.py:252 ema/views.py:213 msgid "Action added" msgstr "Maßnahme hinzugefügt" -#: compensation/views/compensation_views.py:219 -#: compensation/views/eco_account_views.py:265 ema/views.py:231 +#: compensation/views/compensation_views.py:257 +#: compensation/views/eco_account_views.py:271 ema/views.py:232 msgid "Deadline added" msgstr "Frist/Termin hinzugefügt" -#: compensation/views/compensation_views.py:238 +#: compensation/views/compensation_views.py:276 msgid "State removed" msgstr "Zustand gelöscht" -#: compensation/views/compensation_views.py:257 +#: compensation/views/compensation_views.py:295 msgid "Action removed" msgstr "Maßnahme entfernt" -#: compensation/views/eco_account_views.py:134 +#: compensation/views/eco_account_views.py:140 msgid "Eco-account removed" msgstr "Ökokonto entfernt" -#: compensation/views/eco_account_views.py:161 +#: compensation/views/eco_account_views.py:167 msgid "Deduction removed" msgstr "Abbuchung entfernt" -#: compensation/views/eco_account_views.py:204 ema/views.py:170 -#: intervention/views.py:376 +#: compensation/views/eco_account_views.py:210 ema/views.py:171 +#: intervention/views.py:431 msgid "{} unrecorded" msgstr "{} entzeichnet" -#: compensation/views/eco_account_views.py:204 ema/views.py:170 -#: intervention/views.py:376 +#: compensation/views/eco_account_views.py:210 ema/views.py:171 +#: intervention/views.py:431 msgid "{} recorded" msgstr "{} verzeichnet" -#: compensation/views/eco_account_views.py:303 intervention/views.py:358 +#: compensation/views/eco_account_views.py:346 intervention/views.py:413 msgid "Deduction added" msgstr "Abbuchung hinzugefügt" @@ -732,7 +732,7 @@ msgstr "" msgid "Payment funded compensation" msgstr "Ersatzzahlungsmaßnahme" -#: ema/views.py:153 +#: ema/views.py:154 msgid "EMA removed" msgstr "EMA entfernt" @@ -752,120 +752,120 @@ msgstr "Gemarkung" msgid "Search for district" msgstr "Nach Gemarkung suchen" -#: intervention/forms.py:33 +#: intervention/forms.py:32 msgid "Generated automatically if none was given" msgstr "Wird automatisch erzeugt, falls nicht angegeben" -#: intervention/forms.py:45 +#: intervention/forms.py:44 msgid "Which intervention type is this" msgstr "Welcher Eingriffstyp" -#: intervention/forms.py:48 +#: intervention/forms.py:47 #: intervention/templates/intervention/detail/view.html:39 msgid "Law" msgstr "Gesetz" -#: intervention/forms.py:51 +#: intervention/forms.py:50 msgid "Based on which law" msgstr "Basiert auf welchem Recht" -#: intervention/forms.py:57 +#: intervention/forms.py:56 msgid "Who performs the intervention" msgstr "Wer führt den Eingriff durch" -#: intervention/forms.py:60 +#: intervention/forms.py:59 msgid "Data provider" msgstr "Datenbereitsteller" -#: intervention/forms.py:62 +#: intervention/forms.py:61 msgid "Who provides the data for the intervention" msgstr "Wer stellt die Daten für den Eingriff zur Verfügung" -#: intervention/forms.py:67 +#: intervention/forms.py:66 msgid "Organization" msgstr "Organisation" -#: intervention/forms.py:73 +#: intervention/forms.py:72 msgid "Data provider details" msgstr "Datenbereitsteller Details" -#: intervention/forms.py:76 +#: intervention/forms.py:75 msgid "Further details" msgstr "Weitere Details" -#: intervention/forms.py:89 +#: intervention/forms.py:88 msgid "Map" msgstr "Karte" -#: intervention/forms.py:91 +#: intervention/forms.py:90 msgid "Where does the intervention take place" msgstr "Wo findet der Eingriff statt" -#: intervention/forms.py:99 +#: intervention/forms.py:98 msgid "Files" msgstr "Dateien" -#: intervention/forms.py:106 +#: intervention/forms.py:105 msgid "New intervention" msgstr "Neuer Eingriff" -#: intervention/forms.py:148 +#: intervention/forms.py:147 msgid "Edit intervention" msgstr "Eingriff bearbeiten" -#: intervention/forms.py:244 +#: intervention/forms.py:243 msgid "Share link" msgstr "Freigabelink" -#: intervention/forms.py:246 +#: intervention/forms.py:245 msgid "Send this link to users who you want to have writing access on the data" msgstr "Andere Nutzer erhalten über diesen Link Zugriff auf die Daten" -#: intervention/forms.py:258 +#: intervention/forms.py:257 msgid "Remove check to remove access for this user" msgstr "Wählen Sie die Nutzer ab, die keinen Zugriff mehr haben sollen" -#: intervention/forms.py:269 +#: intervention/forms.py:268 #: intervention/templates/intervention/detail/includes/controls.html:15 msgid "Share" msgstr "Freigabe" -#: intervention/forms.py:270 +#: intervention/forms.py:269 msgid "Share settings for {}" msgstr "Freigabe Einstellungen für {}" -#: intervention/forms.py:323 +#: intervention/forms.py:322 msgid "Date of revocation" msgstr "Datum des Widerspruchs" -#: intervention/forms.py:333 -#: intervention/templates/intervention/detail/includes/revocation.html:38 +#: intervention/forms.py:332 +#: intervention/templates/intervention/detail/includes/revocation.html:35 msgid "Document" msgstr "Dokument" -#: intervention/forms.py:336 konova/forms.py:305 +#: intervention/forms.py:335 konova/forms.py:305 msgid "Must be smaller than 15 Mb" msgstr "Muss kleiner als 15 Mb sein" -#: intervention/forms.py:359 +#: intervention/forms.py:358 #: intervention/templates/intervention/detail/includes/revocation.html:18 msgid "Add revocation" msgstr "Widerspruch hinzufügen" -#: intervention/forms.py:400 +#: intervention/forms.py:398 msgid "Checked intervention data" msgstr "Eingriffsdaten geprüft" -#: intervention/forms.py:406 +#: intervention/forms.py:404 msgid "Checked compensations data and payments" msgstr "Kompensationen und Zahlungen geprüft" -#: intervention/forms.py:414 +#: intervention/forms.py:412 #: intervention/templates/intervention/detail/includes/controls.html:19 msgid "Run check" msgstr "Prüfung vornehmen" -#: intervention/forms.py:415 konova/forms.py:376 +#: intervention/forms.py:413 konova/forms.py:389 msgid "" "I, {} {}, confirm that all necessary control steps have been performed by " "myself." @@ -878,7 +878,7 @@ msgid "Only recorded accounts can be selected for deductions" msgstr "Nur verzeichnete Ökokonten können für Abbuchungen verwendet werden." #: intervention/forms.py:483 intervention/forms.py:490 -#: intervention/tables.py:89 +#: intervention/tables.py:88 #: intervention/templates/intervention/detail/view.html:19 #: konova/templates/konova/home.html:11 templates/navbar.html:22 msgid "Intervention" @@ -912,49 +912,50 @@ msgstr "" "Das Ökokonto {} hat für eine Abbuchung von {} m² nicht ausreichend " "Restfläche. Es stehen noch {} m² zur Verfügung." -#: intervention/models.py:200 +#: intervention/models.py:306 msgid "Registration office file number missing" msgstr "Aktenzeichen Zulassungsbehörde fehlt" -#: intervention/models.py:203 +#: intervention/models.py:309 msgid "Conversation office file number missing" msgstr "Aktenzeichen Naturschutzbehörde fehlt" -#: intervention/models.py:206 +#: intervention/models.py:312 msgid "Responsible data missing" msgstr "Daten zu Verantwortlichen fehlen" -#: intervention/models.py:220 +#: intervention/models.py:326 msgid "Revocation exists" msgstr "Widerspruch liegt vor" -#: intervention/models.py:223 +#: intervention/models.py:329 msgid "Registration date missing" msgstr "Datum Zulassung bzw. Satzungsbeschluss fehlt" -#: intervention/models.py:226 +#: intervention/models.py:332 msgid "Binding on missing" msgstr "Datum Bestandskraft fehlt" -#: intervention/models.py:228 +#: intervention/models.py:334 msgid "Legal data missing" msgstr "Rechtliche Daten fehlen" -#: intervention/tables.py:46 +#: intervention/tables.py:45 #: intervention/templates/intervention/detail/includes/revocation.html:8 +#: intervention/templates/intervention/detail/includes/revocation.html:55 #: intervention/templates/intervention/detail/view.html:99 msgid "Revocation" msgstr "Widerspruch" -#: intervention/tables.py:67 +#: intervention/tables.py:66 msgid "Interventions" msgstr "Eingriffe" -#: intervention/tables.py:177 +#: intervention/tables.py:176 msgid "No revocation" msgstr "Kein Widerspruch" -#: intervention/tables.py:183 +#: intervention/tables.py:182 msgid "Revocation from {}, added on {} by {}" msgstr "Widerspruch vom {}, am {} von {} hinzugefügt" @@ -966,6 +967,18 @@ msgstr "Neue Kompensation hinzufügen" msgid "Remove compensation" msgstr "Kompensation entfernen" +#: intervention/templates/intervention/detail/includes/deductions.html:28 +msgid "Account Identifier" +msgstr "Ökokonto Kennung" + +#: intervention/templates/intervention/detail/includes/deductions.html:43 +msgid "Eco-account deleted! Deduction invalid!" +msgstr "Ökokonto gelöscht! Abbuchung ungültig!" + +#: intervention/templates/intervention/detail/includes/deductions.html:43 +msgid "Eco-account not recorded! Deduction invalid!" +msgstr "Ökokonto nicht verzeichnet! Abbuchung ungültig!" + #: intervention/templates/intervention/detail/includes/payments.html:8 msgid "Payments" msgstr "Ersatzzahlungen" @@ -992,10 +1005,6 @@ msgstr "Vom" msgid "Remove revocation" msgstr "Widerspruch entfernen" -#: intervention/templates/intervention/detail/includes/deductions.html:28 -msgid "Account Identifier" -msgstr "Ökokonto Kennung" - #: intervention/templates/intervention/detail/view.html:35 msgid "Process type" msgstr "Verfahrenstyp" @@ -1020,19 +1029,19 @@ msgstr "Datum Bestandskraft" msgid "Exists" msgstr "vorhanden" -#: intervention/views.py:65 +#: intervention/views.py:66 msgid "Intervention {} added" msgstr "Eingriff {} hinzugefügt" -#: intervention/views.py:68 intervention/views.py:169 +#: intervention/views.py:69 intervention/views.py:224 msgid "Invalid input" msgstr "Eingabe fehlerhaft" -#: intervention/views.py:127 +#: intervention/views.py:182 msgid "This intervention has a revocation from {}" msgstr "Es existiert ein Widerspruch vom {}" -#: intervention/views.py:143 +#: intervention/views.py:198 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 " @@ -1042,43 +1051,43 @@ msgstr "" "bedeutet, dass Sie nur lesenden Zugriff hierauf haben und weder bearbeiten, " "noch Prüfungen durchführen oder verzeichnen können." -#: intervention/views.py:166 +#: intervention/views.py:221 msgid "{} edited" msgstr "{} bearbeitet" -#: intervention/views.py:195 +#: intervention/views.py:250 msgid "{} removed" msgstr "{} entfernt" -#: intervention/views.py:216 +#: intervention/views.py:271 msgid "Revocation removed" msgstr "Widerspruch entfernt" -#: intervention/views.py:242 +#: intervention/views.py:297 msgid "{} has already been shared with you" msgstr "{} wurde bereits für Sie freigegeben" -#: intervention/views.py:247 +#: intervention/views.py:302 msgid "{} has been shared with you" msgstr "{} ist nun für Sie freigegeben" -#: intervention/views.py:254 +#: intervention/views.py:309 msgid "Share link invalid" msgstr "Freigabelink ungültig" -#: intervention/views.py:275 +#: intervention/views.py:330 msgid "Share settings updated" msgstr "Freigabe Einstellungen aktualisiert" -#: intervention/views.py:294 +#: intervention/views.py:349 msgid "Check performed" msgstr "Prüfung durchgeführt" -#: intervention/views.py:314 +#: intervention/views.py:369 msgid "Revocation added" msgstr "Widerspruch hinzugefügt" -#: intervention/views.py:381 +#: intervention/views.py:436 msgid "There are errors on this intervention:" msgstr "Es liegen Fehler in diesem Eingriff vor:" @@ -1136,27 +1145,27 @@ msgstr "Wann wurde diese Datei erstellt oder das Foto aufgenommen?" msgid "File" msgstr "Datei" -#: konova/forms.py:353 +#: konova/forms.py:366 msgid "Added document" msgstr "Dokument hinzugefügt" -#: konova/forms.py:367 +#: konova/forms.py:380 msgid "Confirm record" msgstr "Verzeichnen bestätigen" -#: konova/forms.py:375 +#: konova/forms.py:388 msgid "Record data" msgstr "Daten verzeichnen" -#: konova/forms.py:380 +#: konova/forms.py:395 msgid "Confirm unrecord" msgstr "Entzeichnen bestätigen" -#: konova/forms.py:381 +#: konova/forms.py:396 msgid "Unrecord data" msgstr "Daten entzeichnen" -#: konova/forms.py:382 +#: konova/forms.py:397 msgid "I, {} {}, confirm that this data must be unrecorded." msgstr "" "Ich, {} {}, bestätige, dass diese Daten wieder entzeichnet werden müssen." @@ -1185,19 +1194,19 @@ msgstr "Wenn meine freigegebenen Daten gelöscht wurden" msgid "On registered data edited" msgstr "Wenn meine freigegebenen Daten bearbeitet wurden" -#: konova/models.py:189 +#: konova/models.py:190 msgid "Finished" msgstr "Umgesetzt bis" -#: konova/models.py:190 +#: konova/models.py:191 msgid "Maintain" msgstr "Unterhaltung bis" -#: konova/models.py:191 +#: konova/models.py:192 msgid "Control" msgstr "Kontrolle am" -#: konova/models.py:192 +#: konova/models.py:193 msgid "Other" msgstr "Sonstige" @@ -1233,6 +1242,10 @@ msgstr "Anzeigen" msgid "Deduct" msgstr "Abbuchen" +#: konova/utils/documents.py:52 +msgid "Document '{}' deleted" +msgstr "Dokument '{}' gelöscht" + #: konova/utils/message_templates.py:11 msgid "There was an error on this form." msgstr "Es gab einen Fehler im Formular." @@ -1253,11 +1266,7 @@ msgstr "Schauen Sie rein" msgid "{} has been checked successfully by user {}! {}" msgstr "{} wurde erfolgreich vom Nutzer {} geprüft! {}" -#: konova/views.py:138 -msgid "Document '{}' deleted" -msgstr "Dokument '{}' gelöscht" - -#: konova/views.py:157 +#: konova/views.py:115 msgid "Deadline removed" msgstr "Frist gelöscht" From df4052ac00f8a8dce3082a81e1097ed16ca165e6 Mon Sep 17 00:00:00 2001 From: mipel Date: Mon, 20 Sep 2021 09:03:03 +0200 Subject: [PATCH 2/3] #18 EcoAccount funding * adds constraint for setting the deductable_surface too low -> existing deductions would not be valid anymore * adds/updates translations --- compensation/models.py | 8 +++ locale/de/LC_MESSAGES/django.mo | Bin 19398 -> 19884 bytes locale/de/LC_MESSAGES/django.po | 107 +++++++++++++++++--------------- 3 files changed, 66 insertions(+), 49 deletions(-) diff --git a/compensation/models.py b/compensation/models.py index 990951b2..bc6aaa58 100644 --- a/compensation/models.py +++ b/compensation/models.py @@ -298,6 +298,14 @@ class EcoAccount(AbstractCompensation): if self.deductable_surface > after_state_sum: raise ValidationError(_("Deductable surface can not be larger than existing surfaces in after states")) + # Deductable surface can not be lower than amount of already deducted surfaces + # User needs to contact deducting user in case of further problems + deducted_sum = self.get_deductions_surface() + if self.deductable_surface < deducted_sum: + raise ValidationError( + _("Deductable surface can not be smaller than the sum of already existing deductions. Please contact the responsible users for the deductions!") + ) + def save(self, *args, **kwargs): if self.identifier is None or len(self.identifier) == 0: # Create new identifier diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo index 2ee53066cc1b83e60649f49b7f04d58883dd7e69..25b93fb8ee941c123accd3f177d6164916ccbea0 100644 GIT binary patch delta 6671 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 delta 6172 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\n" "Language-Team: LANGUAGE \n" @@ -53,7 +53,7 @@ msgstr "Zahlung wird an diesem Datum erwartet" #: ema/templates/ema/detail/includes/actions.html:34 #: ema/templates/ema/detail/includes/deadlines.html:34 #: ema/templates/ema/detail/includes/documents.html:31 -#: intervention/forms.py:345 +#: intervention/forms.py:346 #: intervention/templates/intervention/detail/includes/documents.html:31 #: intervention/templates/intervention/detail/includes/payments.html:34 #: intervention/templates/intervention/detail/includes/revocation.html:38 @@ -62,7 +62,7 @@ msgid "Comment" msgstr "Kommentar" #: compensation/forms.py:68 compensation/forms.py:265 compensation/forms.py:346 -#: intervention/forms.py:347 konova/forms.py:317 +#: intervention/forms.py:348 konova/forms.py:317 msgid "Additional comment, maximum {} letters" msgstr "Zusätzlicher Kommentar, maximal {} Zeichen" @@ -97,11 +97,11 @@ msgstr "Biotoptyp wählen" #: 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.py:478 +#: intervention/forms.py:479 msgid "Surface" msgstr "Fläche" -#: compensation/forms.py:155 intervention/forms.py:480 +#: compensation/forms.py:155 intervention/forms.py:481 msgid "in m²" msgstr "" @@ -133,7 +133,7 @@ msgstr "Fristart wählen" #: compensation/templates/compensation/detail/compensation/includes/deadlines.html:31 #: compensation/templates/compensation/detail/eco_account/includes/deadlines.html:31 #: ema/templates/ema/detail/includes/deadlines.html:31 -#: intervention/forms.py:320 +#: intervention/forms.py:321 msgid "Date" msgstr "Datum" @@ -245,9 +245,18 @@ msgstr "Stück" msgid "" "Deductable surface can not be larger than existing surfaces in after states" msgstr "" +"Die abbuchbare Fläche darf die Gesamtfläche der Zielzustände nicht überschreiten" + +#: compensation/models.py:306 +msgid "" +"Deductable surface can not be smaller than the sum of already existing " +"deductions. Please contact the responsible users for the deductions!" +msgstr "" +"Es wurde bereits mehr Fläche abgebucht, als Sie nun als abbuchbar einstellen wollen. " +"Kontaktieren Sie die für die Abbuchungen verantwortlichen Nutzer!" #: compensation/tables.py:24 compensation/tables.py:164 ema/tables.py:28 -#: intervention/forms.py:29 intervention/tables.py:23 +#: intervention/forms.py:30 intervention/tables.py:23 #: intervention/templates/intervention/detail/includes/compensations.html:30 msgid "Identifier" msgstr "Kennung" @@ -258,7 +267,7 @@ msgstr "Kennung" #: compensation/templates/compensation/detail/eco_account/includes/documents.html:28 #: compensation/templates/compensation/detail/eco_account/view.html:31 #: ema/tables.py:33 ema/templates/ema/detail/includes/documents.html:28 -#: ema/templates/ema/detail/view.html:24 intervention/forms.py:36 +#: ema/templates/ema/detail/view.html:24 intervention/forms.py:37 #: intervention/tables.py:28 #: intervention/templates/intervention/detail/includes/compensations.html:33 #: intervention/templates/intervention/detail/includes/documents.html:28 @@ -353,7 +362,7 @@ msgstr "Ökokonten" #: compensation/tables.py:222 #: compensation/templates/compensation/detail/eco_account/view.html:19 -#: intervention/forms.py:462 intervention/forms.py:469 +#: intervention/forms.py:463 intervention/forms.py:470 #: konova/templates/konova/home.html:88 templates/navbar.html:34 msgid "Eco-account" msgstr "Ökokonto" @@ -445,7 +454,7 @@ msgstr "Frist/Termin hinzufügen" #: compensation/templates/compensation/detail/compensation/includes/deadlines.html:28 #: compensation/templates/compensation/detail/eco_account/includes/deadlines.html:28 -#: ema/templates/ema/detail/includes/deadlines.html:28 intervention/forms.py:41 +#: ema/templates/ema/detail/includes/deadlines.html:28 intervention/forms.py:42 msgid "Type" msgstr "Typ" @@ -565,7 +574,7 @@ msgstr "Zuletzt bearbeitet" #: compensation/templates/compensation/detail/compensation/view.html:79 #: compensation/templates/compensation/detail/eco_account/view.html:78 -#: ema/templates/ema/detail/view.html:69 intervention/forms.py:254 +#: ema/templates/ema/detail/view.html:69 intervention/forms.py:255 #: intervention/templates/intervention/detail/view.html:111 msgid "Shared with" msgstr "Freigegeben für" @@ -638,7 +647,7 @@ msgid "Conversation office file number" msgstr "Aktenzeichen Naturschutzbehörde" #: compensation/templates/compensation/detail/eco_account/view.html:66 -#: ema/templates/ema/detail/view.html:50 intervention/forms.py:53 +#: ema/templates/ema/detail/view.html:50 intervention/forms.py:54 #: intervention/templates/intervention/detail/view.html:59 msgid "Intervention handler" msgstr "Eingriffsverursacher" @@ -752,120 +761,120 @@ msgstr "Gemarkung" msgid "Search for district" msgstr "Nach Gemarkung suchen" -#: intervention/forms.py:32 +#: intervention/forms.py:33 msgid "Generated automatically if none was given" msgstr "Wird automatisch erzeugt, falls nicht angegeben" -#: intervention/forms.py:44 +#: intervention/forms.py:45 msgid "Which intervention type is this" msgstr "Welcher Eingriffstyp" -#: intervention/forms.py:47 +#: intervention/forms.py:48 #: intervention/templates/intervention/detail/view.html:39 msgid "Law" msgstr "Gesetz" -#: intervention/forms.py:50 +#: intervention/forms.py:51 msgid "Based on which law" msgstr "Basiert auf welchem Recht" -#: intervention/forms.py:56 +#: intervention/forms.py:57 msgid "Who performs the intervention" msgstr "Wer führt den Eingriff durch" -#: intervention/forms.py:59 +#: intervention/forms.py:60 msgid "Data provider" msgstr "Datenbereitsteller" -#: intervention/forms.py:61 +#: intervention/forms.py:62 msgid "Who provides the data for the intervention" msgstr "Wer stellt die Daten für den Eingriff zur Verfügung" -#: intervention/forms.py:66 +#: intervention/forms.py:67 msgid "Organization" msgstr "Organisation" -#: intervention/forms.py:72 +#: intervention/forms.py:73 msgid "Data provider details" msgstr "Datenbereitsteller Details" -#: intervention/forms.py:75 +#: intervention/forms.py:76 msgid "Further details" msgstr "Weitere Details" -#: intervention/forms.py:88 +#: intervention/forms.py:89 msgid "Map" msgstr "Karte" -#: intervention/forms.py:90 +#: intervention/forms.py:91 msgid "Where does the intervention take place" msgstr "Wo findet der Eingriff statt" -#: intervention/forms.py:98 +#: intervention/forms.py:99 msgid "Files" msgstr "Dateien" -#: intervention/forms.py:105 +#: intervention/forms.py:106 msgid "New intervention" msgstr "Neuer Eingriff" -#: intervention/forms.py:147 +#: intervention/forms.py:148 msgid "Edit intervention" msgstr "Eingriff bearbeiten" -#: intervention/forms.py:243 +#: intervention/forms.py:244 msgid "Share link" msgstr "Freigabelink" -#: intervention/forms.py:245 +#: intervention/forms.py:246 msgid "Send this link to users who you want to have writing access on the data" msgstr "Andere Nutzer erhalten über diesen Link Zugriff auf die Daten" -#: intervention/forms.py:257 +#: intervention/forms.py:258 msgid "Remove check to remove access for this user" msgstr "Wählen Sie die Nutzer ab, die keinen Zugriff mehr haben sollen" -#: intervention/forms.py:268 +#: intervention/forms.py:269 #: intervention/templates/intervention/detail/includes/controls.html:15 msgid "Share" msgstr "Freigabe" -#: intervention/forms.py:269 +#: intervention/forms.py:270 msgid "Share settings for {}" msgstr "Freigabe Einstellungen für {}" -#: intervention/forms.py:322 +#: intervention/forms.py:323 msgid "Date of revocation" msgstr "Datum des Widerspruchs" -#: intervention/forms.py:332 +#: intervention/forms.py:333 #: intervention/templates/intervention/detail/includes/revocation.html:35 msgid "Document" msgstr "Dokument" -#: intervention/forms.py:335 konova/forms.py:305 +#: intervention/forms.py:336 konova/forms.py:305 msgid "Must be smaller than 15 Mb" msgstr "Muss kleiner als 15 Mb sein" -#: intervention/forms.py:358 +#: intervention/forms.py:359 #: intervention/templates/intervention/detail/includes/revocation.html:18 msgid "Add revocation" msgstr "Widerspruch hinzufügen" -#: intervention/forms.py:398 +#: intervention/forms.py:399 msgid "Checked intervention data" msgstr "Eingriffsdaten geprüft" -#: intervention/forms.py:404 +#: intervention/forms.py:405 msgid "Checked compensations data and payments" msgstr "Kompensationen und Zahlungen geprüft" -#: intervention/forms.py:412 +#: intervention/forms.py:413 #: intervention/templates/intervention/detail/includes/controls.html:19 msgid "Run check" msgstr "Prüfung vornehmen" -#: intervention/forms.py:413 konova/forms.py:389 +#: intervention/forms.py:414 konova/forms.py:389 msgid "" "I, {} {}, confirm that all necessary control steps have been performed by " "myself." @@ -873,30 +882,30 @@ msgstr "" "Ich, {} {}, bestätige, dass die notwendigen Kontrollschritte durchgeführt " "wurden:" -#: intervention/forms.py:464 +#: intervention/forms.py:465 msgid "Only recorded accounts can be selected for deductions" msgstr "Nur verzeichnete Ökokonten können für Abbuchungen verwendet werden." -#: intervention/forms.py:483 intervention/forms.py:490 +#: intervention/forms.py:484 intervention/forms.py:491 #: intervention/tables.py:88 #: intervention/templates/intervention/detail/view.html:19 #: konova/templates/konova/home.html:11 templates/navbar.html:22 msgid "Intervention" msgstr "Eingriff" -#: intervention/forms.py:485 +#: intervention/forms.py:486 msgid "Only shared interventions can be selected" msgstr "Nur freigegebene Eingriffe können gewählt werden" -#: intervention/forms.py:498 +#: intervention/forms.py:499 msgid "New Deduction" msgstr "Neue Abbuchung" -#: intervention/forms.py:499 +#: intervention/forms.py:500 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.py:535 +#: intervention/forms.py:536 msgid "" "Eco-account {} is not recorded yet. You can only deduct from recorded " "accounts." @@ -904,7 +913,7 @@ msgstr "" "Ökokonto {} ist noch nicht verzeichnet. Abbuchungen können nur von " "verzeichneten Ökokonten erfolgen." -#: intervention/forms.py:548 +#: intervention/forms.py:549 msgid "" "The account {} has not enough surface for a deduction of {} m². There are " "only {} m² left" From 7612b1eab28bb2970886a07e009b7c49899ac3cd Mon Sep 17 00:00:00 2001 From: mipel Date: Mon, 20 Sep 2021 12:47:55 +0200 Subject: [PATCH 3/3] #18 EcoAccount funding * adds fundings field to AbstractCompensation model * adds funded by to detail view templates of Compensation and EcoAccount * adds/updates translations --- compensation/models.py | 15 +++++++- .../detail/compensation/view.html | 13 +++++++ .../compensation/detail/eco_account/view.html | 13 +++++++ locale/de/LC_MESSAGES/django.mo | Bin 19884 -> 19949 bytes locale/de/LC_MESSAGES/django.po | 34 ++++++++++-------- 5 files changed, 60 insertions(+), 15 deletions(-) diff --git a/compensation/models.py b/compensation/models.py index bc6aaa58..4ab3f952 100644 --- a/compensation/models.py +++ b/compensation/models.py @@ -15,7 +15,8 @@ from django.db.models import Sum, QuerySet from django.utils.translation import gettext_lazy as _ from codelist.models import KonovaCode -from codelist.settings import CODELIST_COMPENSATION_ACTION_ID, CODELIST_BIOTOPES_ID +from codelist.settings import CODELIST_COMPENSATION_ACTION_ID, CODELIST_BIOTOPES_ID, \ + CODELIST_COMPENSATION_COMBINATION_ID from intervention.models import Intervention, ResponsibilityData from konova.models import BaseObject, BaseResource, Geometry, UuidModel, AbstractDocument, \ generate_document_file_upload_path @@ -138,6 +139,18 @@ class AbstractCompensation(BaseObject): after_states = models.ManyToManyField(CompensationState, blank=True, related_name='+', help_text="Refers to 'Zielzustand Biotop'") actions = models.ManyToManyField(CompensationAction, blank=True, help_text="Refers to 'Maßnahmen'") + fundings = models.ManyToManyField( + KonovaCode, + null=True, + blank=True, + limit_choices_to={ + "code_lists__in": [CODELIST_COMPENSATION_COMBINATION_ID], + "is_selectable": True, + "is_archived": False, + }, + help_text="List of funding project codes", + ) + deadlines = models.ManyToManyField("konova.Deadline", blank=True, related_name="+") geometry = models.ForeignKey(Geometry, null=True, blank=True, on_delete=models.SET_NULL) diff --git a/compensation/templates/compensation/detail/compensation/view.html b/compensation/templates/compensation/detail/compensation/view.html index f0c0c1ad..6401cdb7 100644 --- a/compensation/templates/compensation/detail/compensation/view.html +++ b/compensation/templates/compensation/detail/compensation/view.html @@ -66,6 +66,19 @@ {% endif %} + + {% trans 'Funded by' %} + + {% for funding in obj.fundings.all %} +
+ {{ funding.short_name}} +
+
+ {% empty %} + None + {% endfor %} + + {% trans 'Last modified' %} diff --git a/compensation/templates/compensation/detail/eco_account/view.html b/compensation/templates/compensation/detail/eco_account/view.html index 7af9b648..f03c22b2 100644 --- a/compensation/templates/compensation/detail/eco_account/view.html +++ b/compensation/templates/compensation/detail/eco_account/view.html @@ -65,6 +65,19 @@ {% trans 'Intervention handler' %} {{obj.responsible.handler|default_if_none:""}} + + {% trans 'Funded by' %} + + {% for funding in obj.fundings.all %} +
+ {{ funding.short_name}} +
+
+ {% empty %} + {% trans 'None' %} + {% endfor %} + + {% trans 'Last modified' %} diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo index 25b93fb8ee941c123accd3f177d6164916ccbea0..51178b8f6d163804c310eeed53863a8a7add13e8 100644 GIT binary patch delta 6282 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 delta 6219 zcmYk=33yId9>?($**7GD$R0!pX^>D$Vo9{Il}0eOGHp?li7G9n+ikSA8G|CBR7zA$ zTZXZ<#*(VUOf4x>%NWb3pcHLwwM=QhzxN)`)ARV}bIy71J@=gdIrmK-SC@LNS?cAS z4)-ZGlz1;=VlX1m7>9aDxO$BVh%{ya2IAYe3}dlj17mba7i&KH(H@P#I2J>23f9Ew zw!at~(O%*9JEoFK1RaO5HeSLoyl2}XQO4Aw9gB4^6?J`A)W8E#4;p3L6RbrTO8-36 zgi5gqevICD2>py>%n>RY;3VpXOGpyTZPW_AqKyf{2vj>Bb$x4VXVl7jV=CrjLo7l~ z`~&pIO_+?^k+qp~7|ip{11efs5c$`Iai|A0L9H|$^?7&O9)_Cec+~X{DibqM87x6v zzuJDj4FhQJw(b2GPx~-Bn$b-vx*>**Rq9)!R+No;Ko3*~@=y;RhIO$3eeg|GW~SNC z7o#ThA!cNLlHypR^GpLnZv|d9^zlgqg)uEyrZ=fFZGis)_6PZ0Gpa$rPx-ri>5c6mc z#SC1F+M=`A7Ox^nF^xHi37CUq-Hb$KWGd>6ISZ-Or?LWd*tVilT7}x{bJpvq)avC` ze-P?5ibQ1~#5maWX zQHSgf>H+>q?jZ_8ZCz8;d!31VNt%K7^KqyNOvg4@ip}sahVp##fQn9gNE3HO5$H=h z5!IiJnn)Vz5M?26tQm}2$s|;&r=w2yT=c`Gs0@{%?q6ryJJ65zUUYQBAu1Z+6zYZx zs1@Hp9hLxI39T#&wbBgaMKIlwe`X9nN^u_gVOmo+qis>N@Q0} zVhdNNJCy`F#vzk3^Dq#%p;l69-G`dsA?s1p1W%wQb`FE^y8ZkW{1iR`lNE0{q$=n=QSGcvX*z#6y+HPI!gEn1Fx&{hn=U8spw zp%!)=`N}ZWn5OsNKh1ru9>rij$Vc5U0zt#Ga4Q3>3k|m;UcVs%TTY=T2v->q6YjDHBhx}-$tc0 zjIT8rZB0UbQKg{{TQAhaCZIAi3zKku8}hH2e@2J)>LBWy?G$Rjd$!+)6QhZQp(YxG zb+IAV#CG=cT-12|tOckEPeq-H64ZNNihACvw&Xv7$_6?#)2~r0y@yJD#G~#npET6W z)2*2pPWv&`b%Rh7dlBp56x8+eP~*Le%Irqegm&A{k2zHO({TnDW1DvF09B|5oJS3G z$LiJI%}kIr0`++u*2iR2W;)x?2cYLLqf%agz8vOxs0=tI9o!pMqAuKuN__=3!z$#U zn>(lprF1mrIm|*`zY4XY^{7KxfqIM1+Rwj7o@MT$#!b(3pO=MX%rW^?v^RrMuglX& zGR!zs%2p$9p7|7Y-M6Sz|A0EYw=f^?VK3~HkVKVvNIT3y|(Nkt8ug?f8>pw7$-*bjQtsI44>TJc2Gmd(aSJl}jmMFW0?n&BA?z+0#kKR^u-*28@Z;!qRqVB1fk zJ}*SwKLs_>IjGDmM@?`I`r~$-j1{QAKTTFo_xJZ`OyGmL$jr=o48+5zflk}@cc@g~ zL=AYyey(pHJvan)eH<#YDX0my!XWH~x~~Uz;Q1zxN(|0Mt>7cnYqk^H;7Lrt@ZRo3 z(~)meGYp&HV$_7nQ4iRS8m9{NplZ}aE@LoWM{UsqbdsoqJmJ2dtx>1>8PuViin`$) z+g^rVv?mfOJBf5+4)G#!kNA@Kn5ZUH4iJ92iQ;W_TgLoL`|m^RU80y+PN<~1c>dg4 zWb3~rn1M#o@c}X0eo&jfrM7+*wGfr(h&QdL)SVMFn))FcwTs%J?@N>Rx*TK=YeiNgK#>7BEZ_{tfpJ+J$=Eo-6 zn}QpOnS>731mZj5B|@c)_=xzF_&xCj@vvNeSh4=W`XMF~yNKTraV+Q=)PbZpW;Z`; z(#hW!p1*{);T@s}@gxz+XF7Gu;9>bEl@-J*#Op*;Lgl=R=k(X0?!|pyVI}b_v6t{A zS`&XK)@cI=P^rg-El_14QAl(oejro|h{41LH7N6l3L=3}*+Fa}-d2Osk~rk4@w!>V zc*g&z|7_bq=&u9Ri1>xbAyl$m%t@>GBe9COK#U-I5itzd7r!Bf5ibxb*N7p+Sv4r* zi7B3%`=c4WLxgg_p6~g;Ul~k1q6+0b7qi~_GTtTvxTzI-+y4JrldapWQ8sBvDEPdB$V?X*9wJm2*UMVwM_|T%rLNK8{<7?nD+*gTB9_$^xQ3@dR;& z=tn#(cd0}Y0k-3B_zCeE@g`AA@Bd*cvG_geZ*!H+L|39NF@sQ\n" "Language-Team: LANGUAGE \n" @@ -217,43 +217,44 @@ msgstr "Geben Sie die Daten der neuen Maßnahme ein" msgid "Added action" msgstr "Maßnahme hinzugefügt" -#: compensation/models.py:77 +#: compensation/models.py:78 msgid "cm" msgstr "" -#: compensation/models.py:78 +#: compensation/models.py:79 msgid "m" msgstr "" -#: compensation/models.py:79 +#: compensation/models.py:80 msgid "km" msgstr "" -#: compensation/models.py:80 +#: compensation/models.py:81 msgid "m²" msgstr "" -#: compensation/models.py:81 +#: compensation/models.py:82 msgid "ha" msgstr "" -#: compensation/models.py:82 +#: compensation/models.py:83 msgid "Pieces" msgstr "Stück" -#: compensation/models.py:299 +#: compensation/models.py:312 msgid "" "Deductable surface can not be larger than existing surfaces in after states" msgstr "" -"Die abbuchbare Fläche darf die Gesamtfläche der Zielzustände nicht überschreiten" +"Die abbuchbare Fläche darf die Gesamtfläche der Zielzustände nicht " +"überschreiten" -#: compensation/models.py:306 +#: compensation/models.py:319 msgid "" "Deductable surface can not be smaller than the sum of already existing " "deductions. Please contact the responsible users for the deductions!" msgstr "" -"Es wurde bereits mehr Fläche abgebucht, als Sie nun als abbuchbar einstellen wollen. " -"Kontaktieren Sie die für die Abbuchungen verantwortlichen Nutzer!" +"Es wurde bereits mehr Fläche abgebucht, als Sie nun als abbuchbar einstellen " +"wollen. Kontaktieren Sie die für die Abbuchungen verantwortlichen Nutzer!" #: compensation/tables.py:24 compensation/tables.py:164 ema/tables.py:28 #: intervention/forms.py:30 intervention/tables.py:23 @@ -566,14 +567,14 @@ 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:83 #: ema/templates/ema/detail/view.html:54 #: intervention/templates/intervention/detail/view.html:103 msgid "Last modified" msgstr "Zuletzt bearbeitet" #: 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:91 #: ema/templates/ema/detail/view.html:69 intervention/forms.py:255 #: intervention/templates/intervention/detail/view.html:111 msgid "Shared with" @@ -652,6 +653,11 @@ msgstr "Aktenzeichen Naturschutzbehörde" msgid "Intervention handler" msgstr "Eingriffsverursacher" +#: compensation/templates/compensation/detail/eco_account/view.html:70 +msgid "Funded by" +msgstr "Gefördert mit" + + #: compensation/views/compensation_views.py:123 #: compensation/views/eco_account_views.py:190 ema/views.py:128 #: intervention/views.py:391