From aade8ffb324652ba619242203f91259207b81f4a Mon Sep 17 00:00:00 2001 From: mpeltriaux <michel.peltriaux@sgdnord.rlp.de> Date: Mon, 31 Jan 2022 10:52:35 +0100 Subject: [PATCH 1/5] # 88 Additional biotope codes * adds codelist 975 to project * adds new form field for adding extra biotope information --- .../management/commands/update_codelist.py | 3 +- codelist/settings.py | 1 + compensation/forms/modalForms.py | 19 ++++++++++- konova/autocompletes.py | 33 ++++++++++++++++++- konova/static/css/konova.css | 3 ++ konova/urls.py | 3 +- 6 files changed, 58 insertions(+), 4 deletions(-) diff --git a/codelist/management/commands/update_codelist.py b/codelist/management/commands/update_codelist.py index 5bb55b6a..aa6e45a9 100644 --- a/codelist/management/commands/update_codelist.py +++ b/codelist/management/commands/update_codelist.py @@ -13,7 +13,7 @@ from codelist.models import KonovaCode, KonovaCodeList from codelist.settings import CODELIST_INTERVENTION_HANDLER_ID, CODELIST_CONSERVATION_OFFICE_ID, \ CODELIST_REGISTRATION_OFFICE_ID, CODELIST_BIOTOPES_ID, CODELIST_LAW_ID, CODELIST_COMPENSATION_HANDLER_ID, \ CODELIST_COMPENSATION_ACTION_ID, CODELIST_COMPENSATION_ACTION_CLASS_ID, CODELIST_COMPENSATION_ADDITIONAL_TYPE_ID, \ - CODELIST_BASE_URL, CODELIST_PROCESS_TYPE_ID + CODELIST_BASE_URL, CODELIST_PROCESS_TYPE_ID, CODELIST_BIOTOPES_EXTRA_CODES_ID from konova.management.commands.setup import BaseKonovaCommand from konova.settings import PROXIES @@ -33,6 +33,7 @@ class Command(BaseKonovaCommand): CODELIST_CONSERVATION_OFFICE_ID, CODELIST_REGISTRATION_OFFICE_ID, CODELIST_BIOTOPES_ID, + CODELIST_BIOTOPES_EXTRA_CODES_ID, CODELIST_LAW_ID, CODELIST_COMPENSATION_HANDLER_ID, CODELIST_COMPENSATION_ACTION_ID, diff --git a/codelist/settings.py b/codelist/settings.py index 15c523ac..012dc9b4 100644 --- a/codelist/settings.py +++ b/codelist/settings.py @@ -14,6 +14,7 @@ CODELIST_INTERVENTION_HANDLER_ID = 903 # CLMassnahmeträger CODELIST_CONSERVATION_OFFICE_ID = 907 # CLNaturschutzbehörden CODELIST_REGISTRATION_OFFICE_ID = 1053 # CLZulassungsbehörden CODELIST_BIOTOPES_ID = 974 # CL_EIV_Biotoptypen +CODELIST_BIOTOPES_EXTRA_CODES_ID = 975 # CLZusatzbezeichnung CODELIST_LAW_ID = 1048 # CLVerfahrensrecht CODELIST_PROCESS_TYPE_ID = 44382 # CLVerfahrenstyp diff --git a/compensation/forms/modalForms.py b/compensation/forms/modalForms.py index 885db951..53fdf3c2 100644 --- a/compensation/forms/modalForms.py +++ b/compensation/forms/modalForms.py @@ -14,7 +14,7 @@ from django.shortcuts import render from django.utils.translation import pgettext_lazy as _con, gettext_lazy as _ from codelist.models import KonovaCode -from codelist.settings import CODELIST_BIOTOPES_ID, CODELIST_COMPENSATION_ACTION_ID +from codelist.settings import CODELIST_BIOTOPES_ID, CODELIST_COMPENSATION_ACTION_ID, CODELIST_BIOTOPES_EXTRA_CODES_ID from compensation.models import CompensationDocument, EcoAccountDocument from konova.contexts import BaseContext from konova.forms import BaseModalForm, NewDocumentForm @@ -127,6 +127,23 @@ class NewStateModalForm(BaseModalForm): } ), ) + biotope_extra = forms.ModelChoiceField( + label=_("Biotope additional type"), + label_suffix="", + required=False, + help_text=_("Select an additional biotope type"), + queryset=KonovaCode.objects.filter( + is_archived=False, + is_leaf=True, + code_lists__in=[CODELIST_BIOTOPES_EXTRA_CODES_ID], + ), + widget=autocomplete.ModelSelect2Multiple( + url="codes-biotope-extra-type-autocomplete", + attrs={ + "data-placeholder": _("Biotope additional type"), + } + ), + ) surface = forms.DecimalField( min_value=0.00, decimal_places=2, diff --git a/konova/autocompletes.py b/konova/autocompletes.py index bee8dad8..cbe42b0c 100644 --- a/konova/autocompletes.py +++ b/konova/autocompletes.py @@ -11,7 +11,8 @@ from django.db.models import Q from codelist.models import KonovaCode from codelist.settings import CODELIST_COMPENSATION_ACTION_ID, CODELIST_BIOTOPES_ID, CODELIST_LAW_ID, \ - CODELIST_REGISTRATION_OFFICE_ID, CODELIST_CONSERVATION_OFFICE_ID, CODELIST_PROCESS_TYPE_ID + CODELIST_REGISTRATION_OFFICE_ID, CODELIST_CONSERVATION_OFFICE_ID, CODELIST_PROCESS_TYPE_ID, \ + CODELIST_BIOTOPES_EXTRA_CODES_ID from compensation.models import EcoAccount from intervention.models import Intervention @@ -192,6 +193,36 @@ class BiotopeCodeAutocomplete(KonovaCodeAutocomplete): return f"{result.long_name} ({result.short_name})" +class BiotopeExtraCodeAutocomplete(KonovaCodeAutocomplete): + """ + Due to limitations of the django dal package, we need to subclass for each code list + """ + group_by_related = "parent" + related_field_name = "long_name" + + def __init__(self, *args, **kwargs): + self.c = CODELIST_BIOTOPES_EXTRA_CODES_ID + super().__init__(*args, **kwargs) + + def order_by(self, qs): + """ Orders by a predefined value + + Wrapped in a function to provide inheritance-based different orders + + Args: + qs (QuerySet): The queryset to be ordered + + Returns: + qs (QuerySet): The ordered queryset + """ + return qs.order_by( + "parent__long_name", + ) + + def get_result_label(self, result): + return f"{result.long_name} ({result.short_name})" + + class LawCodeAutocomplete(KonovaCodeAutocomplete): """ Due to limitations of the django dal package, we need to subclass for each code list diff --git a/konova/static/css/konova.css b/konova/static/css/konova.css index 294287ea..a088cc30 100644 --- a/konova/static/css/konova.css +++ b/konova/static/css/konova.css @@ -229,4 +229,7 @@ No other approach worked to get the autocomplete fields to full width of parent } .select2-results__option--highlighted{ background-color: var(--rlp-red) !important; +} +.select2-container--default .select2-results > .select2-results__options{ + max-height: 500px !important; } \ No newline at end of file diff --git a/konova/urls.py b/konova/urls.py index 642b1445..96c716a8 100644 --- a/konova/urls.py +++ b/konova/urls.py @@ -20,7 +20,7 @@ from django.urls import path, include from konova.autocompletes import EcoAccountAutocomplete, \ InterventionAutocomplete, CompensationActionCodeAutocomplete, BiotopeCodeAutocomplete, LawCodeAutocomplete, \ RegistrationOfficeCodeAutocomplete, ConservationOfficeCodeAutocomplete, ProcessTypeCodeAutocomplete, \ - ShareUserAutocomplete + ShareUserAutocomplete, BiotopeExtraCodeAutocomplete from konova.settings import SSO_SERVER, SSO_PUBLIC_KEY, SSO_PRIVATE_KEY, DEBUG from konova.sso.sso import KonovaSSOClient from konova.views import logout_view, home_view, remove_deadline_view @@ -48,6 +48,7 @@ urlpatterns = [ path("atcmplt/interventions", InterventionAutocomplete.as_view(), name="interventions-autocomplete"), path("atcmplt/codes/comp/action", CompensationActionCodeAutocomplete.as_view(), name="codes-compensation-action-autocomplete"), path("atcmplt/codes/biotope", BiotopeCodeAutocomplete.as_view(), name="codes-biotope-autocomplete"), + path("atcmplt/codes/biotope/extra", BiotopeExtraCodeAutocomplete.as_view(), name="codes-biotope-extra-type-autocomplete"), path("atcmplt/codes/law", LawCodeAutocomplete.as_view(), name="codes-law-autocomplete"), path("atcmplt/codes/prc-type", ProcessTypeCodeAutocomplete.as_view(), name="codes-process-type-autocomplete"), path("atcmplt/codes/reg-off", RegistrationOfficeCodeAutocomplete.as_view(), name="codes-registration-office-autocomplete"), From 95a17ed04fed2ae0a09feb462d67e48bf1c59492 Mon Sep 17 00:00:00 2001 From: mpeltriaux <michel.peltriaux@sgdnord.rlp.de> Date: Mon, 31 Jan 2022 11:26:24 +0100 Subject: [PATCH 2/5] # 88 Extra biotope codes * adds additional biotope konovaCodes to CompensationState model * increases rpp for Autocompletion * adds/updates translations --- compensation/forms/modalForms.py | 2 +- compensation/models/compensation.py | 2 + compensation/models/state.py | 15 +++- konova/autocompletes.py | 2 + locale/de/LC_MESSAGES/django.mo | Bin 36202 -> 36407 bytes locale/de/LC_MESSAGES/django.po | 109 ++++++++++++++++------------ 6 files changed, 80 insertions(+), 50 deletions(-) diff --git a/compensation/forms/modalForms.py b/compensation/forms/modalForms.py index 53fdf3c2..c70d52a3 100644 --- a/compensation/forms/modalForms.py +++ b/compensation/forms/modalForms.py @@ -127,7 +127,7 @@ class NewStateModalForm(BaseModalForm): } ), ) - biotope_extra = forms.ModelChoiceField( + biotope_extra = forms.ModelMultipleChoiceField( label=_("Biotope additional type"), label_suffix="", required=False, diff --git a/compensation/models/compensation.py b/compensation/models/compensation.py index 66035579..46ea4520 100644 --- a/compensation/models/compensation.py +++ b/compensation/models/compensation.py @@ -114,6 +114,8 @@ class AbstractCompensation(BaseObject, GeoReferencedMixin): biotope_type=form_data["biotope_type"], surface=form_data["surface"], ) + state_additional_types = form_data["biotope_extra"] + state.biotope_extra_types.set(state_additional_types) if is_before_state: self.before_states.add(state) else: diff --git a/compensation/models/state.py b/compensation/models/state.py index 01aad147..a4b8fafb 100644 --- a/compensation/models/state.py +++ b/compensation/models/state.py @@ -8,7 +8,7 @@ Created on: 16.11.21 from django.db import models from codelist.models import KonovaCode -from codelist.settings import CODELIST_BIOTOPES_ID +from codelist.settings import CODELIST_BIOTOPES_ID, CODELIST_BIOTOPES_EXTRA_CODES_ID from compensation.managers import CompensationStateManager from konova.models import UuidModel @@ -26,7 +26,18 @@ class CompensationState(UuidModel): "code_lists__in": [CODELIST_BIOTOPES_ID], "is_selectable": True, "is_archived": False, - } + }, + related_name='+', + ) + biotope_extra_types = models.ManyToManyField( + KonovaCode, + blank=True, + limit_choices_to={ + "code_lists__in": [CODELIST_BIOTOPES_EXTRA_CODES_ID], + "is_selectable": True, + "is_archived": False, + }, + related_name='+', ) surface = models.FloatField() diff --git a/konova/autocompletes.py b/konova/autocompletes.py index cbe42b0c..a5d6ea66 100644 --- a/konova/autocompletes.py +++ b/konova/autocompletes.py @@ -95,6 +95,7 @@ class KonovaCodeAutocomplete(Select2GroupQuerySetView): * c: Search inside a special codelist """ + paginate_by = 50 def order_by(self, qs): """ Orders by a predefined value @@ -199,6 +200,7 @@ class BiotopeExtraCodeAutocomplete(KonovaCodeAutocomplete): """ group_by_related = "parent" related_field_name = "long_name" + paginate_by = 200 def __init__(self, *args, **kwargs): self.c = CODELIST_BIOTOPES_EXTRA_CODES_ID diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo index cb58ae7f8b439c804a3b076f7d39b7817f299f24..f93f41b81480d48317ed29762378762fe4593c75 100644 GIT binary patch delta 10665 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 LUQlyR+oJygJ2&X@ delta 10467 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 YIu#1cm^Y}pf5sD64&RIyAJ)qLe~i|_4*&oF diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po index 40c27fe3..2c57d8dd 100644 --- a/locale/de/LC_MESSAGES/django.po +++ b/locale/de/LC_MESSAGES/django.po @@ -5,7 +5,7 @@ # #: compensation/filters.py:122 compensation/forms/modalForms.py:34 #: compensation/forms/modalForms.py:45 compensation/forms/modalForms.py:61 -#: compensation/forms/modalForms.py:238 compensation/forms/modalForms.py:316 +#: compensation/forms/modalForms.py:255 compensation/forms/modalForms.py:333 #: intervention/forms/forms.py:52 intervention/forms/forms.py:154 #: intervention/forms/forms.py:166 intervention/forms/modalForms.py:125 #: intervention/forms/modalForms.py:138 intervention/forms/modalForms.py:151 @@ -26,7 +26,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-28 16:27+0100\n" +"POT-Creation-Date: 2022-01-31 10:52+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -95,7 +95,7 @@ msgstr "" #: analysis/templates/analysis/reports/includes/eco_account/amount.html:3 #: analysis/templates/analysis/reports/includes/intervention/amount.html:3 #: analysis/templates/analysis/reports/includes/old_data/amount.html:3 -#: compensation/forms/modalForms.py:299 +#: compensation/forms/modalForms.py:316 #: compensation/templates/compensation/detail/eco_account/includes/deductions.html:34 #: intervention/templates/intervention/detail/includes/deductions.html:31 msgid "Amount" @@ -177,8 +177,9 @@ msgstr "Einzelflächen" #: analysis/templates/analysis/reports/includes/intervention/laws.html:23 #: analysis/templates/analysis/reports/includes/intervention/laws.html:43 #: analysis/templates/analysis/reports/includes/old_data/amount.html:19 -#: konova/templates/konova/home.html:23 konova/templates/konova/home.html:61 -#: konova/templates/konova/home.html:100 +#: konova/templates/konova/includes/quickstart/compensations.html:16 +#: konova/templates/konova/includes/quickstart/ecoaccounts.html:16 +#: konova/templates/konova/includes/quickstart/interventions.html:16 msgid "Total" msgstr "Insgesamt" @@ -212,7 +213,7 @@ msgstr "Abbuchungen" #: analysis/templates/analysis/reports/includes/eco_account/deductions.html:9 #: analysis/templates/analysis/reports/includes/eco_account/deductions.html:11 -#: compensation/forms/modalForms.py:133 +#: compensation/forms/modalForms.py:150 #: compensation/templates/compensation/detail/compensation/includes/states-after.html:36 #: compensation/templates/compensation/detail/compensation/includes/states-before.html:36 #: compensation/templates/compensation/detail/eco_account/includes/states-after.html:36 @@ -240,7 +241,8 @@ msgstr "Kompensationsart" #: analysis/templates/analysis/reports/includes/old_data/amount.html:29 #: compensation/tables.py:85 #: compensation/templates/compensation/detail/compensation/view.html:19 -#: konova/templates/konova/home.html:49 templates/navbars/navbar.html:28 +#: konova/templates/konova/includes/quickstart/compensations.html:4 +#: templates/navbars/navbar.html:28 msgid "Compensation" msgstr "Kompensation" @@ -285,7 +287,8 @@ msgstr "Typ" #: intervention/forms/modalForms.py:306 intervention/forms/modalForms.py:313 #: intervention/tables.py:89 #: intervention/templates/intervention/detail/view.html:19 -#: konova/templates/konova/home.html:11 templates/navbars/navbar.html:22 +#: konova/templates/konova/includes/quickstart/interventions.html:4 +#: templates/navbars/navbar.html:22 msgid "Intervention" msgstr "Eingriff" @@ -293,7 +296,8 @@ msgstr "Eingriff" #: compensation/tables.py:226 #: compensation/templates/compensation/detail/eco_account/view.html:19 #: intervention/forms/modalForms.py:279 intervention/forms/modalForms.py:286 -#: konova/templates/konova/home.html:88 templates/navbars/navbar.html:34 +#: konova/templates/konova/includes/quickstart/ecoaccounts.html:4 +#: templates/navbars/navbar.html:34 msgid "Eco-account" msgstr "Ökokonto" @@ -350,7 +354,7 @@ msgid "Compensation XY; Location ABC" msgstr "Kompensation XY; Flur ABC" #: compensation/forms/forms.py:57 compensation/forms/modalForms.py:60 -#: compensation/forms/modalForms.py:237 compensation/forms/modalForms.py:315 +#: compensation/forms/modalForms.py:254 compensation/forms/modalForms.py:332 #: compensation/templates/compensation/detail/compensation/includes/actions.html:34 #: compensation/templates/compensation/detail/compensation/includes/deadlines.html:34 #: compensation/templates/compensation/detail/compensation/includes/documents.html:31 @@ -478,8 +482,8 @@ msgstr "Fällig am" msgid "Due on which date" msgstr "Zahlung wird an diesem Datum erwartet" -#: compensation/forms/modalForms.py:62 compensation/forms/modalForms.py:239 -#: compensation/forms/modalForms.py:317 intervention/forms/modalForms.py:152 +#: compensation/forms/modalForms.py:62 compensation/forms/modalForms.py:256 +#: compensation/forms/modalForms.py:334 intervention/forms/modalForms.py:152 #: konova/forms.py:375 msgid "Additional comment, maximum {} letters" msgstr "Zusätzlicher Kommentar, maximal {} Zeichen" @@ -500,31 +504,39 @@ msgstr "Biotoptyp" msgid "Select the biotope type" msgstr "Biotoptyp wählen" -#: compensation/forms/modalForms.py:136 intervention/forms/modalForms.py:297 +#: compensation/forms/modalForms.py:131 compensation/forms/modalForms.py:143 +msgid "Biotope additional type" +msgstr "Zusatzbezeichnung" + +#: compensation/forms/modalForms.py:134 +msgid "Select an additional biotope type" +msgstr "Zusatzbezeichnung wählen" + +#: compensation/forms/modalForms.py:153 intervention/forms/modalForms.py:297 msgid "in m²" msgstr "" -#: compensation/forms/modalForms.py:147 +#: compensation/forms/modalForms.py:164 msgid "New state" msgstr "Neuer Zustand" -#: compensation/forms/modalForms.py:148 +#: compensation/forms/modalForms.py:165 msgid "Insert data for the new state" msgstr "Geben Sie die Daten des neuen Zustandes ein" -#: compensation/forms/modalForms.py:155 konova/forms.py:190 +#: compensation/forms/modalForms.py:172 konova/forms.py:190 msgid "Object removed" msgstr "Objekt entfernt" -#: compensation/forms/modalForms.py:209 +#: compensation/forms/modalForms.py:226 msgid "Deadline Type" msgstr "Fristart" -#: compensation/forms/modalForms.py:212 +#: compensation/forms/modalForms.py:229 msgid "Select the deadline type" msgstr "Fristart wählen" -#: compensation/forms/modalForms.py:221 +#: compensation/forms/modalForms.py:238 #: 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 @@ -532,27 +544,27 @@ msgstr "Fristart wählen" msgid "Date" msgstr "Datum" -#: compensation/forms/modalForms.py:224 +#: compensation/forms/modalForms.py:241 msgid "Select date" msgstr "Datum wählen" -#: compensation/forms/modalForms.py:251 +#: compensation/forms/modalForms.py:268 msgid "New deadline" msgstr "Neue Frist" -#: compensation/forms/modalForms.py:252 +#: compensation/forms/modalForms.py:269 msgid "Insert data for the new deadline" msgstr "Geben Sie die Daten der neuen Frist ein" -#: compensation/forms/modalForms.py:270 +#: compensation/forms/modalForms.py:287 msgid "Action Type" msgstr "Maßnahmentyp" -#: compensation/forms/modalForms.py:273 +#: compensation/forms/modalForms.py:290 msgid "Select the action type" msgstr "Maßnahmentyp wählen" -#: compensation/forms/modalForms.py:282 +#: compensation/forms/modalForms.py:299 #: compensation/templates/compensation/detail/compensation/includes/actions.html:38 #: compensation/templates/compensation/detail/compensation/includes/deadlines.html:38 #: compensation/templates/compensation/detail/compensation/includes/documents.html:35 @@ -578,23 +590,23 @@ msgstr "Maßnahmentyp wählen" msgid "Action" msgstr "Aktionen" -#: compensation/forms/modalForms.py:287 +#: compensation/forms/modalForms.py:304 msgid "Unit" msgstr "Einheit" -#: compensation/forms/modalForms.py:290 +#: compensation/forms/modalForms.py:307 msgid "Select the unit" msgstr "Einheit wählen" -#: compensation/forms/modalForms.py:302 +#: compensation/forms/modalForms.py:319 msgid "Insert the amount" msgstr "Menge eingeben" -#: compensation/forms/modalForms.py:328 +#: compensation/forms/modalForms.py:345 msgid "New action" msgstr "Neue Maßnahme" -#: compensation/forms/modalForms.py:329 +#: compensation/forms/modalForms.py:346 msgid "Insert data for the new action" msgstr "Geben Sie die Daten der neuen Maßnahme ein" @@ -876,13 +888,13 @@ msgstr "Ist CEF Maßnahme" #: compensation/templates/compensation/detail/compensation/view.html:56 #: venv/lib/python3.7/site-packages/django/forms/widgets.py:710 msgid "Yes" -msgstr "" +msgstr "Ja" #: compensation/templates/compensation/detail/compensation/view.html:48 #: compensation/templates/compensation/detail/compensation/view.html:58 #: venv/lib/python3.7/site-packages/django/forms/widgets.py:711 msgid "No" -msgstr "" +msgstr "Nein" #: compensation/templates/compensation/detail/compensation/view.html:53 msgid "Is Coherence keeping compensation" @@ -1725,21 +1737,6 @@ msgstr "" msgid "English" msgstr "" -#: konova/templates/konova/home.html:27 konova/templates/konova/home.html:65 -#: konova/templates/konova/home.html:104 -msgid "Shared with you" -msgstr "Für Sie freigegeben" - -#: konova/templates/konova/home.html:35 konova/templates/konova/home.html:73 -#: konova/templates/konova/home.html:114 -msgid "Create" -msgstr "Neu" - -#: konova/templates/konova/home.html:40 konova/templates/konova/home.html:78 -#: konova/templates/konova/home.html:119 -msgid "Show" -msgstr "Anzeigen" - #: konova/templates/konova/includes/parcels.html:3 msgid "Spatial reference" msgstr "Raumreferenz" @@ -1764,6 +1761,24 @@ msgstr "Kreis" msgid "Gemarkung" msgstr "Gemarkung" +#: konova/templates/konova/includes/quickstart/compensations.html:20 +#: konova/templates/konova/includes/quickstart/ecoaccounts.html:20 +#: konova/templates/konova/includes/quickstart/interventions.html:20 +msgid "Shared with you" +msgstr "Für Sie freigegeben" + +#: konova/templates/konova/includes/quickstart/compensations.html:28 +#: konova/templates/konova/includes/quickstart/ecoaccounts.html:30 +#: konova/templates/konova/includes/quickstart/interventions.html:28 +msgid "Create" +msgstr "Neu" + +#: konova/templates/konova/includes/quickstart/compensations.html:33 +#: konova/templates/konova/includes/quickstart/ecoaccounts.html:35 +#: konova/templates/konova/includes/quickstart/interventions.html:33 +msgid "Show" +msgstr "Anzeigen" + #: konova/templates/konova/widgets/generate-content-input.html:6 msgid "Generate new" msgstr "Neu generieren" From e1865c726744558e38a7a8d4cb0447fee2700148 Mon Sep 17 00:00:00 2001 From: mpeltriaux <michel.peltriaux@sgdnord.rlp.de> Date: Mon, 31 Jan 2022 12:21:42 +0100 Subject: [PATCH 3/5] #88 Extra biotope codes templates * extends the detail view templates for all compensation related models to render extra CompensationState details as well * reduces number of landing page news from 4 to 3 * improves .card-text in favor of .scroll-150 * improves .card font size --- .../detail/compensation/includes/states-after.html | 14 ++++++++++++-- .../compensation/includes/states-before.html | 14 ++++++++++++-- .../detail/eco_account/includes/states-after.html | 14 ++++++++++++-- .../detail/eco_account/includes/states-before.html | 14 ++++++++++++-- .../ema/detail/includes/states-after.html | 14 ++++++++++++-- .../ema/detail/includes/states-before.html | 14 ++++++++++++-- konova/static/css/konova.css | 13 ++++++------- konova/templates/konova/includes/comment_card.html | 2 +- konova/views.py | 2 +- news/templates/news/dashboard-news.html | 2 +- news/templates/news/index.html | 2 +- 11 files changed, 82 insertions(+), 23 deletions(-) diff --git a/compensation/templates/compensation/detail/compensation/includes/states-after.html b/compensation/templates/compensation/detail/compensation/includes/states-after.html index f8dd00a4..3f0b4eef 100644 --- a/compensation/templates/compensation/detail/compensation/includes/states-after.html +++ b/compensation/templates/compensation/detail/compensation/includes/states-after.html @@ -29,9 +29,12 @@ <table class="table table-hover"> <thead> <tr> - <th scope="col"> + <th class="w-25" scope="col"> {% trans 'Biotope type' %} </th> + <th class="w-25" scope="col"> + {% trans 'Biotope additional type' %} + </th> <th scope="col"> {% trans 'Surface' %} </th> @@ -48,8 +51,15 @@ <td class="align-middle"> {{ state.biotope_type }} </td> + <td class="align-middle"> + {% for biotope_extra in state.biotope_extra_types.all %} + <div class="mb-2" title="{{ biotope_extra }}"> + {{ biotope_extra.long_name }} + </div> + {% endfor %} + </td> <td class="align-middle">{{ state.surface|floatformat:2 }} m²</td> - <td> + <td class="align-middle"> {% if is_default_member and has_access %} <button data-form-url="{% url 'compensation:state-remove' obj.id state.id %}" class="btn btn-default btn-modal" title="{% trans 'Remove state' %}"> {% fa5_icon 'trash' %} diff --git a/compensation/templates/compensation/detail/compensation/includes/states-before.html b/compensation/templates/compensation/detail/compensation/includes/states-before.html index 39b5e038..168524cd 100644 --- a/compensation/templates/compensation/detail/compensation/includes/states-before.html +++ b/compensation/templates/compensation/detail/compensation/includes/states-before.html @@ -29,9 +29,12 @@ <table class="table table-hover"> <thead> <tr> - <th scope="col"> + <th class="w-25" scope="col"> {% trans 'Biotope type' %} </th> + <th class="w-25" scope="col"> + {% trans 'Biotope additional type' %} + </th> <th scope="col"> {% trans 'Surface' %} </th> @@ -48,8 +51,15 @@ <td class="align-middle"> {{ state.biotope_type }} </td> + <td class="align-middle"> + {% for biotope_extra in state.biotope_extra_types.all %} + <div class="mb-2" title="{{ biotope_extra }}"> + {{ biotope_extra.long_name }} + </div> + {% endfor %} + </td> <td class="align-middle">{{ state.surface|floatformat:2 }} m²</td> - <td> + <td class="align-middle"> {% if is_default_member and has_access %} <button data-form-url="{% url 'compensation:state-remove' obj.id state.id %}" class="btn btn-default btn-modal" title="{% trans 'Remove state' %}"> {% fa5_icon 'trash' %} diff --git a/compensation/templates/compensation/detail/eco_account/includes/states-after.html b/compensation/templates/compensation/detail/eco_account/includes/states-after.html index eab29ad6..2d9b32e4 100644 --- a/compensation/templates/compensation/detail/eco_account/includes/states-after.html +++ b/compensation/templates/compensation/detail/eco_account/includes/states-after.html @@ -29,9 +29,12 @@ <table class="table table-hover"> <thead> <tr> - <th scope="col"> + <th class="w-25" scope="col"> {% trans 'Biotope type' %} </th> + <th class="w-25" scope="col"> + {% trans 'Biotope additional type' %} + </th> <th scope="col"> {% trans 'Surface' %} </th> @@ -48,8 +51,15 @@ <td class="align-middle"> {{ state.biotope_type }} </td> + <td class="align-middle"> + {% for biotope_extra in state.biotope_extra_types.all %} + <div class="mb-2" title="{{ biotope_extra }}"> + {{ biotope_extra.long_name }} + </div> + {% endfor %} + </td> <td class="align-middle">{{ state.surface|floatformat:2 }} m²</td> - <td> + <td class="align-middle"> {% if is_default_member and has_access %} <button data-form-url="{% url 'compensation:acc-state-remove' obj.id state.id %}" class="btn btn-default btn-modal" title="{% trans 'Remove state' %}"> {% fa5_icon 'trash' %} diff --git a/compensation/templates/compensation/detail/eco_account/includes/states-before.html b/compensation/templates/compensation/detail/eco_account/includes/states-before.html index ea3df844..45ee4167 100644 --- a/compensation/templates/compensation/detail/eco_account/includes/states-before.html +++ b/compensation/templates/compensation/detail/eco_account/includes/states-before.html @@ -29,9 +29,12 @@ <table class="table table-hover"> <thead> <tr> - <th scope="col"> + <th class="w-25" scope="col"> {% trans 'Biotope type' %} </th> + <th class="w-25" scope="col"> + {% trans 'Biotope additional type' %} + </th> <th scope="col"> {% trans 'Surface' %} </th> @@ -48,8 +51,15 @@ <td class="align-middle"> {{ state.biotope_type }} </td> + <td class="align-middle"> + {% for biotope_extra in state.biotope_extra_types.all %} + <div class="mb-2" title="{{ biotope_extra }}"> + {{ biotope_extra.long_name }} + </div> + {% endfor %} + </td> <td class="align-middle">{{ state.surface|floatformat:2 }} m²</td> - <td> + <td class="align-middle"> {% if is_default_member and has_access %} <button data-form-url="{% url 'compensation:acc-state-remove' obj.id state.id %}" class="btn btn-default btn-modal" title="{% trans 'Remove state' %}"> {% fa5_icon 'trash' %} diff --git a/ema/templates/ema/detail/includes/states-after.html b/ema/templates/ema/detail/includes/states-after.html index 0e6aa16a..0cbb5fd6 100644 --- a/ema/templates/ema/detail/includes/states-after.html +++ b/ema/templates/ema/detail/includes/states-after.html @@ -29,9 +29,12 @@ <table class="table table-hover"> <thead> <tr> - <th scope="col"> + <th class="w-25" scope="col"> {% trans 'Biotope type' %} </th> + <th class="w-25" scope="col"> + {% trans 'Biotope additional type' %} + </th> <th scope="col"> {% trans 'Surface' %} </th> @@ -46,8 +49,15 @@ <td class="align-middle"> {{ state.biotope_type }} </td> + <td class="align-middle"> + {% for biotope_extra in state.biotope_extra_types.all %} + <div class="mb-2" title="{{ biotope_extra }}"> + {{ biotope_extra.long_name }} + </div> + {% endfor %} + </td> <td class="align-middle">{{ state.surface|floatformat:2 }} m²</td> - <td> + <td class="align-middle"> {% if is_default_member and has_access %} <button data-form-url="{% url 'ema:state-remove' obj.id state.id %}" class="btn btn-default btn-modal" title="{% trans 'Remove state' %}"> {% fa5_icon 'trash' %} diff --git a/ema/templates/ema/detail/includes/states-before.html b/ema/templates/ema/detail/includes/states-before.html index 42c0eb1b..61dbc0cd 100644 --- a/ema/templates/ema/detail/includes/states-before.html +++ b/ema/templates/ema/detail/includes/states-before.html @@ -29,9 +29,12 @@ <table class="table table-hover"> <thead> <tr> - <th scope="col"> + <th class="w-25" scope="col"> {% trans 'Biotope type' %} </th> + <th class="w-25" scope="col"> + {% trans 'Biotope additional type' %} + </th> <th scope="col"> {% trans 'Surface' %} </th> @@ -46,8 +49,15 @@ <td class="align-middle"> {{ state.biotope_type }} </td> + <td class="align-middle"> + {% for biotope_extra in state.biotope_extra_types.all %} + <div class="mb-2" title="{{ biotope_extra }}"> + {{ biotope_extra.long_name }} + </div> + {% endfor %} + </td> <td class="align-middle">{{ state.surface|floatformat:2 }} m²</td> - <td> + <td class="align-middle"> {% if is_default_member and has_access %} <button data-form-url="{% url 'ema:state-remove' obj.id state.id %}" class="btn btn-default btn-modal" title="{% trans 'Remove state' %}"> {% fa5_icon 'trash' %} diff --git a/konova/static/css/konova.css b/konova/static/css/konova.css index a088cc30..6d882ec4 100644 --- a/konova/static/css/konova.css +++ b/konova/static/css/konova.css @@ -121,18 +121,12 @@ a { .card{ margin: 0 0.5rem 0.5rem 0; - font-size: 12px; + font-size: 0.9rem; } .card:hover{ box-shadow: 1px 1px 3px var(--rlp-gray-light); } -.card .card-text{ - font-size: 12px; - max-height: 150px; - overflow: auto; -} - .qs-box{ background-color: var(--rlp-red); color: white; @@ -215,6 +209,11 @@ Overwrites bootstrap .btn:focus box shadow color color: var(--rlp-red); } +.scroll-150{ + max-height: 150px; + overflow: auto; +} + .scroll-300{ max-height: 300px; overflow: auto; diff --git a/konova/templates/konova/includes/comment_card.html b/konova/templates/konova/includes/comment_card.html index 0cc91bf0..a84f378e 100644 --- a/konova/templates/konova/includes/comment_card.html +++ b/konova/templates/konova/includes/comment_card.html @@ -19,7 +19,7 @@ </div> </div> <div class="card-body"> - <div class="card-text font-italic"> + <div class="scroll-150 font-italic"> {{obj.comment}} </div> </div> diff --git a/konova/views.py b/konova/views.py index abfea284..d46a0228 100644 --- a/konova/views.py +++ b/konova/views.py @@ -60,7 +60,7 @@ def home_view(request: HttpRequest): unpublish_on__gte=now, ).order_by( "-publish_on" - )[:4] + )[:3] # First fetch all valid objects (undeleted, only newest versions) interventions = Intervention.objects.filter( diff --git a/news/templates/news/dashboard-news.html b/news/templates/news/dashboard-news.html index f6aa9c6d..f462e101 100644 --- a/news/templates/news/dashboard-news.html +++ b/news/templates/news/dashboard-news.html @@ -10,7 +10,7 @@ {{msg.subject}} </h6> <small>{% trans 'Published on' %} {{msg.publish_on}}</small> - <article class="card-text">{{msg.body|safe}}</article> + <article class="scroll-150">{{msg.body|safe}}</article> </div> </div> </div> diff --git a/news/templates/news/index.html b/news/templates/news/index.html index d4b16478..6521a1c9 100644 --- a/news/templates/news/index.html +++ b/news/templates/news/index.html @@ -19,7 +19,7 @@ <small> {% trans 'Published on' %} {{msg.publish_on}}</small> </h5> <small></small> - <article class="card-text">{{msg.body|safe}}</article> + <article class="scroll-150">{{msg.body|safe}}</article> </div> </div> {% endfor %} From 73cf3fc5035080a937e7a3337f0917a459511021 Mon Sep 17 00:00:00 2001 From: mpeltriaux <michel.peltriaux@sgdnord.rlp.de> Date: Mon, 31 Jan 2022 12:58:55 +0100 Subject: [PATCH 4/5] #88 Action detail codes * adds codelist 1035 for compensation action detail codes * extends CompensationAction model * extends NewActionForm * extends detail view of compensation action related models * add/updates translations * adds autocomplete tests --- .../management/commands/update_codelist.py | 4 +- codelist/settings.py | 1 + compensation/forms/modalForms.py | 20 ++- compensation/models/action.py | 15 +- compensation/models/compensation.py | 2 + .../detail/compensation/includes/actions.html | 12 +- .../detail/eco_account/includes/actions.html | 12 +- .../ema/detail/includes/actions.html | 12 +- konova/autocompletes.py | 20 ++- konova/tests/test_autocompletes.py | 30 ++++ konova/urls.py | 3 +- locale/de/LC_MESSAGES/django.mo | Bin 36407 -> 36575 bytes locale/de/LC_MESSAGES/django.po | 136 ++++++++++-------- 13 files changed, 196 insertions(+), 71 deletions(-) diff --git a/codelist/management/commands/update_codelist.py b/codelist/management/commands/update_codelist.py index aa6e45a9..85c90324 100644 --- a/codelist/management/commands/update_codelist.py +++ b/codelist/management/commands/update_codelist.py @@ -13,7 +13,8 @@ from codelist.models import KonovaCode, KonovaCodeList from codelist.settings import CODELIST_INTERVENTION_HANDLER_ID, CODELIST_CONSERVATION_OFFICE_ID, \ CODELIST_REGISTRATION_OFFICE_ID, CODELIST_BIOTOPES_ID, CODELIST_LAW_ID, CODELIST_COMPENSATION_HANDLER_ID, \ CODELIST_COMPENSATION_ACTION_ID, CODELIST_COMPENSATION_ACTION_CLASS_ID, CODELIST_COMPENSATION_ADDITIONAL_TYPE_ID, \ - CODELIST_BASE_URL, CODELIST_PROCESS_TYPE_ID, CODELIST_BIOTOPES_EXTRA_CODES_ID + CODELIST_BASE_URL, CODELIST_PROCESS_TYPE_ID, CODELIST_BIOTOPES_EXTRA_CODES_ID, \ + CODELIST_COMPENSATION_ACTION_DETAIL_ID from konova.management.commands.setup import BaseKonovaCommand from konova.settings import PROXIES @@ -38,6 +39,7 @@ class Command(BaseKonovaCommand): CODELIST_COMPENSATION_HANDLER_ID, CODELIST_COMPENSATION_ACTION_ID, CODELIST_COMPENSATION_ACTION_CLASS_ID, + CODELIST_COMPENSATION_ACTION_DETAIL_ID, CODELIST_COMPENSATION_ADDITIONAL_TYPE_ID, CODELIST_PROCESS_TYPE_ID, ] diff --git a/codelist/settings.py b/codelist/settings.py index 012dc9b4..598a3a66 100644 --- a/codelist/settings.py +++ b/codelist/settings.py @@ -20,6 +20,7 @@ CODELIST_PROCESS_TYPE_ID = 44382 # CLVerfahrenstyp CODELIST_COMPENSATION_HANDLER_ID = 1052 # CLEingreifer CODELIST_COMPENSATION_ACTION_ID = 1026 # CLMassnahmedetail +CODELIST_COMPENSATION_ACTION_DETAIL_ID = 1035 # CLZusatzmerkmal CODELIST_COMPENSATION_ACTION_CLASS_ID = 1034 # CLMassnahmeklasse CODELIST_COMPENSATION_ADDITIONAL_TYPE_ID = 1028 # CLMassnahmetyp, CEF and stuff CODELIST_COMPENSATION_FUNDING_ID = 1049 # CLKombimassnahme diff --git a/compensation/forms/modalForms.py b/compensation/forms/modalForms.py index c70d52a3..dd9f4c70 100644 --- a/compensation/forms/modalForms.py +++ b/compensation/forms/modalForms.py @@ -14,7 +14,8 @@ from django.shortcuts import render from django.utils.translation import pgettext_lazy as _con, gettext_lazy as _ from codelist.models import KonovaCode -from codelist.settings import CODELIST_BIOTOPES_ID, CODELIST_COMPENSATION_ACTION_ID, CODELIST_BIOTOPES_EXTRA_CODES_ID +from codelist.settings import CODELIST_BIOTOPES_ID, CODELIST_COMPENSATION_ACTION_ID, CODELIST_BIOTOPES_EXTRA_CODES_ID, \ + CODELIST_COMPENSATION_ACTION_DETAIL_ID from compensation.models import CompensationDocument, EcoAccountDocument from konova.contexts import BaseContext from konova.forms import BaseModalForm, NewDocumentForm @@ -300,6 +301,23 @@ class NewActionModalForm(BaseModalForm): } ), ) + action_type_details = forms.ModelMultipleChoiceField( + label=_("Action Type detail"), + label_suffix="", + required=False, + help_text=_("Select the action type detail"), + queryset=KonovaCode.objects.filter( + is_archived=False, + is_leaf=True, + code_lists__in=[CODELIST_COMPENSATION_ACTION_DETAIL_ID], + ), + widget=autocomplete.ModelSelect2Multiple( + url="codes-compensation-action-detail-autocomplete", + attrs={ + "data-placeholder": _("Action Type detail"), + } + ), + ) unit = forms.ChoiceField( label=_("Unit"), label_suffix="", diff --git a/compensation/models/action.py b/compensation/models/action.py index 35d4c3f7..95fe2807 100644 --- a/compensation/models/action.py +++ b/compensation/models/action.py @@ -9,7 +9,7 @@ from django.db import models from django.utils.translation import gettext_lazy as _ from codelist.models import KonovaCode -from codelist.settings import CODELIST_COMPENSATION_ACTION_ID +from codelist.settings import CODELIST_COMPENSATION_ACTION_ID, CODELIST_COMPENSATION_ACTION_DETAIL_ID from compensation.managers import CompensationActionManager from konova.models import BaseResource @@ -39,7 +39,18 @@ class CompensationAction(BaseResource): "code_lists__in": [CODELIST_COMPENSATION_ACTION_ID], "is_selectable": True, "is_archived": False, - } + }, + related_name='+', + ) + action_type_details = models.ManyToManyField( + KonovaCode, + blank=True, + limit_choices_to={ + "code_lists__in": [CODELIST_COMPENSATION_ACTION_DETAIL_ID], + "is_selectable": True, + "is_archived": False, + }, + related_name='+', ) amount = models.FloatField() unit = models.CharField(max_length=100, null=True, blank=True, choices=UnitChoices.choices) diff --git a/compensation/models/compensation.py b/compensation/models/compensation.py index 46ea4520..8147203f 100644 --- a/compensation/models/compensation.py +++ b/compensation/models/compensation.py @@ -95,6 +95,8 @@ class AbstractCompensation(BaseObject, GeoReferencedMixin): comment=form_data["comment"], created=user_action, ) + comp_action_details = form_data["action_type_details"] + comp_action.action_type_details.set(comp_action_details) self.actions.add(comp_action) return comp_action diff --git a/compensation/templates/compensation/detail/compensation/includes/actions.html b/compensation/templates/compensation/detail/compensation/includes/actions.html index 92cf45ff..648e777a 100644 --- a/compensation/templates/compensation/detail/compensation/includes/actions.html +++ b/compensation/templates/compensation/detail/compensation/includes/actions.html @@ -24,9 +24,12 @@ <table class="table table-hover"> <thead> <tr> - <th scope="col"> + <th class="w-25" scope="col"> {% trans 'Action type' %} </th> + <th class="w-25" scope="col"> + {% trans 'Action type details' %} + </th> <th scope="col"> {% trans 'Amount' context 'Compensation' %} </th> @@ -46,9 +49,14 @@ <td class="align-middle"> {{ action.action_type }} </td> + <td class="align-middle"> + {% for detail in action.action_type_details.all %} + <div class="mb-2" title="{{detail}}">{{detail.long_name}}</div> + {% endfor %} + </td> <td class="align-middle">{{ action.amount|floatformat:2|intcomma }} {{ action.unit_humanize }}</td> <td class="align-middle">{{ action.comment|default_if_none:"" }}</td> - <td> + <td class="align-middle"> {% if is_default_member and has_access %} <button data-form-url="{% url 'compensation:action-remove' obj.id action.id %}" class="btn btn-default btn-modal" title="{% trans 'Remove action' %}"> {% fa5_icon 'trash' %} diff --git a/compensation/templates/compensation/detail/eco_account/includes/actions.html b/compensation/templates/compensation/detail/eco_account/includes/actions.html index 4e81e22b..c5b9c1c1 100644 --- a/compensation/templates/compensation/detail/eco_account/includes/actions.html +++ b/compensation/templates/compensation/detail/eco_account/includes/actions.html @@ -24,9 +24,12 @@ <table class="table table-hover"> <thead> <tr> - <th scope="col"> + <th class="w-25" scope="col"> {% trans 'Action type' %} </th> + <th class="w-25" scope="col"> + {% trans 'Action type details' %} + </th> <th scope="col"> {% trans 'Amount' context 'Compensation' %} </th> @@ -46,9 +49,14 @@ <td class="align-middle"> {{ action.action_type }} </td> + <td class="align-middle"> + {% for detail in action.action_type_details.all %} + <div class="mb-2" title="{{detail}}">{{detail.long_name}}</div> + {% endfor %} + </td> <td class="align-middle">{{ action.amount|floatformat:2|intcomma }} {{ action.unit_humanize }}</td> <td class="align-middle">{{ action.comment|default_if_none:"" }}</td> - <td> + <td class="align-middle"> {% if is_default_member and has_access %} <button data-form-url="{% url 'compensation:acc-action-remove' obj.id action.id %}" class="btn btn-default btn-modal" title="{% trans 'Remove action' %}"> {% fa5_icon 'trash' %} diff --git a/ema/templates/ema/detail/includes/actions.html b/ema/templates/ema/detail/includes/actions.html index 56359703..fcd1d274 100644 --- a/ema/templates/ema/detail/includes/actions.html +++ b/ema/templates/ema/detail/includes/actions.html @@ -24,9 +24,12 @@ <table class="table table-hover"> <thead> <tr> - <th scope="col"> + <th class="w-25" scope="col"> {% trans 'Action type' %} </th> + <th class="w-25" scope="col"> + {% trans 'Action type details' %} + </th> <th scope="col"> {% trans 'Amount' context 'Compensation' %} </th> @@ -44,9 +47,14 @@ <td class="align-middle"> {{ action.action_type }} </td> + <td class="align-middle"> + {% for detail in action.action_type_details.all %} + <div class="mb-2" title="{{detail}}">{{detail.long_name}}</div> + {% endfor %} + </td> <td class="align-middle">{{ action.amount|floatformat:2|intcomma }} {{ action.unit_humanize }}</td> <td class="align-middle">{{ action.comment|default_if_none:"" }}</td> - <td> + <td class="align-middle"> {% if is_default_member and has_access %} <button data-form-url="{% url 'ema:action-remove' obj.id action.id %}" class="btn btn-default btn-modal" title="{% trans 'Remove action' %}"> {% fa5_icon 'trash' %} diff --git a/konova/autocompletes.py b/konova/autocompletes.py index a5d6ea66..3c12b36d 100644 --- a/konova/autocompletes.py +++ b/konova/autocompletes.py @@ -12,7 +12,7 @@ from django.db.models import Q from codelist.models import KonovaCode from codelist.settings import CODELIST_COMPENSATION_ACTION_ID, CODELIST_BIOTOPES_ID, CODELIST_LAW_ID, \ CODELIST_REGISTRATION_OFFICE_ID, CODELIST_CONSERVATION_OFFICE_ID, CODELIST_PROCESS_TYPE_ID, \ - CODELIST_BIOTOPES_EXTRA_CODES_ID + CODELIST_BIOTOPES_EXTRA_CODES_ID, CODELIST_COMPENSATION_ACTION_DETAIL_ID from compensation.models import EcoAccount from intervention.models import Intervention @@ -164,6 +164,24 @@ class CompensationActionCodeAutocomplete(KonovaCodeAutocomplete): ) +class CompensationActionDetailCodeAutocomplete(KonovaCodeAutocomplete): + """ + Due to limitations of the django dal package, we need to subclass for each code list + """ + group_by_related = "parent" + related_field_name = "long_name" + paginate_by = 200 + + def __init__(self, *args, **kwargs): + self.c = CODELIST_COMPENSATION_ACTION_DETAIL_ID + super().__init__(*args, **kwargs) + + def order_by(self, qs): + return qs.order_by( + "parent__long_name" + ) + + class BiotopeCodeAutocomplete(KonovaCodeAutocomplete): """ Due to limitations of the django dal package, we need to subclass for each code list diff --git a/konova/tests/test_autocompletes.py b/konova/tests/test_autocompletes.py index 47df3dc3..7d9e5088 100644 --- a/konova/tests/test_autocompletes.py +++ b/konova/tests/test_autocompletes.py @@ -57,3 +57,33 @@ class AutocompleteTestCase(BaseTestCase): ) content = json.loads(response.content) self.assertEqual([], content["results"]) + + def test_all_autocompletes(self): + tests = [ + "accounts-autocomplete", + "interventions-autocomplete", + "codes-compensation-action-autocomplete", + "codes-compensation-action-detail-autocomplete", + "codes-biotope-autocomplete", + "codes-biotope-extra-type-autocomplete", + "codes-law-autocomplete", + "codes-process-type-autocomplete", + "codes-registration-office-autocomplete", + "codes-conservation-office-autocomplete", + "share-user-autocomplete", + ] + for test in tests: + self.client.login(username=self.superuser.username, password=self.superuser_pw) + user_autocomplete_url = reverse(test) + data = { + "q": "" + } + response = self.client.get( + user_autocomplete_url, + data, + ) + content = json.loads(response.content) + try: + content["results"] + except KeyError: + self.fail(f"No results returned for autocomplete {test}") diff --git a/konova/urls.py b/konova/urls.py index 96c716a8..267b35c4 100644 --- a/konova/urls.py +++ b/konova/urls.py @@ -20,7 +20,7 @@ from django.urls import path, include from konova.autocompletes import EcoAccountAutocomplete, \ InterventionAutocomplete, CompensationActionCodeAutocomplete, BiotopeCodeAutocomplete, LawCodeAutocomplete, \ RegistrationOfficeCodeAutocomplete, ConservationOfficeCodeAutocomplete, ProcessTypeCodeAutocomplete, \ - ShareUserAutocomplete, BiotopeExtraCodeAutocomplete + ShareUserAutocomplete, BiotopeExtraCodeAutocomplete, CompensationActionDetailCodeAutocomplete from konova.settings import SSO_SERVER, SSO_PUBLIC_KEY, SSO_PRIVATE_KEY, DEBUG from konova.sso.sso import KonovaSSOClient from konova.views import logout_view, home_view, remove_deadline_view @@ -47,6 +47,7 @@ urlpatterns = [ path("atcmplt/eco-accounts", EcoAccountAutocomplete.as_view(), name="accounts-autocomplete"), path("atcmplt/interventions", InterventionAutocomplete.as_view(), name="interventions-autocomplete"), path("atcmplt/codes/comp/action", CompensationActionCodeAutocomplete.as_view(), name="codes-compensation-action-autocomplete"), + path("atcmplt/codes/comp/action/detail", CompensationActionDetailCodeAutocomplete.as_view(), name="codes-compensation-action-detail-autocomplete"), path("atcmplt/codes/biotope", BiotopeCodeAutocomplete.as_view(), name="codes-biotope-autocomplete"), path("atcmplt/codes/biotope/extra", BiotopeExtraCodeAutocomplete.as_view(), name="codes-biotope-extra-type-autocomplete"), path("atcmplt/codes/law", LawCodeAutocomplete.as_view(), name="codes-law-autocomplete"), diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo index f93f41b81480d48317ed29762378762fe4593c75..e6edc28bd0a903453509a74318e3587db30c17c5 100644 GIT binary patch delta 10677 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 delta 10536 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 aN(CvMzl>X4df+z&VT0Br7VMgy68&F`*TR1Q diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po index 2c57d8dd..6dbcaf9d 100644 --- a/locale/de/LC_MESSAGES/django.po +++ b/locale/de/LC_MESSAGES/django.po @@ -3,9 +3,9 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # -#: compensation/filters.py:122 compensation/forms/modalForms.py:34 -#: compensation/forms/modalForms.py:45 compensation/forms/modalForms.py:61 -#: compensation/forms/modalForms.py:255 compensation/forms/modalForms.py:333 +#: compensation/filters.py:122 compensation/forms/modalForms.py:35 +#: compensation/forms/modalForms.py:46 compensation/forms/modalForms.py:62 +#: compensation/forms/modalForms.py:256 compensation/forms/modalForms.py:351 #: intervention/forms/forms.py:52 intervention/forms/forms.py:154 #: intervention/forms/forms.py:166 intervention/forms/modalForms.py:125 #: intervention/forms/modalForms.py:138 intervention/forms/modalForms.py:151 @@ -26,7 +26,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-31 10:52+0100\n" +"POT-Creation-Date: 2022-01-31 12:41+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -95,7 +95,7 @@ msgstr "" #: analysis/templates/analysis/reports/includes/eco_account/amount.html:3 #: analysis/templates/analysis/reports/includes/intervention/amount.html:3 #: analysis/templates/analysis/reports/includes/old_data/amount.html:3 -#: compensation/forms/modalForms.py:316 +#: compensation/forms/modalForms.py:334 #: compensation/templates/compensation/detail/eco_account/includes/deductions.html:34 #: intervention/templates/intervention/detail/includes/deductions.html:31 msgid "Amount" @@ -213,13 +213,13 @@ msgstr "Abbuchungen" #: analysis/templates/analysis/reports/includes/eco_account/deductions.html:9 #: analysis/templates/analysis/reports/includes/eco_account/deductions.html:11 -#: compensation/forms/modalForms.py:150 -#: compensation/templates/compensation/detail/compensation/includes/states-after.html:36 -#: compensation/templates/compensation/detail/compensation/includes/states-before.html:36 -#: compensation/templates/compensation/detail/eco_account/includes/states-after.html:36 -#: 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 +#: compensation/forms/modalForms.py:151 +#: compensation/templates/compensation/detail/compensation/includes/states-after.html:39 +#: compensation/templates/compensation/detail/compensation/includes/states-before.html:39 +#: compensation/templates/compensation/detail/eco_account/includes/states-after.html:39 +#: compensation/templates/compensation/detail/eco_account/includes/states-before.html:39 +#: ema/templates/ema/detail/includes/states-after.html:39 +#: ema/templates/ema/detail/includes/states-before.html:39 #: intervention/forms/modalForms.py:295 msgid "Surface" msgstr "Fläche" @@ -247,7 +247,7 @@ msgid "Compensation" msgstr "Kompensation" #: analysis/templates/analysis/reports/includes/intervention/compensated_by.html:21 -#: compensation/forms/modalForms.py:74 +#: compensation/forms/modalForms.py:75 msgid "Payment" msgstr "Zahlung" @@ -353,9 +353,9 @@ msgstr "Aussagekräftiger Titel" msgid "Compensation XY; Location ABC" msgstr "Kompensation XY; Flur ABC" -#: compensation/forms/forms.py:57 compensation/forms/modalForms.py:60 -#: compensation/forms/modalForms.py:254 compensation/forms/modalForms.py:332 -#: compensation/templates/compensation/detail/compensation/includes/actions.html:34 +#: compensation/forms/forms.py:57 compensation/forms/modalForms.py:61 +#: compensation/forms/modalForms.py:255 compensation/forms/modalForms.py:350 +#: compensation/templates/compensation/detail/compensation/includes/actions.html:37 #: compensation/templates/compensation/detail/compensation/includes/deadlines.html:34 #: compensation/templates/compensation/detail/compensation/includes/documents.html:31 #: compensation/templates/compensation/detail/eco_account/includes/actions.html:34 @@ -469,74 +469,80 @@ msgstr "Ökokonto XY; Flur ABC" msgid "Edit Eco-Account" msgstr "Ökokonto bearbeiten" -#: compensation/forms/modalForms.py:35 +#: compensation/forms/modalForms.py:36 msgid "in Euro" msgstr "in Euro" -#: compensation/forms/modalForms.py:44 +#: compensation/forms/modalForms.py:45 #: intervention/templates/intervention/detail/includes/payments.html:31 msgid "Due on" msgstr "Fällig am" -#: compensation/forms/modalForms.py:47 +#: compensation/forms/modalForms.py:48 msgid "Due on which date" msgstr "Zahlung wird an diesem Datum erwartet" -#: compensation/forms/modalForms.py:62 compensation/forms/modalForms.py:256 -#: compensation/forms/modalForms.py:334 intervention/forms/modalForms.py:152 +#: compensation/forms/modalForms.py:63 compensation/forms/modalForms.py:257 +#: compensation/forms/modalForms.py:352 intervention/forms/modalForms.py:152 #: konova/forms.py:375 msgid "Additional comment, maximum {} letters" msgstr "Zusätzlicher Kommentar, maximal {} Zeichen" -#: compensation/forms/modalForms.py:75 +#: compensation/forms/modalForms.py:76 msgid "Add a payment for intervention '{}'" msgstr "Neue Ersatzzahlung zu Eingriff '{}' hinzufügen" -#: compensation/forms/modalForms.py:95 +#: compensation/forms/modalForms.py:96 msgid "If there is no date you can enter, please explain why." msgstr "Falls Sie kein Datum angeben können, erklären Sie bitte weshalb." -#: compensation/forms/modalForms.py:114 compensation/forms/modalForms.py:126 +#: compensation/forms/modalForms.py:115 compensation/forms/modalForms.py:127 msgid "Biotope Type" msgstr "Biotoptyp" -#: compensation/forms/modalForms.py:117 +#: compensation/forms/modalForms.py:118 msgid "Select the biotope type" msgstr "Biotoptyp wählen" -#: compensation/forms/modalForms.py:131 compensation/forms/modalForms.py:143 +#: compensation/forms/modalForms.py:132 compensation/forms/modalForms.py:144 +#: compensation/templates/compensation/detail/compensation/includes/states-after.html:36 +#: compensation/templates/compensation/detail/compensation/includes/states-before.html:36 +#: compensation/templates/compensation/detail/eco_account/includes/states-after.html:36 +#: 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 msgid "Biotope additional type" msgstr "Zusatzbezeichnung" -#: compensation/forms/modalForms.py:134 +#: compensation/forms/modalForms.py:135 msgid "Select an additional biotope type" msgstr "Zusatzbezeichnung wählen" -#: compensation/forms/modalForms.py:153 intervention/forms/modalForms.py:297 +#: compensation/forms/modalForms.py:154 intervention/forms/modalForms.py:297 msgid "in m²" msgstr "" -#: compensation/forms/modalForms.py:164 +#: compensation/forms/modalForms.py:165 msgid "New state" msgstr "Neuer Zustand" -#: compensation/forms/modalForms.py:165 +#: compensation/forms/modalForms.py:166 msgid "Insert data for the new state" msgstr "Geben Sie die Daten des neuen Zustandes ein" -#: compensation/forms/modalForms.py:172 konova/forms.py:190 +#: compensation/forms/modalForms.py:173 konova/forms.py:190 msgid "Object removed" msgstr "Objekt entfernt" -#: compensation/forms/modalForms.py:226 +#: compensation/forms/modalForms.py:227 msgid "Deadline Type" msgstr "Fristart" -#: compensation/forms/modalForms.py:229 +#: compensation/forms/modalForms.py:230 msgid "Select the deadline type" msgstr "Fristart wählen" -#: compensation/forms/modalForms.py:238 +#: compensation/forms/modalForms.py:239 #: 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 @@ -544,43 +550,43 @@ msgstr "Fristart wählen" msgid "Date" msgstr "Datum" -#: compensation/forms/modalForms.py:241 +#: compensation/forms/modalForms.py:242 msgid "Select date" msgstr "Datum wählen" -#: compensation/forms/modalForms.py:268 +#: compensation/forms/modalForms.py:269 msgid "New deadline" msgstr "Neue Frist" -#: compensation/forms/modalForms.py:269 +#: compensation/forms/modalForms.py:270 msgid "Insert data for the new deadline" msgstr "Geben Sie die Daten der neuen Frist ein" -#: compensation/forms/modalForms.py:287 +#: compensation/forms/modalForms.py:288 msgid "Action Type" msgstr "Maßnahmentyp" -#: compensation/forms/modalForms.py:290 +#: compensation/forms/modalForms.py:291 msgid "Select the action type" msgstr "Maßnahmentyp wählen" -#: compensation/forms/modalForms.py:299 -#: compensation/templates/compensation/detail/compensation/includes/actions.html:38 +#: compensation/forms/modalForms.py:300 +#: compensation/templates/compensation/detail/compensation/includes/actions.html:41 #: compensation/templates/compensation/detail/compensation/includes/deadlines.html:38 #: compensation/templates/compensation/detail/compensation/includes/documents.html:35 -#: compensation/templates/compensation/detail/compensation/includes/states-after.html:40 -#: compensation/templates/compensation/detail/compensation/includes/states-before.html:40 +#: compensation/templates/compensation/detail/compensation/includes/states-after.html:43 +#: compensation/templates/compensation/detail/compensation/includes/states-before.html:43 #: compensation/templates/compensation/detail/eco_account/includes/actions.html:38 #: 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:40 -#: compensation/templates/compensation/detail/eco_account/includes/states-before.html:40 +#: compensation/templates/compensation/detail/eco_account/includes/states-after.html:43 +#: compensation/templates/compensation/detail/eco_account/includes/states-before.html:43 #: 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 +#: ema/templates/ema/detail/includes/states-after.html:42 +#: ema/templates/ema/detail/includes/states-before.html:42 #: intervention/templates/intervention/detail/includes/compensations.html:37 #: intervention/templates/intervention/detail/includes/deductions.html:38 #: intervention/templates/intervention/detail/includes/documents.html:35 @@ -590,23 +596,31 @@ msgstr "Maßnahmentyp wählen" msgid "Action" msgstr "Aktionen" -#: compensation/forms/modalForms.py:304 +#: compensation/forms/modalForms.py:305 compensation/forms/modalForms.py:317 +msgid "Action Type detail" +msgstr "Zusatzmerkmal" + +#: compensation/forms/modalForms.py:308 +msgid "Select the action type detail" +msgstr "Zusatzmerkmal wählen" + +#: compensation/forms/modalForms.py:322 msgid "Unit" msgstr "Einheit" -#: compensation/forms/modalForms.py:307 +#: compensation/forms/modalForms.py:325 msgid "Select the unit" msgstr "Einheit wählen" -#: compensation/forms/modalForms.py:319 +#: compensation/forms/modalForms.py:337 msgid "Insert the amount" msgstr "Menge eingeben" -#: compensation/forms/modalForms.py:345 +#: compensation/forms/modalForms.py:363 msgid "New action" msgstr "Neue Maßnahme" -#: compensation/forms/modalForms.py:346 +#: compensation/forms/modalForms.py:364 msgid "Insert data for the new action" msgstr "Geben Sie die Daten der neuen Maßnahme ein" @@ -736,13 +750,17 @@ msgid "Action type" msgstr "Maßnahmentyp" #: compensation/templates/compensation/detail/compensation/includes/actions.html:31 +msgid "Action type details" +msgstr "Zusatzmerkmale" + +#: compensation/templates/compensation/detail/compensation/includes/actions.html:34 #: compensation/templates/compensation/detail/eco_account/includes/actions.html:31 #: ema/templates/ema/detail/includes/actions.html:31 msgctxt "Compensation" msgid "Amount" msgstr "Menge" -#: compensation/templates/compensation/detail/compensation/includes/actions.html:53 +#: compensation/templates/compensation/detail/compensation/includes/actions.html:61 #: compensation/templates/compensation/detail/eco_account/includes/actions.html:53 #: ema/templates/ema/detail/includes/actions.html:51 msgid "Remove action" @@ -852,12 +870,12 @@ msgstr "Fehlende Flächenmengen laut Ausgangszustand: " msgid "Biotope type" msgstr "Biotoptyp" -#: compensation/templates/compensation/detail/compensation/includes/states-after.html:54 -#: compensation/templates/compensation/detail/compensation/includes/states-before.html:54 -#: compensation/templates/compensation/detail/eco_account/includes/states-after.html:54 -#: compensation/templates/compensation/detail/eco_account/includes/states-before.html:54 -#: ema/templates/ema/detail/includes/states-after.html:52 -#: ema/templates/ema/detail/includes/states-before.html:52 +#: compensation/templates/compensation/detail/compensation/includes/states-after.html:64 +#: compensation/templates/compensation/detail/compensation/includes/states-before.html:64 +#: compensation/templates/compensation/detail/eco_account/includes/states-after.html:64 +#: compensation/templates/compensation/detail/eco_account/includes/states-before.html:64 +#: ema/templates/ema/detail/includes/states-after.html:62 +#: ema/templates/ema/detail/includes/states-before.html:62 msgid "Remove state" msgstr "Zustand entfernen" From f6304d0b33f98a7c81a527dcccf41b99072a4172 Mon Sep 17 00:00:00 2001 From: mpeltriaux <michel.peltriaux@sgdnord.rlp.de> Date: Mon, 31 Jan 2022 14:01:02 +0100 Subject: [PATCH 5/5] #88 Action/Biotope API extension * extends the API to support serializing and deserializing of action_details and biotope_details * renames biotope_extra_types into biotope_type_details on CompensationState model for convenience reasons and to match CompensationAction's action_type_details --- api/utils/serializer/v1/serializer.py | 39 +++++++++++++------ compensation/models/compensation.py | 2 +- compensation/models/state.py | 2 +- .../compensation/includes/states-after.html | 2 +- .../compensation/includes/states-before.html | 2 +- .../eco_account/includes/states-after.html | 2 +- .../eco_account/includes/states-before.html | 2 +- .../ema/detail/includes/states-after.html | 2 +- .../ema/detail/includes/states-before.html | 2 +- 9 files changed, 35 insertions(+), 20 deletions(-) diff --git a/api/utils/serializer/v1/serializer.py b/api/utils/serializer/v1/serializer.py index 66421708..f56db81b 100644 --- a/api/utils/serializer/v1/serializer.py +++ b/api/utils/serializer/v1/serializer.py @@ -14,7 +14,8 @@ from django.db.models import QuerySet from api.utils.serializer.serializer import AbstractModelAPISerializer from codelist.models import KonovaCode from codelist.settings import CODELIST_COMPENSATION_ACTION_ID, CODELIST_BIOTOPES_ID, CODELIST_PROCESS_TYPE_ID, \ - CODELIST_LAW_ID, CODELIST_REGISTRATION_OFFICE_ID, CODELIST_CONSERVATION_OFFICE_ID + CODELIST_LAW_ID, CODELIST_REGISTRATION_OFFICE_ID, CODELIST_CONSERVATION_OFFICE_ID, \ + CODELIST_COMPENSATION_ACTION_DETAIL_ID, CODELIST_BIOTOPES_EXTRA_CODES_ID from compensation.models import CompensationAction, UnitChoices, CompensationState from intervention.models import Responsibility, Legal from konova.models import Deadline, DeadlineType @@ -323,6 +324,9 @@ class AbstractCompensationAPISerializerV1Mixin: states = [] for entry in states_data: biotope_type = entry["biotope"] + biotope_details = [ + self._konova_code_from_json(e, CODELIST_BIOTOPES_EXTRA_CODES_ID) for e in entry["biotope_details"] + ] surface = float(entry["surface"]) # Check on validity @@ -331,22 +335,22 @@ class AbstractCompensationAPISerializerV1Mixin: # If this exact data is already existing, we do not create it new. Instead put it's id in the list of # entries, we will use to set the new actions - pre_existing_state = states_manager.filter( + state = states_manager.filter( biotope_type__atom_id=biotope_type, surface=surface, ).exclude( id__in=states ).first() - if pre_existing_state is not None: - states.append(pre_existing_state.id) + if state is not None: + states.append(state.id) else: # Create and add id to list - new_state = CompensationState.objects.create( + state = CompensationState.objects.create( biotope_type=self._konova_code_from_json(biotope_type, CODELIST_BIOTOPES_ID), surface=surface ) - states.append(new_state.id) - + states.append(state.id) + state.biotope_type_details.set(biotope_details) states_manager.set(states) return obj @@ -364,6 +368,9 @@ class AbstractCompensationAPISerializerV1Mixin: actions = [] for entry in actions_data: action = entry["action"] + action_details = [ + self._konova_code_from_json(e, CODELIST_COMPENSATION_ACTION_DETAIL_ID) for e in entry["action_details"] + ] amount = float(entry["amount"]) unit = entry["unit"] comment = entry["comment"] @@ -376,7 +383,7 @@ class AbstractCompensationAPISerializerV1Mixin: # If this exact data is already existing, we do not create it new. Instead put it's id in the list of # entries, we will use to set the new actions - pre_existing_action = obj.actions.filter( + action_entry = obj.actions.filter( action_type__atom_id=action, amount=amount, unit=unit, @@ -384,17 +391,19 @@ class AbstractCompensationAPISerializerV1Mixin: ).exclude( id__in=actions ).first() - if pre_existing_action is not None: - actions.append(pre_existing_action.id) + if action_entry is not None: + actions.append(action_entry.id) else: # Create and add id to list - new_action = CompensationAction.objects.create( + action_entry = CompensationAction.objects.create( action_type=self._konova_code_from_json(action, CODELIST_COMPENSATION_ACTION_ID), amount=amount, unit=unit, comment=comment, ) - actions.append(new_action.id) + actions.append(action_entry.id) + + action_entry.action_type_details.set(action_details) obj.actions.set(actions) return obj @@ -410,6 +419,9 @@ class AbstractCompensationAPISerializerV1Mixin: return [ { "biotope": self._konova_code_to_json(entry.biotope_type), + "biotope_details": [ + self._konova_code_to_json(detail) for detail in entry.biotope_type_details.all() + ], "surface": entry.surface, } for entry in qs @@ -427,6 +439,9 @@ class AbstractCompensationAPISerializerV1Mixin: return [ { "action": self._konova_code_to_json(entry.action_type), + "action_details": [ + self._konova_code_to_json(detail) for detail in entry.action_type_details.all() + ], "amount": entry.amount, "unit": entry.unit, "comment": entry.comment, diff --git a/compensation/models/compensation.py b/compensation/models/compensation.py index 8147203f..de5a3461 100644 --- a/compensation/models/compensation.py +++ b/compensation/models/compensation.py @@ -117,7 +117,7 @@ class AbstractCompensation(BaseObject, GeoReferencedMixin): surface=form_data["surface"], ) state_additional_types = form_data["biotope_extra"] - state.biotope_extra_types.set(state_additional_types) + state.biotope_type_details.set(state_additional_types) if is_before_state: self.before_states.add(state) else: diff --git a/compensation/models/state.py b/compensation/models/state.py index a4b8fafb..858ac3d1 100644 --- a/compensation/models/state.py +++ b/compensation/models/state.py @@ -29,7 +29,7 @@ class CompensationState(UuidModel): }, related_name='+', ) - biotope_extra_types = models.ManyToManyField( + biotope_type_details = models.ManyToManyField( KonovaCode, blank=True, limit_choices_to={ diff --git a/compensation/templates/compensation/detail/compensation/includes/states-after.html b/compensation/templates/compensation/detail/compensation/includes/states-after.html index 3f0b4eef..408689a7 100644 --- a/compensation/templates/compensation/detail/compensation/includes/states-after.html +++ b/compensation/templates/compensation/detail/compensation/includes/states-after.html @@ -52,7 +52,7 @@ {{ state.biotope_type }} </td> <td class="align-middle"> - {% for biotope_extra in state.biotope_extra_types.all %} + {% for biotope_extra in state.biotope_type_details.all %} <div class="mb-2" title="{{ biotope_extra }}"> {{ biotope_extra.long_name }} </div> diff --git a/compensation/templates/compensation/detail/compensation/includes/states-before.html b/compensation/templates/compensation/detail/compensation/includes/states-before.html index 168524cd..991f6c23 100644 --- a/compensation/templates/compensation/detail/compensation/includes/states-before.html +++ b/compensation/templates/compensation/detail/compensation/includes/states-before.html @@ -52,7 +52,7 @@ {{ state.biotope_type }} </td> <td class="align-middle"> - {% for biotope_extra in state.biotope_extra_types.all %} + {% for biotope_extra in state.biotope_type_details.all %} <div class="mb-2" title="{{ biotope_extra }}"> {{ biotope_extra.long_name }} </div> diff --git a/compensation/templates/compensation/detail/eco_account/includes/states-after.html b/compensation/templates/compensation/detail/eco_account/includes/states-after.html index 2d9b32e4..70a36018 100644 --- a/compensation/templates/compensation/detail/eco_account/includes/states-after.html +++ b/compensation/templates/compensation/detail/eco_account/includes/states-after.html @@ -52,7 +52,7 @@ {{ state.biotope_type }} </td> <td class="align-middle"> - {% for biotope_extra in state.biotope_extra_types.all %} + {% for biotope_extra in state.biotope_type_details.all %} <div class="mb-2" title="{{ biotope_extra }}"> {{ biotope_extra.long_name }} </div> diff --git a/compensation/templates/compensation/detail/eco_account/includes/states-before.html b/compensation/templates/compensation/detail/eco_account/includes/states-before.html index 45ee4167..5482674a 100644 --- a/compensation/templates/compensation/detail/eco_account/includes/states-before.html +++ b/compensation/templates/compensation/detail/eco_account/includes/states-before.html @@ -52,7 +52,7 @@ {{ state.biotope_type }} </td> <td class="align-middle"> - {% for biotope_extra in state.biotope_extra_types.all %} + {% for biotope_extra in state.biotope_type_details.all %} <div class="mb-2" title="{{ biotope_extra }}"> {{ biotope_extra.long_name }} </div> diff --git a/ema/templates/ema/detail/includes/states-after.html b/ema/templates/ema/detail/includes/states-after.html index 0cbb5fd6..db9e75b9 100644 --- a/ema/templates/ema/detail/includes/states-after.html +++ b/ema/templates/ema/detail/includes/states-after.html @@ -50,7 +50,7 @@ {{ state.biotope_type }} </td> <td class="align-middle"> - {% for biotope_extra in state.biotope_extra_types.all %} + {% for biotope_extra in state.biotope_type_details.all %} <div class="mb-2" title="{{ biotope_extra }}"> {{ biotope_extra.long_name }} </div> diff --git a/ema/templates/ema/detail/includes/states-before.html b/ema/templates/ema/detail/includes/states-before.html index 61dbc0cd..a4da5538 100644 --- a/ema/templates/ema/detail/includes/states-before.html +++ b/ema/templates/ema/detail/includes/states-before.html @@ -50,7 +50,7 @@ {{ state.biotope_type }} </td> <td class="align-middle"> - {% for biotope_extra in state.biotope_extra_types.all %} + {% for biotope_extra in state.biotope_type_details.all %} <div class="mb-2" title="{{ biotope_extra }}"> {{ biotope_extra.long_name }} </div>