Merge pull request '5_compensation_conservation_office' (#15) from 5_compensation_conservation_office into master
Reviewed-on: SGD-Nord/konova#15
This commit is contained in:
commit
3ab9081fe0
@ -13,7 +13,7 @@ from codelist.models import KonovaCode, KonovaCodeList
|
|||||||
from codelist.settings import CODELIST_INTERVENTION_HANDLER_ID, CODELIST_CONSERVATION_OFFICE_ID, \
|
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_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_COMPENSATION_ACTION_ID, CODELIST_COMPENSATION_ACTION_CLASS_ID, CODELIST_COMPENSATION_ADDITIONAL_TYPE_ID, \
|
||||||
CODELIST_COMPENSATION_COMBINATION_ID, CODELIST_BASE_URL
|
CODELIST_COMPENSATION_COMBINATION_ID, CODELIST_BASE_URL, CODELIST_PROCESS_TYPE_ID
|
||||||
|
|
||||||
bool_map = {
|
bool_map = {
|
||||||
"true": True,
|
"true": True,
|
||||||
@ -36,6 +36,7 @@ class Command(BaseCommand):
|
|||||||
CODELIST_COMPENSATION_ACTION_CLASS_ID,
|
CODELIST_COMPENSATION_ACTION_CLASS_ID,
|
||||||
CODELIST_COMPENSATION_ADDITIONAL_TYPE_ID,
|
CODELIST_COMPENSATION_ADDITIONAL_TYPE_ID,
|
||||||
CODELIST_COMPENSATION_COMBINATION_ID,
|
CODELIST_COMPENSATION_COMBINATION_ID,
|
||||||
|
CODELIST_PROCESS_TYPE_ID,
|
||||||
]
|
]
|
||||||
self._write_warning("Fetching codes...")
|
self._write_warning("Fetching codes...")
|
||||||
|
|
||||||
@ -69,6 +70,7 @@ class Command(BaseCommand):
|
|||||||
if items is None:
|
if items is None:
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
|
self._write_warning(" --- Found {} subcodes. Process now...".format(len(items)))
|
||||||
for element in items:
|
for element in items:
|
||||||
children = element.find("items")
|
children = element.find("items")
|
||||||
_id = element.find("id").text
|
_id = element.find("id").text
|
||||||
|
@ -57,6 +57,13 @@ class KonovaCode(models.Model):
|
|||||||
ret_val += " ({})".format(self.short_name)
|
ret_val += " ({})".format(self.short_name)
|
||||||
return ret_val
|
return ret_val
|
||||||
|
|
||||||
|
@property
|
||||||
|
def str_as_office(self):
|
||||||
|
ret_val = self.long_name
|
||||||
|
if self.parent:
|
||||||
|
ret_val += ", " + self.parent.long_name
|
||||||
|
return ret_val
|
||||||
|
|
||||||
|
|
||||||
class KonovaCodeList(models.Model):
|
class KonovaCodeList(models.Model):
|
||||||
"""
|
"""
|
||||||
|
@ -15,9 +15,10 @@ CODELIST_CONSERVATION_OFFICE_ID = 907 # CLNaturschutzbehörden
|
|||||||
CODELIST_REGISTRATION_OFFICE_ID = 1053 # CLZulassungsbehörden
|
CODELIST_REGISTRATION_OFFICE_ID = 1053 # CLZulassungsbehörden
|
||||||
CODELIST_BIOTOPES_ID = 974 # CL_EIV_Biotoptypen
|
CODELIST_BIOTOPES_ID = 974 # CL_EIV_Biotoptypen
|
||||||
CODELIST_LAW_ID = 1048 # CLVerfahrensrecht
|
CODELIST_LAW_ID = 1048 # CLVerfahrensrecht
|
||||||
|
CODELIST_PROCESS_TYPE_ID = 44382 # CLVerfahrenstyp
|
||||||
|
|
||||||
CODELIST_COMPENSATION_HANDLER_ID = 1052 # CLEingreifer
|
CODELIST_COMPENSATION_HANDLER_ID = 1052 # CLEingreifer
|
||||||
CODELIST_COMPENSATION_ACTION_ID = 1026 # CLMassnahmedetail
|
CODELIST_COMPENSATION_ACTION_ID = 1026 # CLMassnahmedetail
|
||||||
CODELIST_COMPENSATION_ACTION_CLASS_ID = 1034 # CLMassnahmeklasse
|
CODELIST_COMPENSATION_ACTION_CLASS_ID = 1034 # CLMassnahmeklasse
|
||||||
CODELIST_COMPENSATION_ADDITIONAL_TYPE_ID = 1028 # CLMassnahmetyp
|
CODELIST_COMPENSATION_ADDITIONAL_TYPE_ID = 1028 # CLMassnahmetyp, CEF and stuff
|
||||||
CODELIST_COMPENSATION_COMBINATION_ID = 1049 # CLKombimassnahme
|
CODELIST_COMPENSATION_COMBINATION_ID = 1049 # CLKombimassnahme
|
||||||
|
@ -12,6 +12,7 @@ from django.db.models import Sum
|
|||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from codelist.models import KonovaCode
|
from codelist.models import KonovaCode
|
||||||
|
from codelist.settings import CODELIST_COMPENSATION_ACTION_ID, CODELIST_BIOTOPES_ID
|
||||||
from intervention.models import Intervention, ResponsibilityData
|
from intervention.models import Intervention, ResponsibilityData
|
||||||
from konova.models import BaseObject, BaseResource, Geometry, UuidModel
|
from konova.models import BaseObject, BaseResource, Geometry, UuidModel
|
||||||
from konova.settings import DEFAULT_SRID_RLP, LANIS_LINK_TEMPLATE
|
from konova.settings import DEFAULT_SRID_RLP, LANIS_LINK_TEMPLATE
|
||||||
@ -52,7 +53,12 @@ class CompensationState(UuidModel):
|
|||||||
KonovaCode,
|
KonovaCode,
|
||||||
on_delete=models.SET_NULL,
|
on_delete=models.SET_NULL,
|
||||||
null=True,
|
null=True,
|
||||||
blank=True
|
blank=True,
|
||||||
|
limit_choices_to={
|
||||||
|
"code_lists__in": [CODELIST_BIOTOPES_ID],
|
||||||
|
"is_selectable": True,
|
||||||
|
"is_archived": False,
|
||||||
|
}
|
||||||
)
|
)
|
||||||
surface = models.FloatField()
|
surface = models.FloatField()
|
||||||
|
|
||||||
@ -80,7 +86,12 @@ class CompensationAction(BaseResource):
|
|||||||
KonovaCode,
|
KonovaCode,
|
||||||
on_delete=models.SET_NULL,
|
on_delete=models.SET_NULL,
|
||||||
null=True,
|
null=True,
|
||||||
blank=True
|
blank=True,
|
||||||
|
limit_choices_to={
|
||||||
|
"code_lists__in": [CODELIST_COMPENSATION_ACTION_ID],
|
||||||
|
"is_selectable": True,
|
||||||
|
"is_archived": False,
|
||||||
|
}
|
||||||
)
|
)
|
||||||
amount = models.FloatField()
|
amount = models.FloatField()
|
||||||
unit = models.CharField(max_length=100, null=True, blank=True, choices=UnitChoices.choices)
|
unit = models.CharField(max_length=100, null=True, blank=True, choices=UnitChoices.choices)
|
||||||
|
@ -52,9 +52,9 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr {% if not obj.responsible.conservation_office %}class="alert alert-danger" title="{% trans 'Missing' %}" {% endif %}>
|
||||||
<th scope="row">{% trans 'Conservation office' %}</th>
|
<th scope="row">{% trans 'Conservation office' %}</th>
|
||||||
<td class="align-middle">{{obj.responsible.conservation_office|default_if_none:""}}</td>
|
<td class="align-middle">{{obj.responsible.conservation_office.str_as_office|default_if_none:""}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr {% if not obj.responsible.conservation_file_number %}class="alert alert-danger" title="{% trans 'Missing' %}" {% endif %}>
|
<tr {% if not obj.responsible.conservation_file_number %}class="alert alert-danger" title="{% trans 'Missing' %}" {% endif %}>
|
||||||
<th scope="row">{% trans 'Conversation office file number' %}</th>
|
<th scope="row">{% trans 'Conversation office file number' %}</th>
|
||||||
|
@ -38,9 +38,9 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr {% if not obj.responsible.conservation_office %}class="alert alert-danger" title="{% trans 'Missing' %}" {% endif %}>
|
||||||
<th scope="row">{% trans 'Conservation office' %}</th>
|
<th scope="row">{% trans 'Conservation office' %}</th>
|
||||||
<td class="align-middle">{{obj.responsible.conservation_office|default_if_none:""}}</td>
|
<td class="align-middle">{{obj.responsible.conservation_office.str_as_office|default_if_none:""}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr {% if not obj.responsible.conservation_file_number %}class="alert alert-danger" title="{% trans 'Missing' %}" {% endif %}>
|
<tr {% if not obj.responsible.conservation_file_number %}class="alert alert-danger" title="{% trans 'Missing' %}" {% endif %}>
|
||||||
<th scope="row">{% trans 'Conversation office file number' %}</th>
|
<th scope="row">{% trans 'Conversation office file number' %}</th>
|
||||||
|
@ -10,6 +10,9 @@ from django.contrib.gis.db import models
|
|||||||
from django.utils.timezone import localtime
|
from django.utils.timezone import localtime
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
from codelist.models import KonovaCode
|
||||||
|
from codelist.settings import CODELIST_REGISTRATION_OFFICE_ID, CODELIST_CONSERVATION_OFFICE_ID, CODELIST_LAW_ID, \
|
||||||
|
CODELIST_PROCESS_TYPE_ID
|
||||||
from konova.models import BaseObject, Geometry, UuidModel, BaseResource
|
from konova.models import BaseObject, Geometry, UuidModel, BaseResource
|
||||||
from konova.settings import DEFAULT_SRID_RLP, LANIS_LINK_TEMPLATE
|
from konova.settings import DEFAULT_SRID_RLP, LANIS_LINK_TEMPLATE
|
||||||
from konova.sub_settings.django_settings import DEFAULT_DATE_TIME_FORMAT
|
from konova.sub_settings.django_settings import DEFAULT_DATE_TIME_FORMAT
|
||||||
@ -23,11 +26,33 @@ class ResponsibilityData(UuidModel):
|
|||||||
Holds intervention data about responsible organizations and their file numbers for this case
|
Holds intervention data about responsible organizations and their file numbers for this case
|
||||||
|
|
||||||
"""
|
"""
|
||||||
registration_office = models.ForeignKey(Organisation, on_delete=models.SET_NULL, null=True, related_name="+", blank=True)
|
registration_office = models.ForeignKey(
|
||||||
|
KonovaCode,
|
||||||
|
on_delete=models.SET_NULL,
|
||||||
|
null=True,
|
||||||
|
related_name="+",
|
||||||
|
blank=True,
|
||||||
|
limit_choices_to={
|
||||||
|
"code_lists__in": [CODELIST_REGISTRATION_OFFICE_ID],
|
||||||
|
"is_selectable": True,
|
||||||
|
"is_archived": False,
|
||||||
|
}
|
||||||
|
)
|
||||||
registration_file_number = models.CharField(max_length=1000, blank=True, null=True)
|
registration_file_number = models.CharField(max_length=1000, blank=True, null=True)
|
||||||
conservation_office = models.ForeignKey(Organisation, on_delete=models.SET_NULL, null=True, related_name="+", blank=True)
|
conservation_office = models.ForeignKey(
|
||||||
|
KonovaCode,
|
||||||
|
on_delete=models.SET_NULL,
|
||||||
|
null=True,
|
||||||
|
related_name="+",
|
||||||
|
blank=True,
|
||||||
|
limit_choices_to={
|
||||||
|
"code_lists__in": [CODELIST_CONSERVATION_OFFICE_ID],
|
||||||
|
"is_selectable": True,
|
||||||
|
"is_archived": False,
|
||||||
|
}
|
||||||
|
)
|
||||||
conservation_file_number = models.CharField(max_length=1000, blank=True, null=True)
|
conservation_file_number = models.CharField(max_length=1000, blank=True, null=True)
|
||||||
handler = models.CharField(max_length=500, null=True, blank=True, help_text="Refers to 'Eingriffsverursacher'")
|
handler = models.CharField(max_length=500, null=True, blank=True, help_text="Refers to 'Eingriffsverursacher' or 'Maßnahmenträger'")
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "ZB: {} | ETS: {} | Handler: {}".format(
|
return "ZB: {} | ETS: {} | Handler: {}".format(
|
||||||
@ -62,8 +87,30 @@ class LegalData(UuidModel):
|
|||||||
# Refers to "Bestandskraft am"
|
# Refers to "Bestandskraft am"
|
||||||
binding_date = models.DateField(null=True, blank=True, help_text="Refers to 'Bestandskraft am'")
|
binding_date = models.DateField(null=True, blank=True, help_text="Refers to 'Bestandskraft am'")
|
||||||
|
|
||||||
process_type = models.CharField(max_length=500, null=True, blank=True)
|
process_type = models.ForeignKey(
|
||||||
law = models.CharField(max_length=500, null=True, blank=True)
|
KonovaCode,
|
||||||
|
on_delete=models.SET_NULL,
|
||||||
|
null=True,
|
||||||
|
related_name="+",
|
||||||
|
blank=True,
|
||||||
|
limit_choices_to={
|
||||||
|
"code_lists__in": [CODELIST_PROCESS_TYPE_ID],
|
||||||
|
"is_selectable": True,
|
||||||
|
"is_archived": False,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
law = models.ForeignKey(
|
||||||
|
KonovaCode,
|
||||||
|
on_delete=models.SET_NULL,
|
||||||
|
null=True,
|
||||||
|
related_name="+",
|
||||||
|
blank=True,
|
||||||
|
limit_choices_to={
|
||||||
|
"code_lists__in": [CODELIST_LAW_ID],
|
||||||
|
"is_selectable": True,
|
||||||
|
"is_archived": False,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
revocation = models.ForeignKey(Revocation, null=True, blank=True, help_text="Refers to 'Widerspruch am'", on_delete=models.SET_NULL)
|
revocation = models.ForeignKey(Revocation, null=True, blank=True, help_text="Refers to 'Widerspruch am'", on_delete=models.SET_NULL)
|
||||||
|
|
||||||
|
@ -38,17 +38,17 @@
|
|||||||
<th scope="row">{% trans 'Law' %}</th>
|
<th scope="row">{% trans 'Law' %}</th>
|
||||||
<td class="align-middle">{{intervention.legal.law|default_if_none:""}}</td>
|
<td class="align-middle">{{intervention.legal.law|default_if_none:""}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr {% if not intervention.responsible.registration_office %}class="alert alert-danger" title="{% trans 'Missing' %}" {% endif %}>
|
||||||
<th scope="row">{% trans 'Registration office' %}</th>
|
<th scope="row">{% trans 'Registration office' %}</th>
|
||||||
<td class="align-middle">{{intervention.responsible.registration_office|default_if_none:""}}</td>
|
<td class="align-middle">{{intervention.responsible.registration_office.str_as_office|default_if_none:""}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr {% if not intervention.responsible.registration_file_number %}class="alert alert-danger" title="{% trans 'Missing' %}" {% endif %}>
|
<tr {% if not intervention.responsible.registration_file_number %}class="alert alert-danger" title="{% trans 'Missing' %}" {% endif %}>
|
||||||
<th scope="row">{% trans 'Registration office file number' %}</th>
|
<th scope="row">{% trans 'Registration office file number' %}</th>
|
||||||
<td class="align-middle">{{intervention.responsible.registration_file_number|default_if_none:""}}</td>
|
<td class="align-middle">{{intervention.responsible.registration_file_number|default_if_none:""}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr {% if not intervention.responsible.conservation_office %}class="alert alert-danger" title="{% trans 'Missing' %}" {% endif %}>
|
||||||
<th scope="row">{% trans 'Conservation office' %}</th>
|
<th scope="row">{% trans 'Conservation office' %}</th>
|
||||||
<td class="align-middle">{{intervention.responsible.conservation_office|default_if_none:""}}</td>
|
<td class="align-middle">{{intervention.responsible.conservation_office.str_as_office|default_if_none:""}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr {% if not intervention.responsible.conservation_file_number %}class="alert alert-danger" title="{% trans 'Missing' %}" {% endif %}>
|
<tr {% if not intervention.responsible.conservation_file_number %}class="alert alert-danger" title="{% trans 'Missing' %}" {% endif %}>
|
||||||
<th scope="row">{% trans 'Conversation office file number' %}</th>
|
<th scope="row">{% trans 'Conversation office file number' %}</th>
|
||||||
|
@ -10,7 +10,7 @@ from django.db.models import Q
|
|||||||
|
|
||||||
from codelist.models import KonovaCode
|
from codelist.models import KonovaCode
|
||||||
from codelist.settings import CODELIST_COMPENSATION_ACTION_ID, CODELIST_BIOTOPES_ID, CODELIST_LAW_ID, \
|
from codelist.settings import CODELIST_COMPENSATION_ACTION_ID, CODELIST_BIOTOPES_ID, CODELIST_LAW_ID, \
|
||||||
CODELIST_REGISTRATION_OFFICE_ID, CODELIST_CONSERVATION_OFFICE_ID
|
CODELIST_REGISTRATION_OFFICE_ID, CODELIST_CONSERVATION_OFFICE_ID, CODELIST_PROCESS_TYPE_ID
|
||||||
from compensation.models import EcoAccount
|
from compensation.models import EcoAccount
|
||||||
from intervention.models import Intervention
|
from intervention.models import Intervention
|
||||||
from organisation.models import Organisation
|
from organisation.models import Organisation
|
||||||
@ -138,6 +138,15 @@ class LawCodeAutocomplete(KonovaCodeAutocomplete):
|
|||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
class ProcessTypeCodeAutocomplete(KonovaCodeAutocomplete):
|
||||||
|
"""
|
||||||
|
Due to limitations of the django dal package, we need to subclass for each code list
|
||||||
|
"""
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
self.c = CODELIST_PROCESS_TYPE_ID
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
class RegistrationOfficeCodeAutocomplete(KonovaCodeAutocomplete):
|
class RegistrationOfficeCodeAutocomplete(KonovaCodeAutocomplete):
|
||||||
"""
|
"""
|
||||||
Due to limitations of the django dal package, we need to subclass for each code list
|
Due to limitations of the django dal package, we need to subclass for each code list
|
||||||
|
Loading…
Reference in New Issue
Block a user