diff --git a/codelist/settings.py b/codelist/settings.py index 61652bd0..fb9fe79d 100644 --- a/codelist/settings.py +++ b/codelist/settings.py @@ -20,6 +20,7 @@ CODELIST_LAW_ID = 1048 # CLVerfahrensrecht CODELIST_PROCESS_TYPE_ID = 44382 # CLVerfahrenstyp CODELIST_HANDLER_ID = 1052 # CLEingreifer +CODELIST_COMPENSATION_HANDLER_ID = 903 # CLMassnahmeträger CODELIST_COMPENSATION_ACTION_ID = 1026 # CLMassnahmedetail CODELIST_COMPENSATION_ACTION_DETAIL_ID = 1035 # CLZusatzmerkmal CODELIST_COMPENSATION_ACTION_CLASS_ID = 1034 # CLMassnahmeklasse diff --git a/compensation/forms/forms.py b/compensation/forms/forms.py index 4e9e329e..2cc25a8f 100644 --- a/compensation/forms/forms.py +++ b/compensation/forms/forms.py @@ -13,7 +13,7 @@ from django.utils.translation import gettext_lazy as _ from django import forms from codelist.models import KonovaCode -from codelist.settings import CODELIST_CONSERVATION_OFFICE_ID, CODELIST_HANDLER_ID +from codelist.settings import CODELIST_CONSERVATION_OFFICE_ID, CODELIST_HANDLER_ID, CODELIST_COMPENSATION_HANDLER_ID from compensation.models import Compensation, EcoAccount from intervention.inputs import GenerateInput from intervention.models import Intervention, Responsibility, Legal, Handler @@ -110,10 +110,10 @@ class CompensationResponsibleFormMixin(forms.Form): queryset=KonovaCode.objects.filter( is_archived=False, is_leaf=True, - code_lists__in=[CODELIST_HANDLER_ID], + code_lists__in=[CODELIST_COMPENSATION_HANDLER_ID], ), widget=autocomplete.ModelSelect2( - url="codes-handler-autocomplete", + url="codes-compensation-handler-autocomplete", attrs={ "data-placeholder": _("Click for selection"), } diff --git a/konova/autocompletes.py b/konova/autocompletes.py index 9f60d54f..a5848f5e 100644 --- a/konova/autocompletes.py +++ b/konova/autocompletes.py @@ -17,7 +17,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_BIOTOPES_EXTRA_CODES_ID, CODELIST_COMPENSATION_ACTION_DETAIL_ID, CODELIST_HANDLER_ID + CODELIST_BIOTOPES_EXTRA_CODES_ID, CODELIST_COMPENSATION_ACTION_DETAIL_ID, CODELIST_HANDLER_ID, \ + CODELIST_COMPENSATION_HANDLER_ID from compensation.models import EcoAccount from intervention.models import Intervention @@ -143,7 +144,7 @@ class KonovaCodeAutocomplete(Select2GroupQuerySetView): qs = self.order_by(qs) if self.c: qs = qs.filter( - code_lists__in=[self.c] + code_lists__in=[self.c], ) if self.q: # Remove whitespaces from self.q and split input in all keywords (if multiple given) @@ -372,3 +373,19 @@ class HandlerCodeAutocomplete(KonovaCodeAutocomplete): def get_result_label(self, result): return result.long_name + + +class CompensationHandlerCodeAutocomplete(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_COMPENSATION_HANDLER_ID + super().__init__(*args, **kwargs) + + def get_result_label(self, result): + return result.long_name + diff --git a/konova/urls.py b/konova/urls.py index d2458f50..f6ca3a32 100644 --- a/konova/urls.py +++ b/konova/urls.py @@ -21,7 +21,7 @@ from konova.autocompletes import EcoAccountAutocomplete, \ InterventionAutocomplete, CompensationActionCodeAutocomplete, BiotopeCodeAutocomplete, LawCodeAutocomplete, \ RegistrationOfficeCodeAutocomplete, ConservationOfficeCodeAutocomplete, ProcessTypeCodeAutocomplete, \ ShareUserAutocomplete, BiotopeExtraCodeAutocomplete, CompensationActionDetailCodeAutocomplete, \ - ShareTeamAutocomplete, HandlerCodeAutocomplete + ShareTeamAutocomplete, HandlerCodeAutocomplete, CompensationHandlerCodeAutocomplete 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, get_geom_parcels @@ -54,6 +54,7 @@ urlpatterns = [ path("atcmplt/codes/reg-off", RegistrationOfficeCodeAutocomplete.as_view(), name="codes-registration-office-autocomplete"), path("atcmplt/codes/cons-off", ConservationOfficeCodeAutocomplete.as_view(), name="codes-conservation-office-autocomplete"), path("atcmplt/codes/handler", HandlerCodeAutocomplete.as_view(), name="codes-handler-autocomplete"), + path("atcmplt/codes/comp/handler", CompensationHandlerCodeAutocomplete.as_view(), name="codes-compensation-handler-autocomplete"), path("atcmplt/share/u", ShareUserAutocomplete.as_view(), name="share-user-autocomplete"), path("atcmplt/share/t", ShareTeamAutocomplete.as_view(), name="share-team-autocomplete"), ]