# 129 Handler code
* adds handler code list usage to forms and models * updates tests * extends API for handler code handling
This commit is contained in:
@@ -17,7 +17,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_COMPENSATION_ACTION_DETAIL_ID
|
||||
CODELIST_BIOTOPES_EXTRA_CODES_ID, CODELIST_COMPENSATION_ACTION_DETAIL_ID, CODELIST_COMPENSATION_HANDLER_ID
|
||||
from compensation.models import EcoAccount
|
||||
from intervention.models import Intervention
|
||||
|
||||
@@ -357,3 +357,18 @@ class ConservationOfficeCodeAutocomplete(KonovaCodeAutocomplete):
|
||||
|
||||
def get_result_label(self, result):
|
||||
return f"{result.long_name} ({result.short_name})"
|
||||
|
||||
|
||||
class HandlerCodeAutocomplete(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
|
||||
|
||||
@@ -18,7 +18,7 @@ from django.urls import reverse
|
||||
|
||||
from codelist.models import KonovaCode, KonovaCodeList
|
||||
from compensation.models import Compensation, CompensationState, CompensationAction, EcoAccount, EcoAccountDeduction
|
||||
from intervention.models import Legal, Responsibility, Intervention
|
||||
from intervention.models import Legal, Responsibility, Intervention, Handler
|
||||
from konova.management.commands.setup_data import GROUPS_DATA
|
||||
from konova.models import Geometry
|
||||
from konova.settings import DEFAULT_GROUP
|
||||
@@ -57,6 +57,7 @@ class BaseTestCase(TestCase):
|
||||
|
||||
self.create_users()
|
||||
self.create_groups()
|
||||
self.handler = self.create_dummy_handler()
|
||||
self.intervention = self.create_dummy_intervention()
|
||||
self.compensation = self.create_dummy_compensation()
|
||||
self.eco_account = self.create_dummy_eco_account()
|
||||
@@ -122,7 +123,9 @@ class BaseTestCase(TestCase):
|
||||
# Create legal data object (without M2M laws first)
|
||||
legal_data = Legal.objects.create()
|
||||
# Create responsible data object
|
||||
responsibility_data = Responsibility.objects.create()
|
||||
responsibility_data = Responsibility.objects.create(
|
||||
handler=self.handler
|
||||
)
|
||||
geometry = Geometry.objects.create()
|
||||
# Finally create main object, holding the other objects
|
||||
intervention = Intervention.objects.create(
|
||||
@@ -173,6 +176,9 @@ class BaseTestCase(TestCase):
|
||||
# Create responsible data object
|
||||
lega_data = Legal.objects.create()
|
||||
responsible_data = Responsibility.objects.create()
|
||||
handler = self.handler
|
||||
responsible_data.handler = handler
|
||||
responsible_data.save()
|
||||
# Finally create main object, holding the other objects
|
||||
eco_account = EcoAccount.objects.create(
|
||||
identifier="TEST",
|
||||
@@ -197,6 +203,8 @@ class BaseTestCase(TestCase):
|
||||
geometry = Geometry.objects.create()
|
||||
# Create responsible data object
|
||||
responsible_data = Responsibility.objects.create()
|
||||
responsible_data.handler = self.handler
|
||||
responsible_data.save()
|
||||
# Finally create main object, holding the other objects
|
||||
ema = Ema.objects.create(
|
||||
identifier="TEST",
|
||||
@@ -282,6 +290,18 @@ class BaseTestCase(TestCase):
|
||||
polygon = polygon.transform(3857, clone=True)
|
||||
return MultiPolygon(polygon, srid=3857) # 3857 is the default srid used for MultiPolygonField in the form
|
||||
|
||||
def create_dummy_handler(self) -> Handler:
|
||||
""" Creates a Handler
|
||||
|
||||
Returns:
|
||||
|
||||
"""
|
||||
handler = Handler.objects.get_or_create(
|
||||
type=KonovaCode.objects.all().first(),
|
||||
detail="Test handler"
|
||||
)[0]
|
||||
return handler
|
||||
|
||||
def fill_out_intervention(self, intervention: Intervention) -> Intervention:
|
||||
""" Adds all required (dummy) data to an intervention
|
||||
|
||||
@@ -295,7 +315,7 @@ class BaseTestCase(TestCase):
|
||||
intervention.responsible.conservation_office = KonovaCode.objects.get(id=2)
|
||||
intervention.responsible.registration_file_number = "test"
|
||||
intervention.responsible.conservation_file_number = "test"
|
||||
intervention.responsible.handler = "handler"
|
||||
intervention.responsible.handler = self.handler
|
||||
intervention.responsible.save()
|
||||
intervention.legal.registration_date = datetime.date.fromisoformat("1970-01-01")
|
||||
intervention.legal.binding_date = datetime.date.fromisoformat("1970-01-01")
|
||||
@@ -343,7 +363,7 @@ class BaseTestCase(TestCase):
|
||||
"""
|
||||
ema.responsible.conservation_office = self.get_conservation_office_code()
|
||||
ema.responsible.conservation_file_number = "test"
|
||||
ema.responsible.handler = "handler"
|
||||
ema.responsible.handler = self.handler
|
||||
ema.responsible.save()
|
||||
ema.after_states.add(self.comp_state)
|
||||
ema.before_states.add(self.comp_state)
|
||||
@@ -361,7 +381,7 @@ class BaseTestCase(TestCase):
|
||||
eco_account.legal.save()
|
||||
eco_account.responsible.conservation_office = self.get_conservation_office_code()
|
||||
eco_account.responsible.conservation_file_number = "test"
|
||||
eco_account.responsible.handler = "handler"
|
||||
eco_account.responsible.handler = self.handler
|
||||
eco_account.responsible.save()
|
||||
eco_account.after_states.add(self.comp_state)
|
||||
eco_account.before_states.add(self.comp_state)
|
||||
|
||||
@@ -20,7 +20,8 @@ from django.urls import path, include
|
||||
from konova.autocompletes import EcoAccountAutocomplete, \
|
||||
InterventionAutocomplete, CompensationActionCodeAutocomplete, BiotopeCodeAutocomplete, LawCodeAutocomplete, \
|
||||
RegistrationOfficeCodeAutocomplete, ConservationOfficeCodeAutocomplete, ProcessTypeCodeAutocomplete, \
|
||||
ShareUserAutocomplete, BiotopeExtraCodeAutocomplete, CompensationActionDetailCodeAutocomplete, ShareTeamAutocomplete
|
||||
ShareUserAutocomplete, BiotopeExtraCodeAutocomplete, CompensationActionDetailCodeAutocomplete, \
|
||||
ShareTeamAutocomplete, HandlerCodeAutocomplete
|
||||
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
|
||||
@@ -52,6 +53,7 @@ urlpatterns = [
|
||||
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"),
|
||||
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/share/u", ShareUserAutocomplete.as_view(), name="share-user-autocomplete"),
|
||||
path("atcmplt/share/t", ShareTeamAutocomplete.as_view(), name="share-team-autocomplete"),
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user