From 762d25a87e2225bf0a1b51c8a015bfbaab76042b Mon Sep 17 00:00:00 2001 From: mpeltriaux Date: Tue, 6 Aug 2024 15:39:01 +0200 Subject: [PATCH] # Codelist 288 * introduces 288 to codelist/settings.py * refactors usage from 975 to 288 * enhances rendering of codelist names depending on which name exists (short vs long) --- api/utils/serializer/v1/serializer.py | 5 ++-- codelist/autocomplete/biotope.py | 9 ++++---- .../management/commands/update_codelist.py | 7 +++--- codelist/models.py | 23 ++++++++++++++----- codelist/settings.py | 3 ++- compensation/forms/modals/state.py | 5 ++-- compensation/models/state.py | 6 ++--- 7 files changed, 37 insertions(+), 21 deletions(-) diff --git a/api/utils/serializer/v1/serializer.py b/api/utils/serializer/v1/serializer.py index 8779f4e..03ca0e0 100644 --- a/api/utils/serializer/v1/serializer.py +++ b/api/utils/serializer/v1/serializer.py @@ -16,7 +16,8 @@ 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_COMPENSATION_ACTION_DETAIL_ID, CODELIST_BIOTOPES_EXTRA_CODES_ID, CODELIST_HANDLER_ID + CODELIST_COMPENSATION_ACTION_DETAIL_ID, CODELIST_HANDLER_ID, \ + CODELIST_BIOTOPES_EXTRA_CODES_FULL_ID from compensation.models import CompensationAction, UnitChoices, CompensationState from intervention.models import Responsibility, Legal, Handler from konova.models import Deadline, DeadlineType @@ -347,7 +348,7 @@ class AbstractCompensationAPISerializerV1Mixin: try: biotope_type = entry["biotope"] biotope_details = [ - self._konova_code_from_json(e, CODELIST_BIOTOPES_EXTRA_CODES_ID) for e in entry["biotope_details"] + self._konova_code_from_json(e, CODELIST_BIOTOPES_EXTRA_CODES_FULL_ID) for e in entry["biotope_details"] ] surface = float(entry["surface"]) except KeyError: diff --git a/codelist/autocomplete/biotope.py b/codelist/autocomplete/biotope.py index 5e56b7f..7e8047e 100644 --- a/codelist/autocomplete/biotope.py +++ b/codelist/autocomplete/biotope.py @@ -9,7 +9,8 @@ import collections from django.core.exceptions import ImproperlyConfigured -from codelist.settings import CODELIST_BIOTOPES_ID, CODELIST_BIOTOPES_EXTRA_CODES_ID +from codelist.settings import CODELIST_BIOTOPES_ID, \ + CODELIST_BIOTOPES_EXTRA_CODES_FULL_ID from codelist.autocomplete.base import KonovaCodeAutocomplete from konova.utils.message_templates import UNGROUPED @@ -84,11 +85,11 @@ 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" + related_field_name = "short_name" paginate_by = 200 def __init__(self, *args, **kwargs): - self.c = CODELIST_BIOTOPES_EXTRA_CODES_ID + self.c = CODELIST_BIOTOPES_EXTRA_CODES_FULL_ID super().__init__(*args, **kwargs) def order_by(self, qs): @@ -103,7 +104,7 @@ class BiotopeExtraCodeAutocomplete(KonovaCodeAutocomplete): qs (QuerySet): The ordered queryset """ return qs.order_by( - "long_name", + "short_name", ) def get_result_label(self, result): diff --git a/codelist/management/commands/update_codelist.py b/codelist/management/commands/update_codelist.py index d29b272..d514c99 100644 --- a/codelist/management/commands/update_codelist.py +++ b/codelist/management/commands/update_codelist.py @@ -13,7 +13,7 @@ from codelist.settings import CODELIST_INTERVENTION_HANDLER_ID, CODELIST_CONSERV CODELIST_REGISTRATION_OFFICE_ID, CODELIST_BIOTOPES_ID, CODELIST_LAW_ID, CODELIST_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_COMPENSATION_ACTION_DETAIL_ID + CODELIST_COMPENSATION_ACTION_DETAIL_ID, CODELIST_BIOTOPES_EXTRA_CODES_FULL_ID from konova.management.commands.setup import BaseKonovaCommand from konova.settings import PROXIES @@ -34,6 +34,7 @@ class Command(BaseKonovaCommand): CODELIST_REGISTRATION_OFFICE_ID, CODELIST_BIOTOPES_ID, CODELIST_BIOTOPES_EXTRA_CODES_ID, + CODELIST_BIOTOPES_EXTRA_CODES_FULL_ID, CODELIST_LAW_ID, CODELIST_HANDLER_ID, CODELIST_COMPENSATION_ACTION_ID, @@ -55,7 +56,7 @@ class Command(BaseKonovaCommand): content = result.content.decode("utf-8") root = etree.fromstring(content) items = root.findall("item") - self._write_warning("Found {} codes. Process now...".format(len(items))) + self._write_warning(" Found {} codes. Process now...".format(len(items))) code_list = KonovaCodeList.objects.get_or_create( id=list_id, @@ -74,7 +75,7 @@ class Command(BaseKonovaCommand): if items is None: return else: - self._write_warning(" --- Found {} subcodes. Process now...".format(len(items))) + self._write_warning(" --- Found {} subcodes. Process now...".format(len(items))) for element in items: children = element.find("items") _id = element.find("id").text diff --git a/codelist/models.py b/codelist/models.py index a5b91a3..4821d9a 100644 --- a/codelist/models.py +++ b/codelist/models.py @@ -50,12 +50,23 @@ class KonovaCode(models.Model): def __str__(self, with_parent: bool = True): ret_val = "" - if self.parent and self.parent.long_name and with_parent: - ret_val += self.parent.long_name + " > " - ret_val += self.long_name - if self.short_name and self.short_name != self.long_name: - # Only add short name, if we won't have stupid repition like 'thing a (thing a)' due to misused long-short names - ret_val += f" ({self.short_name})" + + long_name = self.long_name + short_name = self.short_name + + both_names_exist = long_name and short_name + + if both_names_exist: + if with_parent: + if self.parent and self.parent.long_name: + ret_val += self.parent.long_name + " > " + ret_val += long_name + + if short_name and short_name != long_name: + ret_val += f" ({short_name})" + else: + ret_val += str(long_name or short_name) + return ret_val @property diff --git a/codelist/settings.py b/codelist/settings.py index 3bd7032..1032423 100644 --- a/codelist/settings.py +++ b/codelist/settings.py @@ -15,7 +15,8 @@ CODELIST_CONSERVATION_OFFICE_ID = 907 # CLNaturschutzbehörden CODELIST_REGISTRATION_OFFICE_ID = 1053 # CLZulassungsbehörden CODELIST_BIOTOPES_ID = 654 # CL_Biotoptypen CODELIST_AFTER_STATE_BIOTOPES_ID = 974 # CL-KSP_ZielBiotoptypen - USAGE HAS BEEN DROPPED IN 2022 IN FAVOR OF 654 -CODELIST_BIOTOPES_EXTRA_CODES_ID = 975 # CLZusatzbezeichnung +CODELIST_BIOTOPES_EXTRA_CODES_ID = 975 # CLZusatzbezeichnung - Subset of 288. Migration usage 975->288 in 08/2024 +CODELIST_BIOTOPES_EXTRA_CODES_FULL_ID = 288 # CLBiotoptypZusatzcode CODELIST_LAW_ID = 1048 # CLVerfahrensrecht CODELIST_PROCESS_TYPE_ID = 44382 # CLVerfahrenstyp diff --git a/compensation/forms/modals/state.py b/compensation/forms/modals/state.py index 5a1dde5..7340c95 100644 --- a/compensation/forms/modals/state.py +++ b/compensation/forms/modals/state.py @@ -14,7 +14,8 @@ from django.shortcuts import render from django.utils.translation import gettext_lazy as _ from codelist.models import KonovaCode -from codelist.settings import CODELIST_BIOTOPES_ID, CODELIST_BIOTOPES_EXTRA_CODES_ID +from codelist.settings import CODELIST_BIOTOPES_ID, \ + CODELIST_BIOTOPES_EXTRA_CODES_FULL_ID from intervention.inputs import CompensationStateTreeRadioSelect from konova.contexts import BaseContext from konova.forms.modals import RemoveModalForm, BaseModalForm @@ -43,7 +44,7 @@ class NewCompensationStateModalForm(BaseModalForm): queryset=KonovaCode.objects.filter( is_archived=False, is_leaf=True, - code_lists__in=[CODELIST_BIOTOPES_EXTRA_CODES_ID], + code_lists__in=[CODELIST_BIOTOPES_EXTRA_CODES_FULL_ID], ), widget=autocomplete.ModelSelect2Multiple( url="codelist:biotope-extra-type-autocomplete", diff --git a/compensation/models/state.py b/compensation/models/state.py index 77026b5..01fc2aa 100644 --- a/compensation/models/state.py +++ b/compensation/models/state.py @@ -6,10 +6,10 @@ Created on: 16.11.21 """ from django.db import models -from django.db.models import Q from codelist.models import KonovaCode -from codelist.settings import CODELIST_BIOTOPES_ID, CODELIST_BIOTOPES_EXTRA_CODES_ID +from codelist.settings import CODELIST_BIOTOPES_ID, \ + CODELIST_BIOTOPES_EXTRA_CODES_FULL_ID from compensation.managers import CompensationStateManager from konova.models import UuidModel @@ -34,7 +34,7 @@ class CompensationState(UuidModel): KonovaCode, blank=True, limit_choices_to={ - "code_lists__in": [CODELIST_BIOTOPES_EXTRA_CODES_ID], + "code_lists__in": [CODELIST_BIOTOPES_EXTRA_CODES_FULL_ID], "is_selectable": True, "is_archived": False, },