Compare commits
No commits in common. "9c978f0cbfc1e38b40dd25c3a1fdaf1678eb19d6" and "ae89f3d43c554a6c7501cee7fc9c8a9b9753ee38" have entirely different histories.
9c978f0cbf
...
ae89f3d43c
@ -104,9 +104,9 @@ class TimespanReport:
|
|||||||
"iterable": self.evaluated_laws,
|
"iterable": self.evaluated_laws,
|
||||||
"attrs": [
|
"attrs": [
|
||||||
"short_name",
|
"short_name",
|
||||||
"num",
|
|
||||||
"num_checked",
|
"num_checked",
|
||||||
"num_recorded",
|
"num_recorded",
|
||||||
|
"num",
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"i_laws_checked": self.law_sum_checked,
|
"i_laws_checked": self.law_sum_checked,
|
||||||
|
@ -64,7 +64,6 @@ class CompensationAPISerializerV1(AbstractModelAPISerializerV1, AbstractCompensa
|
|||||||
obj = Compensation()
|
obj = Compensation()
|
||||||
created = create_action
|
created = create_action
|
||||||
obj.created = created
|
obj.created = created
|
||||||
obj.modified = created
|
|
||||||
obj.geometry = geometry
|
obj.geometry = geometry
|
||||||
return obj
|
return obj
|
||||||
|
|
||||||
|
@ -103,7 +103,6 @@ class EcoAccountAPISerializerV1(AbstractModelAPISerializerV1,
|
|||||||
obj.legal = Legal()
|
obj.legal = Legal()
|
||||||
created = create_action
|
created = create_action
|
||||||
obj.created = created
|
obj.created = created
|
||||||
obj.modified = created
|
|
||||||
obj.geometry = geometry
|
obj.geometry = geometry
|
||||||
return obj
|
return obj
|
||||||
|
|
||||||
|
@ -85,7 +85,6 @@ class EmaAPISerializerV1(AbstractModelAPISerializerV1, AbstractCompensationAPISe
|
|||||||
)
|
)
|
||||||
created = create_action
|
created = create_action
|
||||||
obj.created = created
|
obj.created = created
|
||||||
obj.modified = created
|
|
||||||
obj.geometry = geometry
|
obj.geometry = geometry
|
||||||
return obj
|
return obj
|
||||||
|
|
||||||
|
@ -76,7 +76,6 @@ class InterventionAPISerializerV1(AbstractModelAPISerializerV1,
|
|||||||
created = create_action
|
created = create_action
|
||||||
obj.legal = legal
|
obj.legal = legal
|
||||||
obj.created = created
|
obj.created = created
|
||||||
obj.modified = created
|
|
||||||
obj.geometry = geometry
|
obj.geometry = geometry
|
||||||
obj.responsible = resp
|
obj.responsible = resp
|
||||||
return obj
|
return obj
|
||||||
@ -133,6 +132,7 @@ class InterventionAPISerializerV1(AbstractModelAPISerializerV1,
|
|||||||
id__in=payments
|
id__in=payments
|
||||||
)
|
)
|
||||||
obj.payments.set(payments)
|
obj.payments.set(payments)
|
||||||
|
obj.send_data_to_egon()
|
||||||
return obj
|
return obj
|
||||||
|
|
||||||
def create_model_from_json(self, json_model, user):
|
def create_model_from_json(self, json_model, user):
|
||||||
@ -200,7 +200,6 @@ class InterventionAPISerializerV1(AbstractModelAPISerializerV1,
|
|||||||
obj.save()
|
obj.save()
|
||||||
|
|
||||||
obj.mark_as_edited(user, edit_comment="API update")
|
obj.mark_as_edited(user, edit_comment="API update")
|
||||||
obj.send_data_to_egon()
|
|
||||||
|
|
||||||
celery_update_parcels.delay(obj.geometry.id)
|
celery_update_parcels.delay(obj.geometry.id)
|
||||||
|
|
||||||
|
@ -30,12 +30,11 @@ class AbstractCompensationForm(BaseForm):
|
|||||||
label=_("Identifier"),
|
label=_("Identifier"),
|
||||||
label_suffix="",
|
label_suffix="",
|
||||||
max_length=255,
|
max_length=255,
|
||||||
help_text=_("Generated automatically - not editable"),
|
help_text=_("Generated automatically"),
|
||||||
widget=GenerateInput(
|
widget=GenerateInput(
|
||||||
attrs={
|
attrs={
|
||||||
"class": "form-control",
|
"class": "form-control",
|
||||||
"url": None, # Needs to be set in inheriting constructors
|
"url": None, # Needs to be set in inheriting constructors
|
||||||
"readonly": True,
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -157,7 +156,6 @@ class NewCompensationForm(AbstractCompensationForm,
|
|||||||
title=title,
|
title=title,
|
||||||
intervention=intervention,
|
intervention=intervention,
|
||||||
created=action,
|
created=action,
|
||||||
modified=action,
|
|
||||||
is_cef=is_cef,
|
is_cef=is_cef,
|
||||||
is_coherence_keeping=is_coherence_keeping,
|
is_coherence_keeping=is_coherence_keeping,
|
||||||
is_pik=is_pik,
|
is_pik=is_pik,
|
||||||
|
@ -117,7 +117,6 @@ class NewEcoAccountForm(AbstractCompensationForm, CompensationResponsibleFormMix
|
|||||||
responsible=responsible,
|
responsible=responsible,
|
||||||
deductable_surface=surface,
|
deductable_surface=surface,
|
||||||
created=action,
|
created=action,
|
||||||
modified=action,
|
|
||||||
comment=comment,
|
comment=comment,
|
||||||
is_pik=is_pik,
|
is_pik=is_pik,
|
||||||
legal=legal
|
legal=legal
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body {% if tables_scrollable %}scroll-300{% endif %} p-2">
|
<div class="card-body scroll-300 p-2">
|
||||||
<table class="table table-hover">
|
<table class="table table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
{% trans 'Missing finished deadline ' %}
|
{% trans 'Missing finished deadline ' %}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="card-body {% if tables_scrollable %}scroll-300{% endif %} p-2">
|
<div class="card-body scroll-300 p-2">
|
||||||
<table class="table table-hover">
|
<table class="table table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body {% if tables_scrollable %}scroll-300{% endif %} p-2">
|
<div class="card-body scroll-300 p-2">
|
||||||
<table class="table table-hover">
|
<table class="table table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
{% trans 'Missing surfaces according to states before: ' %}{{ diff_states|floatformat:2 }} m²
|
{% trans 'Missing surfaces according to states before: ' %}{{ diff_states|floatformat:2 }} m²
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="card-body {% if tables_scrollable %}scroll-300{% endif %} p-2">
|
<div class="card-body scroll-300 p-2">
|
||||||
<table class="table table-hover">
|
<table class="table table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
{% trans 'Missing surfaces according to states after: ' %}{{ diff_states|floatformat:2 }} m²
|
{% trans 'Missing surfaces according to states after: ' %}{{ diff_states|floatformat:2 }} m²
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="card-body {% if tables_scrollable %}scroll-300{% endif %} p-2">
|
<div class="card-body scroll-300 p-2">
|
||||||
<table class="table table-hover">
|
<table class="table table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body {% if tables_scrollable %}scroll-300{% endif %} p-2">
|
<div class="card-body scroll-300 p-2">
|
||||||
<table class="table table-hover">
|
<table class="table table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
{% trans 'Missing finished deadline ' %}
|
{% trans 'Missing finished deadline ' %}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="card-body {% if tables_scrollable %}scroll-300{% endif %} p-2">
|
<div class="card-body scroll-300 p-2">
|
||||||
<table class="table table-hover">
|
<table class="table table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body {% if tables_scrollable %}scroll-300{% endif %} p-2">
|
<div class="card-body scroll-300 p-2">
|
||||||
<table class="table table-hover">
|
<table class="table table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body {% if tables_scrollable %}scroll-300{% endif %} p-2">
|
<div class="card-body scroll-300 p-2">
|
||||||
<table class="table table-hover">
|
<table class="table table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
{% trans 'Missing surfaces according to states before: ' %}{{ diff_states|floatformat:2 }} m²
|
{% trans 'Missing surfaces according to states before: ' %}{{ diff_states|floatformat:2 }} m²
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="card-body {% if tables_scrollable %}scroll-300{% endif %} p-2">
|
<div class="card-body scroll-300 p-2">
|
||||||
<table class="table table-hover">
|
<table class="table table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
{% trans 'Missing surfaces according to states after: ' %}{{ diff_states|floatformat:2 }} m²
|
{% trans 'Missing surfaces according to states after: ' %}{{ diff_states|floatformat:2 }} m²
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="card-body {% if tables_scrollable %}scroll-300{% endif %} p-2">
|
<div class="card-body scroll-300 p-2">
|
||||||
<table class="table table-hover">
|
<table class="table table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -71,7 +71,6 @@ class CompensationWorkflowTestCase(BaseWorkflowTestCase):
|
|||||||
self.assertEqual(new_compensation.title, test_title)
|
self.assertEqual(new_compensation.title, test_title)
|
||||||
self.assert_equal_geometries(new_compensation.geometry.geom, test_geom)
|
self.assert_equal_geometries(new_compensation.geometry.geom, test_geom)
|
||||||
self.assertEqual(new_compensation.log.count(), 1)
|
self.assertEqual(new_compensation.log.count(), 1)
|
||||||
self.assertEqual(new_compensation.created, new_compensation.modified)
|
|
||||||
|
|
||||||
# Expect logs to be set
|
# Expect logs to be set
|
||||||
self.assertEqual(pre_creation_intervention_log_count + 1, self.intervention.log.count())
|
self.assertEqual(pre_creation_intervention_log_count + 1, self.intervention.log.count())
|
||||||
|
@ -65,7 +65,6 @@ class EcoAccountWorkflowTestCase(BaseWorkflowTestCase):
|
|||||||
self.assertEqual(acc.deductable_rest, test_deductable_surface)
|
self.assertEqual(acc.deductable_rest, test_deductable_surface)
|
||||||
self.assert_equal_geometries(acc.geometry.geom, test_geom)
|
self.assert_equal_geometries(acc.geometry.geom, test_geom)
|
||||||
self.assertEqual(acc.log.count(), 1)
|
self.assertEqual(acc.log.count(), 1)
|
||||||
self.assertEqual(acc.created, acc.modified)
|
|
||||||
|
|
||||||
# Expect logs to be set
|
# Expect logs to be set
|
||||||
self.assertEqual(acc.log.count(), 1)
|
self.assertEqual(acc.log.count(), 1)
|
||||||
|
@ -46,8 +46,6 @@ def index_view(request: HttpRequest):
|
|||||||
compensations = Compensation.objects.filter(
|
compensations = Compensation.objects.filter(
|
||||||
deleted=None, # only show those which are not deleted individually
|
deleted=None, # only show those which are not deleted individually
|
||||||
intervention__deleted=None, # and don't show the ones whose intervention has been deleted
|
intervention__deleted=None, # and don't show the ones whose intervention has been deleted
|
||||||
).order_by(
|
|
||||||
"-modified__timestamp"
|
|
||||||
)
|
)
|
||||||
table = CompensationTable(
|
table = CompensationTable(
|
||||||
request=request,
|
request=request,
|
||||||
@ -203,12 +201,7 @@ def detail_view(request: HttpRequest, id: str):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
template = "compensation/detail/compensation/view.html"
|
template = "compensation/detail/compensation/view.html"
|
||||||
comp = get_object_or_404(
|
comp = get_object_or_404(Compensation, id=id)
|
||||||
Compensation,
|
|
||||||
id=id,
|
|
||||||
deleted=None,
|
|
||||||
intervention__deleted=None,
|
|
||||||
)
|
|
||||||
geom_form = SimpleGeomForm(instance=comp)
|
geom_form = SimpleGeomForm(instance=comp)
|
||||||
parcels = comp.get_underlying_parcels()
|
parcels = comp.get_underlying_parcels()
|
||||||
_user = request.user
|
_user = request.user
|
||||||
|
@ -73,7 +73,6 @@ def report_view(request: HttpRequest, id: str):
|
|||||||
"geom_form": geom_form,
|
"geom_form": geom_form,
|
||||||
"parcels": parcels,
|
"parcels": parcels,
|
||||||
"actions": actions,
|
"actions": actions,
|
||||||
"tables_scrollable": False,
|
|
||||||
TAB_TITLE_IDENTIFIER: tab_title,
|
TAB_TITLE_IDENTIFIER: tab_title,
|
||||||
}
|
}
|
||||||
context = BaseContext(request, context).context
|
context = BaseContext(request, context).context
|
||||||
|
@ -41,8 +41,6 @@ def index_view(request: HttpRequest):
|
|||||||
template = "generic_index.html"
|
template = "generic_index.html"
|
||||||
eco_accounts = EcoAccount.objects.filter(
|
eco_accounts = EcoAccount.objects.filter(
|
||||||
deleted=None,
|
deleted=None,
|
||||||
).order_by(
|
|
||||||
"-modified__timestamp"
|
|
||||||
)
|
)
|
||||||
table = EcoAccountTable(
|
table = EcoAccountTable(
|
||||||
request=request,
|
request=request,
|
||||||
@ -184,8 +182,7 @@ def detail_view(request: HttpRequest, id: str):
|
|||||||
'geometry',
|
'geometry',
|
||||||
'responsible',
|
'responsible',
|
||||||
),
|
),
|
||||||
id=id,
|
id=id
|
||||||
deleted=None,
|
|
||||||
)
|
)
|
||||||
geom_form = SimpleGeomForm(instance=acc)
|
geom_form = SimpleGeomForm(instance=acc)
|
||||||
parcels = acc.get_underlying_parcels()
|
parcels = acc.get_underlying_parcels()
|
||||||
|
@ -80,7 +80,6 @@ def report_view(request: HttpRequest, id: str):
|
|||||||
"parcels": parcels,
|
"parcels": parcels,
|
||||||
"actions": actions,
|
"actions": actions,
|
||||||
"deductions": deductions,
|
"deductions": deductions,
|
||||||
"tables_scrollable": False,
|
|
||||||
TAB_TITLE_IDENTIFIER: tab_title,
|
TAB_TITLE_IDENTIFIER: tab_title,
|
||||||
}
|
}
|
||||||
context = BaseContext(request, context).context
|
context = BaseContext(request, context).context
|
||||||
|
@ -81,7 +81,6 @@ class NewEmaForm(AbstractCompensationForm, CompensationResponsibleFormMixin, Pik
|
|||||||
title=title,
|
title=title,
|
||||||
responsible=responsible,
|
responsible=responsible,
|
||||||
created=action,
|
created=action,
|
||||||
modified=action,
|
|
||||||
comment=comment,
|
comment=comment,
|
||||||
is_pik=is_pik,
|
is_pik=is_pik,
|
||||||
)
|
)
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body {% if tables_scrollable %}scroll-300{% endif %} p-2">
|
<div class="card-body scroll-300 p-2">
|
||||||
<table class="table table-hover">
|
<table class="table table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
{% trans 'Missing finished deadline ' %}
|
{% trans 'Missing finished deadline ' %}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="card-body {% if tables_scrollable %}scroll-300{% endif %} p-2">
|
<div class="card-body scroll-300 p-2">
|
||||||
<table class="table table-hover">
|
<table class="table table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body {% if tables_scrollable %}scroll-300{% endif %} p-2">
|
<div class="card-body scroll-300 p-2">
|
||||||
<table class="table table-hover">
|
<table class="table table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
{% trans 'Missing surfaces according to states before: ' %}{{ diff_states|floatformat:2 }} m²
|
{% trans 'Missing surfaces according to states before: ' %}{{ diff_states|floatformat:2 }} m²
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="card-body {% if tables_scrollable %}scroll-300{% endif %} p-2">
|
<div class="card-body scroll-300 p-2">
|
||||||
<table class="table table-hover">
|
<table class="table table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
{% trans 'Missing surfaces according to states after: ' %}{{ diff_states|floatformat:2 }} m²
|
{% trans 'Missing surfaces according to states after: ' %}{{ diff_states|floatformat:2 }} m²
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="card-body {% if tables_scrollable %}scroll-300{% endif %} p-2">
|
<div class="card-body scroll-300 p-2">
|
||||||
<table class="table table-hover">
|
<table class="table table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -62,7 +62,6 @@ class EmaWorkflowTestCase(BaseWorkflowTestCase):
|
|||||||
self.assertEqual(ema.title, test_title)
|
self.assertEqual(ema.title, test_title)
|
||||||
self.assert_equal_geometries(ema.geometry.geom, test_geom)
|
self.assert_equal_geometries(ema.geometry.geom, test_geom)
|
||||||
self.assertEqual(ema.log.count(), 1)
|
self.assertEqual(ema.log.count(), 1)
|
||||||
self.assertEqual(ema.created, ema.modified)
|
|
||||||
|
|
||||||
# Expect logs to be set
|
# Expect logs to be set
|
||||||
self.assertEqual(ema.log.count(), 1)
|
self.assertEqual(ema.log.count(), 1)
|
||||||
|
@ -39,8 +39,6 @@ def index_view(request: HttpRequest):
|
|||||||
template = "generic_index.html"
|
template = "generic_index.html"
|
||||||
emas = Ema.objects.filter(
|
emas = Ema.objects.filter(
|
||||||
deleted=None,
|
deleted=None,
|
||||||
).order_by(
|
|
||||||
"-modified__timestamp"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
table = EmaTable(
|
table = EmaTable(
|
||||||
|
@ -73,7 +73,6 @@ def report_view(request:HttpRequest, id: str):
|
|||||||
"geom_form": geom_form,
|
"geom_form": geom_form,
|
||||||
"parcels": parcels,
|
"parcels": parcels,
|
||||||
"actions": actions,
|
"actions": actions,
|
||||||
"tables_scrollable": False,
|
|
||||||
TAB_TITLE_IDENTIFIER: tab_title,
|
TAB_TITLE_IDENTIFIER: tab_title,
|
||||||
}
|
}
|
||||||
context = BaseContext(request, context).context
|
context = BaseContext(request, context).context
|
||||||
|
@ -29,12 +29,11 @@ class NewInterventionForm(BaseForm):
|
|||||||
label=_("Identifier"),
|
label=_("Identifier"),
|
||||||
label_suffix="",
|
label_suffix="",
|
||||||
max_length=255,
|
max_length=255,
|
||||||
help_text=_("Generated automatically - not editable"),
|
help_text=_("Generated automatically"),
|
||||||
widget=GenerateInput(
|
widget=GenerateInput(
|
||||||
attrs={
|
attrs={
|
||||||
"class": "form-control",
|
"class": "form-control",
|
||||||
"url": reverse_lazy("intervention:new-id"),
|
"url": reverse_lazy("intervention:new-id"),
|
||||||
"readonly": True,
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -271,7 +270,6 @@ class NewInterventionForm(BaseForm):
|
|||||||
responsible=responsibility_data,
|
responsible=responsibility_data,
|
||||||
legal=legal_data,
|
legal=legal_data,
|
||||||
created=action,
|
created=action,
|
||||||
modified=action,
|
|
||||||
comment=comment,
|
comment=comment,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -386,7 +384,6 @@ class EditInterventionForm(NewInterventionForm):
|
|||||||
geometry = geom_form.save(user_action)
|
geometry = geom_form.save(user_action)
|
||||||
self.instance.geometry = geometry
|
self.instance.geometry = geometry
|
||||||
self.instance.save()
|
self.instance.save()
|
||||||
self.instance.send_data_to_egon()
|
|
||||||
|
|
||||||
return self.instance
|
return self.instance
|
||||||
|
|
||||||
|
@ -25,6 +25,8 @@ class NewInterventionDocumentModalForm(NewDocumentModalForm):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
doc = super().save(*args, **kwargs)
|
doc = super().save(*args, **kwargs)
|
||||||
self.instance.send_data_to_egon()
|
|
||||||
|
if self.instance.payments.exists():
|
||||||
|
self.instance.send_data_to_egon()
|
||||||
|
|
||||||
return doc
|
return doc
|
||||||
|
@ -145,13 +145,11 @@ class Intervention(BaseObject,
|
|||||||
Returns:
|
Returns:
|
||||||
|
|
||||||
"""
|
"""
|
||||||
if self.payments.exists():
|
celery_export_to_egon.delay(self.id)
|
||||||
celery_export_to_egon.delay(self.id)
|
|
||||||
|
|
||||||
def set_recorded(self, user: User) -> UserActionLogEntry:
|
def set_recorded(self, user: User) -> UserActionLogEntry:
|
||||||
log_entry = super().set_recorded(user)
|
log_entry = super().set_recorded(user)
|
||||||
self.add_log_entry_to_compensations(log_entry)
|
self.add_log_entry_to_compensations(log_entry)
|
||||||
self.send_data_to_egon()
|
|
||||||
return log_entry
|
return log_entry
|
||||||
|
|
||||||
def add_log_entry_to_compensations(self, log_entry: UserActionLogEntry):
|
def add_log_entry_to_compensations(self, log_entry: UserActionLogEntry):
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body {% if tables_scrollable %}scroll-300{% endif %} p-2">
|
<div class="card-body scroll-300 p-2">
|
||||||
<table class="table table-hover">
|
<table class="table table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body {% if tables_scrollable %}scroll-300{% endif %} p-2">
|
<div class="card-body scroll-300 p-2">
|
||||||
<table class="table table-hover">
|
<table class="table table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
{% trans 'You entered a payment. Please upload the legal document which defines the payment`s amount.' %}
|
{% trans 'You entered a payment. Please upload the legal document which defines the payment`s amount.' %}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="card-body {% if tables_scrollable %}scroll-300{% endif %} p-2">
|
<div class="card-body scroll-300 p-2">
|
||||||
<table class="table table-hover">
|
<table class="table table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body {% if tables_scrollable %}scroll-300{% endif %} p-2">
|
<div class="card-body scroll-300 p-2">
|
||||||
<table class="table table-hover">
|
<table class="table table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body {% if tables_scrollable %}scroll-300{% endif %} p-2">
|
<div class="card-body scroll-300 p-2">
|
||||||
<table class="table table-hover">
|
<table class="table table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -62,8 +62,6 @@
|
|||||||
{{deduction.account.identifier}} - {{deduction.account.title}}
|
{{deduction.account.identifier}} - {{deduction.account.title}}
|
||||||
</a>
|
</a>
|
||||||
<br>
|
<br>
|
||||||
{% empty %}
|
|
||||||
{% trans 'None' %}
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -103,7 +101,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
{% include 'konova/includes/parcels/parcels.html' %}
|
{% include 'konova/includes/parcels/parcels.html' %}
|
||||||
</div>
|
</div>
|
||||||
<div class="row qrcodes">
|
<div class="row">
|
||||||
{% include 'konova/includes/report/qrcodes.html' %}
|
{% include 'konova/includes/report/qrcodes.html' %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -78,7 +78,6 @@ class InterventionWorkflowTestCase(BaseWorkflowTestCase):
|
|||||||
self.assertEqual(1, obj.log.count())
|
self.assertEqual(1, obj.log.count())
|
||||||
self.assertEqual(obj.log.first().action, UserAction.CREATED)
|
self.assertEqual(obj.log.first().action, UserAction.CREATED)
|
||||||
self.assertEqual(obj.log.first().user, self.superuser)
|
self.assertEqual(obj.log.first().user, self.superuser)
|
||||||
self.assertEqual(obj.created, obj.modified)
|
|
||||||
except ObjectDoesNotExist:
|
except ObjectDoesNotExist:
|
||||||
# Fail if there is no such object
|
# Fail if there is no such object
|
||||||
self.fail()
|
self.fail()
|
||||||
|
@ -11,7 +11,7 @@ import json
|
|||||||
import pika
|
import pika
|
||||||
import xmltodict
|
import xmltodict
|
||||||
from django.db.models import Sum
|
from django.db.models import Sum
|
||||||
from django.utils import formats
|
from django.utils import formats, timezone
|
||||||
|
|
||||||
from intervention.settings import EGON_RABBITMQ_HOST, EGON_RABBITMQ_USER, EGON_RABBITMQ_PW, EGON_RABBITMQ_PORT
|
from intervention.settings import EGON_RABBITMQ_HOST, EGON_RABBITMQ_USER, EGON_RABBITMQ_PW, EGON_RABBITMQ_PORT
|
||||||
from konova.sub_settings.django_settings import DEFAULT_DATE_FORMAT
|
from konova.sub_settings.django_settings import DEFAULT_DATE_FORMAT
|
||||||
@ -43,7 +43,6 @@ class EgonExporter:
|
|||||||
"nachricht": self.gml_builder.gml,
|
"nachricht": self.gml_builder.gml,
|
||||||
}
|
}
|
||||||
msg = json.dumps(msg)
|
msg = json.dumps(msg)
|
||||||
print(msg)
|
|
||||||
credentials = pika.PlainCredentials(EGON_RABBITMQ_USER, EGON_RABBITMQ_PW)
|
credentials = pika.PlainCredentials(EGON_RABBITMQ_USER, EGON_RABBITMQ_PW)
|
||||||
params = pika.ConnectionParameters(
|
params = pika.ConnectionParameters(
|
||||||
EGON_RABBITMQ_HOST,
|
EGON_RABBITMQ_HOST,
|
||||||
@ -68,7 +67,6 @@ class EgonGmlBuilder:
|
|||||||
"""
|
"""
|
||||||
intervention = None
|
intervention = None
|
||||||
gml = None
|
gml = None
|
||||||
_PAYMENT_FALLBACK_DATE = ""
|
|
||||||
|
|
||||||
def __init__(self, intervention):
|
def __init__(self, intervention):
|
||||||
self.intervention = intervention
|
self.intervention = intervention
|
||||||
@ -166,10 +164,9 @@ class EgonGmlBuilder:
|
|||||||
payment_date = None
|
payment_date = None
|
||||||
if payment is not None:
|
if payment is not None:
|
||||||
payment_date = payment.due_on
|
payment_date = payment.due_on
|
||||||
if payment_date is not None:
|
if payment_date is None:
|
||||||
payment_date = payment_date.strftime(DEFAULT_DATE_FORMAT)
|
payment_date = timezone.datetime.fromisoformat("1970-01-01")
|
||||||
else:
|
payment_date = payment_date.strftime(DEFAULT_DATE_FORMAT)
|
||||||
payment_date = self._PAYMENT_FALLBACK_DATE
|
|
||||||
|
|
||||||
cons_office = self.intervention.responsible.conservation_office
|
cons_office = self.intervention.responsible.conservation_office
|
||||||
reg_office = self.intervention.responsible.registration_office
|
reg_office = self.intervention.responsible.registration_office
|
||||||
@ -191,14 +188,14 @@ class EgonGmlBuilder:
|
|||||||
"@gml:id": self.intervention.identifier,
|
"@gml:id": self.intervention.identifier,
|
||||||
"oneo:azEintragungsstelle": self.intervention.responsible.conservation_file_number,
|
"oneo:azEintragungsstelle": self.intervention.responsible.conservation_file_number,
|
||||||
"oneo:azZulassungsstelle": self.intervention.responsible.registration_file_number,
|
"oneo:azZulassungsstelle": self.intervention.responsible.registration_file_number,
|
||||||
"oneo:bemerkungZulassungsstelle": "",
|
"oneo:bemerkungZulassungsstelle": None,
|
||||||
"oneo:eintragungsstelle": {
|
"oneo:eintragungsstelle": {
|
||||||
"@xlink:href": f"http://register.naturschutz.rlp.de/repository/services/referenzliste/907/{cons_office.atom_id if cons_office else ''}",
|
"@xlink:href": f"http://register.naturschutz.rlp.de/repository/services/referenzliste/907/{cons_office.atom_id if cons_office else None}",
|
||||||
"#text": cons_office.long_name if cons_office else ""
|
"#text": cons_office.long_name if cons_office else None
|
||||||
},
|
},
|
||||||
"oneo:zulassungsstelle": {
|
"oneo:zulassungsstelle": {
|
||||||
"@xlink:href": f"http://register.naturschutz.rlp.de/repository/services/referenzliste/1053/{reg_office.atom_id if reg_office else ''}",
|
"@xlink:href": f"http://register.naturschutz.rlp.de/repository/services/referenzliste/1053/{reg_office.atom_id if reg_office else None}",
|
||||||
"#text": reg_office.long_name if reg_office else ""
|
"#text": reg_office.long_name if reg_office else None
|
||||||
},
|
},
|
||||||
"oneo:ersatzzahlung": self._float_to_localized_string(self._sum_all_payments()),
|
"oneo:ersatzzahlung": self._float_to_localized_string(self._sum_all_payments()),
|
||||||
"oneo:kompensationsart": {
|
"oneo:kompensationsart": {
|
||||||
@ -206,33 +203,33 @@ class EgonGmlBuilder:
|
|||||||
"#text": comp_type
|
"#text": comp_type
|
||||||
},
|
},
|
||||||
"oneo:verfahrensrecht": {
|
"oneo:verfahrensrecht": {
|
||||||
"@xlink:href": f"http://register.naturschutz.rlp.de/repository/services/referenzliste/1048/{law.atom_id if law else ''}",
|
"@xlink:href": f"http://register.naturschutz.rlp.de/repository/services/referenzliste/1048/{law.atom_id if law else None}",
|
||||||
"#text": law.short_name if law else ""
|
"#text": law.short_name if law else None
|
||||||
},
|
},
|
||||||
"oneo:verfahrenstyp": {
|
"oneo:verfahrenstyp": {
|
||||||
"@xlink:href": f"http://register.naturschutz.rlp.de/repository/services/referenzliste/44382/{process_type.atom_id if process_type else ''}",
|
"@xlink:href": f"http://register.naturschutz.rlp.de/repository/services/referenzliste/44382/{process_type.atom_id if process_type else None}",
|
||||||
"#text": process_type.long_name if process_type else "",
|
"#text": process_type.long_name if process_type else None,
|
||||||
},
|
},
|
||||||
"oneo:eingreifer": {
|
"oneo:eingreifer": {
|
||||||
"oneo:Eingreifer": {
|
"oneo:Eingreifer": {
|
||||||
"oneo:art": {
|
"oneo:art": {
|
||||||
"@xlink:href": f"http://register.naturschutz.rlp.de/repository/services/referenzliste/1053/{handler.type.atom_id if handler.type else ''}",
|
"@xlink:href": f"http://register.naturschutz.rlp.de/repository/services/referenzliste/1053/{handler.type.atom_id if handler.type else None}",
|
||||||
"#text": handler.type.long_name if handler.type else "",
|
"#text": handler.type.long_name if handler.type else None,
|
||||||
},
|
},
|
||||||
"oneo:bemerkung": handler.detail if handler else "",
|
"oneo:bemerkung": handler.detail if handler else None,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"oneo:erfasser": {
|
"oneo:erfasser": {
|
||||||
"oneo:Erfasser": {
|
"oneo:Erfasser": {
|
||||||
"oneo:name": "",
|
"oneo:name": None,
|
||||||
"oneo:bemerkung": "",
|
"oneo:bemerkung": None,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"oneo:zulassung": {
|
"oneo:zulassung": {
|
||||||
"oneo:Zulassungstermin": {
|
"oneo:Zulassungstermin": {
|
||||||
"oneo:bauBeginn": payment_date,
|
"oneo:bauBeginn": payment_date,
|
||||||
"oneo:erlass": reg_date.strftime(DEFAULT_DATE_FORMAT) if reg_date else "",
|
"oneo:erlass": reg_date.strftime(DEFAULT_DATE_FORMAT) if reg_date else None,
|
||||||
"oneo:rechtsKraft": bind_date.strftime(DEFAULT_DATE_FORMAT) if bind_date else "",
|
"oneo:rechtsKraft": bind_date.strftime(DEFAULT_DATE_FORMAT) if bind_date else None,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"oneo:geometrie": {
|
"oneo:geometrie": {
|
||||||
@ -246,8 +243,8 @@ class EgonGmlBuilder:
|
|||||||
"oneo:kennung": self.intervention.identifier,
|
"oneo:kennung": self.intervention.identifier,
|
||||||
"oneo:bezeichnung": self.intervention.title,
|
"oneo:bezeichnung": self.intervention.title,
|
||||||
"oneo:bemerkung": self.intervention.comment,
|
"oneo:bemerkung": self.intervention.comment,
|
||||||
"oneo:verantwortlicheStelle": "",
|
"oneo:verantwortlicheStelle": None,
|
||||||
"oneo:veroffentlichtAm": "",
|
"oneo:veroffentlichtAm": None,
|
||||||
"oneo:raumreferenz": {
|
"oneo:raumreferenz": {
|
||||||
"oneo:Raumreferenz": self._gen_raumreferenz(),
|
"oneo:Raumreferenz": self._gen_raumreferenz(),
|
||||||
},
|
},
|
||||||
|
@ -45,8 +45,6 @@ def index_view(request: HttpRequest):
|
|||||||
deleted=None, # not deleted
|
deleted=None, # not deleted
|
||||||
).select_related(
|
).select_related(
|
||||||
"legal"
|
"legal"
|
||||||
).order_by(
|
|
||||||
"-modified__timestamp"
|
|
||||||
)
|
)
|
||||||
table = InterventionTable(
|
table = InterventionTable(
|
||||||
request=request,
|
request=request,
|
||||||
@ -143,8 +141,7 @@ def detail_view(request: HttpRequest, id: str):
|
|||||||
"legal",
|
"legal",
|
||||||
"responsible",
|
"responsible",
|
||||||
),
|
),
|
||||||
id=id,
|
id=id
|
||||||
deleted=None
|
|
||||||
)
|
)
|
||||||
compensations = intervention.compensations.filter(
|
compensations = intervention.compensations.filter(
|
||||||
deleted=None,
|
deleted=None,
|
||||||
|
@ -67,7 +67,6 @@ def report_view(request:HttpRequest, id: str):
|
|||||||
},
|
},
|
||||||
"geom_form": geom_form,
|
"geom_form": geom_form,
|
||||||
"parcels": parcels,
|
"parcels": parcels,
|
||||||
"tables_scrollable": False,
|
|
||||||
TAB_TITLE_IDENTIFIER: tab_title,
|
TAB_TITLE_IDENTIFIER: tab_title,
|
||||||
}
|
}
|
||||||
context = BaseContext(request, context).context
|
context = BaseContext(request, context).context
|
||||||
|
@ -28,7 +28,6 @@ class BaseContext:
|
|||||||
"help_link": HELP_LINK,
|
"help_link": HELP_LINK,
|
||||||
"impressum_link": IMPRESSUM_LINK,
|
"impressum_link": IMPRESSUM_LINK,
|
||||||
"CONTACT_MAIL": EMAIL_REPLY_TO,
|
"CONTACT_MAIL": EMAIL_REPLY_TO,
|
||||||
"tables_scrollable": True, # tables in boxes
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Add additional context, derived from given parameters
|
# Add additional context, derived from given parameters
|
||||||
|
@ -19,7 +19,7 @@ class GeoReferencedTableFilterMixin(django_filters.FilterSet):
|
|||||||
Specialized on filtering GeoReferenced model types
|
Specialized on filtering GeoReferenced model types
|
||||||
|
|
||||||
"""
|
"""
|
||||||
# District
|
# Parcel gmrkng
|
||||||
di = django_filters.CharFilter(
|
di = django_filters.CharFilter(
|
||||||
method="filter_district",
|
method="filter_district",
|
||||||
label=_(""),
|
label=_(""),
|
||||||
@ -72,7 +72,7 @@ class GeoReferencedTableFilterMixin(django_filters.FilterSet):
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
# Parcel number
|
# Parcel counter
|
||||||
pn = django_filters.NumberFilter(
|
pn = django_filters.NumberFilter(
|
||||||
method="filter_parcel_number",
|
method="filter_parcel_number",
|
||||||
label=_(""),
|
label=_(""),
|
||||||
@ -112,7 +112,7 @@ class GeoReferencedTableFilterMixin(django_filters.FilterSet):
|
|||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
def filter_district(self, queryset, name, value) -> QuerySet:
|
def filter_district(self, queryset, name, value) -> QuerySet:
|
||||||
""" Filters queryset depending on value for 'Kreis'
|
""" Filters queryset depending on value for 'Gemarkung'
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
queryset ():
|
queryset ():
|
||||||
@ -122,13 +122,10 @@ class GeoReferencedTableFilterMixin(django_filters.FilterSet):
|
|||||||
Returns:
|
Returns:
|
||||||
|
|
||||||
"""
|
"""
|
||||||
values = value.split(",")
|
matching_districts = District.objects.filter(
|
||||||
q = Q()
|
Q(name__icontains=value) |
|
||||||
for val in values:
|
Q(key__icontains=value)
|
||||||
val = val.strip()
|
).distinct()
|
||||||
q |= Q(name__icontains=val) | Q(key__icontains=val)
|
|
||||||
|
|
||||||
matching_districts = District.objects.filter(q).distinct()
|
|
||||||
matching_parcels = Parcel.objects.filter(
|
matching_parcels = Parcel.objects.filter(
|
||||||
district__in=matching_districts
|
district__in=matching_districts
|
||||||
)
|
)
|
||||||
@ -151,14 +148,9 @@ class GeoReferencedTableFilterMixin(django_filters.FilterSet):
|
|||||||
Returns:
|
Returns:
|
||||||
|
|
||||||
"""
|
"""
|
||||||
values = value.split(",")
|
|
||||||
q = Q()
|
|
||||||
for val in values:
|
|
||||||
val = val.strip()
|
|
||||||
q |= Q(parcel_group__name__icontains=val) | Q(parcel_group__key__icontains=val)
|
|
||||||
queryset = self._filter_parcel_reference(
|
queryset = self._filter_parcel_reference(
|
||||||
queryset,
|
queryset,
|
||||||
q,
|
Q(parcel_group__name__icontains=value) | Q(parcel_group__key__icontains=value),
|
||||||
)
|
)
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
@ -24,7 +24,6 @@ class RecordableTableFilterMixin(django_filters.FilterSet):
|
|||||||
widget=forms.CheckboxInput(
|
widget=forms.CheckboxInput(
|
||||||
attrs={
|
attrs={
|
||||||
"class": "form-check-input",
|
"class": "form-check-input",
|
||||||
"title": _("If activated also shows entries which have been already recorded"),
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -1,53 +0,0 @@
|
|||||||
"""
|
|
||||||
Author: Michel Peltriaux
|
|
||||||
Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany
|
|
||||||
Contact: ksp-servicestelle@sgdnord.rlp.de
|
|
||||||
Created on: 06.12.22
|
|
||||||
|
|
||||||
"""
|
|
||||||
import django_filters
|
|
||||||
from django import forms
|
|
||||||
from django.db.models import QuerySet
|
|
||||||
|
|
||||||
from django.utils.translation import gettext_lazy as _
|
|
||||||
|
|
||||||
|
|
||||||
class SelfCreatedTableFilterMixin(django_filters.FilterSet):
|
|
||||||
""" A mixin for AbstractTableFilter
|
|
||||||
|
|
||||||
Specialized on filtering recordable model types
|
|
||||||
|
|
||||||
"""
|
|
||||||
sc = django_filters.BooleanFilter(
|
|
||||||
method='filter_show_self_created',
|
|
||||||
label=_("Show only self created"),
|
|
||||||
label_suffix=_(""),
|
|
||||||
widget=forms.CheckboxInput(
|
|
||||||
attrs={
|
|
||||||
"class": "form-check-input",
|
|
||||||
"title": _("If activated only shows entries which have been created by you"),
|
|
||||||
}
|
|
||||||
),
|
|
||||||
)
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
abstract = True
|
|
||||||
|
|
||||||
def filter_show_self_created(self, queryset, name, value) -> QuerySet:
|
|
||||||
""" Filters queryset depending on value of 'self_created' setting
|
|
||||||
|
|
||||||
Args:
|
|
||||||
queryset ():
|
|
||||||
name ():
|
|
||||||
value ():
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
"""
|
|
||||||
if value:
|
|
||||||
return queryset.filter(
|
|
||||||
created__user=self.user,
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
return queryset
|
|
||||||
|
|
@ -24,7 +24,6 @@ class ShareableTableFilterMixin(django_filters.FilterSet):
|
|||||||
widget=forms.CheckboxInput(
|
widget=forms.CheckboxInput(
|
||||||
attrs={
|
attrs={
|
||||||
"class": "form-check-input",
|
"class": "form-check-input",
|
||||||
"title": _("If activated also shows entries which are not shared with you"),
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -12,7 +12,6 @@ from konova.filters.mixins.geo_reference import GeoReferencedTableFilterMixin
|
|||||||
from konova.filters.mixins.keyword import KeywordTableFilterMixin
|
from konova.filters.mixins.keyword import KeywordTableFilterMixin
|
||||||
from konova.filters.mixins.office import ConservationOfficeTableFilterMixin, RegistrationOfficeTableFilterMixin
|
from konova.filters.mixins.office import ConservationOfficeTableFilterMixin, RegistrationOfficeTableFilterMixin
|
||||||
from konova.filters.mixins.record import RecordableTableFilterMixin
|
from konova.filters.mixins.record import RecordableTableFilterMixin
|
||||||
from konova.filters.mixins.self_created import SelfCreatedTableFilterMixin
|
|
||||||
from konova.filters.mixins.share import ShareableTableFilterMixin
|
from konova.filters.mixins.share import ShareableTableFilterMixin
|
||||||
|
|
||||||
|
|
||||||
@ -47,9 +46,7 @@ class QueryTableFilter(KeywordTableFilterMixin,
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class CheckboxTableFilter(ShareableTableFilterMixin,
|
class CheckboxTableFilter(ShareableTableFilterMixin, RecordableTableFilterMixin):
|
||||||
RecordableTableFilterMixin,
|
|
||||||
SelfCreatedTableFilterMixin):
|
|
||||||
""" TableFilter holding different filter options for checkbox related filtering
|
""" TableFilter holding different filter options for checkbox related filtering
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
@ -29,7 +29,6 @@ class BaseForm(forms.Form):
|
|||||||
form_attrs = {} # Holds additional attributes, that can be used in the template
|
form_attrs = {} # Holds additional attributes, that can be used in the template
|
||||||
has_required_fields = False # Automatically set. Triggers hint rendering in templates
|
has_required_fields = False # Automatically set. Triggers hint rendering in templates
|
||||||
show_cancel_btn = True
|
show_cancel_btn = True
|
||||||
label_input_ratio = (3, 9) # used for col-sm-xy in the template. Must sum up to 12. Specify on inheriting forms
|
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
self.instance = kwargs.pop("instance", None)
|
self.instance = kwargs.pop("instance", None)
|
||||||
@ -43,26 +42,12 @@ class BaseForm(forms.Form):
|
|||||||
break
|
break
|
||||||
|
|
||||||
self.check_for_recorded_instance()
|
self.check_for_recorded_instance()
|
||||||
self.__check_valid_label_input_ratio()
|
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def save(self):
|
def save(self):
|
||||||
# To be implemented in subclasses!
|
# To be implemented in subclasses!
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def __check_valid_label_input_ratio(self):
|
|
||||||
""" Checks whether the configured label-input ratio is valid
|
|
||||||
|
|
||||||
If not valid an AssertionError will be raised.
|
|
||||||
The valid sum of label-input ratio is defined by bootstrap's column layout system.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
"""
|
|
||||||
ratio = self.label_input_ratio[0] + self.label_input_ratio[1]
|
|
||||||
if ratio != 12:
|
|
||||||
raise AssertionError(f"Label-input ratio on form must sum up to 12! It's {self.label_input_ratio}")
|
|
||||||
|
|
||||||
def disable_form_field(self, field: str):
|
def disable_form_field(self, field: str):
|
||||||
"""
|
"""
|
||||||
Disables a form field for user editing
|
Disables a form field for user editing
|
||||||
|
@ -24,7 +24,6 @@ class RemoveModalForm(BaseModalForm):
|
|||||||
widget=forms.CheckboxInput(),
|
widget=forms.CheckboxInput(),
|
||||||
required=True,
|
required=True,
|
||||||
)
|
)
|
||||||
label_input_ratio = (2, 10)
|
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
self.template = "modal/modal_form.html"
|
self.template = "modal/modal_form.html"
|
||||||
|
@ -1,137 +0,0 @@
|
|||||||
"""
|
|
||||||
Author: Michel Peltriaux
|
|
||||||
Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany
|
|
||||||
Contact: michel.peltriaux@sgdnord.rlp.de
|
|
||||||
Created on: 26.10.22
|
|
||||||
|
|
||||||
"""
|
|
||||||
import zipfile
|
|
||||||
from io import BytesIO
|
|
||||||
|
|
||||||
from django.core.mail import EmailMessage
|
|
||||||
from django.utils import timezone
|
|
||||||
from django.utils.datetime_safe import datetime
|
|
||||||
|
|
||||||
from analysis.utils.excel.excel import TempExcelFile
|
|
||||||
from analysis.utils.report import TimespanReport
|
|
||||||
from codelist.models import KonovaCode
|
|
||||||
from codelist.settings import CODELIST_CONSERVATION_OFFICE_ID
|
|
||||||
from konova.management.commands.setup import BaseKonovaCommand
|
|
||||||
from konova.sub_settings.django_settings import DEFAULT_FROM_EMAIL, ADMINS
|
|
||||||
|
|
||||||
|
|
||||||
class Command(BaseKonovaCommand):
|
|
||||||
help = "Generates reports for conservation offices"
|
|
||||||
|
|
||||||
__from_key = "from"
|
|
||||||
__to_key = "to"
|
|
||||||
__for_key = "for"
|
|
||||||
|
|
||||||
from_date = None
|
|
||||||
to_date = None
|
|
||||||
offices = None
|
|
||||||
|
|
||||||
def add_arguments(self, parser):
|
|
||||||
try:
|
|
||||||
parser.add_argument(f"--{self.__from_key}", type=str, nargs="+")
|
|
||||||
parser.add_argument(f"--{self.__to_key}", type=str, nargs="+")
|
|
||||||
parser.add_argument(f"--{self.__for_key}", type=str, nargs="*")
|
|
||||||
except ValueError as e:
|
|
||||||
self._write_error(f"Argument error: {e}")
|
|
||||||
exit(-1)
|
|
||||||
|
|
||||||
def handle(self, *args, **options):
|
|
||||||
self.__check_arguments(options)
|
|
||||||
in_memory_zipped_reports = self.generate_reports_in_memory_zipped()
|
|
||||||
self.send_mail_to_admins(in_memory_zipped_reports)
|
|
||||||
|
|
||||||
def generate_reports_in_memory_zipped(self):
|
|
||||||
"""
|
|
||||||
Generates in-memory reports and zips into in-memory zip file.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
"""
|
|
||||||
memory_zip = BytesIO()
|
|
||||||
with zipfile.ZipFile(memory_zip, "w", compression=zipfile.ZIP_DEFLATED) as zf:
|
|
||||||
for office in self.offices:
|
|
||||||
self._write_warning(f" Process report for {office.long_name}...")
|
|
||||||
report = TimespanReport(office.id, self.from_date, self.to_date)
|
|
||||||
excel_file = TempExcelFile(report.excel_template_path, report.excel_map)
|
|
||||||
zf.writestr(zinfo_or_arcname=f"{office.long_name}_{self.from_date.date()}_{self.to_date.date()}.xlsx", data=excel_file.stream)
|
|
||||||
self._write_success(f"Reports generated for {self.offices.count()} offices and zipped.")
|
|
||||||
return memory_zip.getvalue()
|
|
||||||
|
|
||||||
def __check_arguments(self, options):
|
|
||||||
"""
|
|
||||||
Checks given parameters for validity
|
|
||||||
|
|
||||||
Args:
|
|
||||||
options ():
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
"""
|
|
||||||
_from_value = options.get(self.__from_key, [None])[0]
|
|
||||||
_to_value = options.get(self.__to_key, [None])[0]
|
|
||||||
_for_value = options.get(self.__for_key, [])
|
|
||||||
|
|
||||||
# Check ISO dates
|
|
||||||
try:
|
|
||||||
_from_date = timezone.make_aware(datetime.fromisoformat(_from_value))
|
|
||||||
_to_date = timezone.make_aware(datetime.fromisoformat(_to_value))
|
|
||||||
except Exception as e:
|
|
||||||
self._write_warning(f"One of the dates is not in ISO format (YYYY-MM-DD). {e}")
|
|
||||||
exit(-1)
|
|
||||||
|
|
||||||
# Check conservation office IDs
|
|
||||||
_filter = {
|
|
||||||
"is_archived": False,
|
|
||||||
"is_leaf": True,
|
|
||||||
"code_lists__in": [CODELIST_CONSERVATION_OFFICE_ID],
|
|
||||||
}
|
|
||||||
offices = KonovaCode.objects.filter(**_filter)
|
|
||||||
if _for_value is not None and len(_for_value) != 0:
|
|
||||||
# Specifc offices requested
|
|
||||||
offices = offices.filter(short_name__in=_for_value)
|
|
||||||
all_requested_offices_exist = offices.count() == len(_for_value)
|
|
||||||
if not all_requested_offices_exist:
|
|
||||||
offices_short_name = set(offices.values_list("short_name", flat=True))
|
|
||||||
missing_ids = []
|
|
||||||
for val in _for_value:
|
|
||||||
if val not in offices_short_name:
|
|
||||||
missing_ids.append(val)
|
|
||||||
self._write_warning(
|
|
||||||
f"Unknown offices: {missing_ids}"
|
|
||||||
)
|
|
||||||
exit(-1)
|
|
||||||
|
|
||||||
self.offices = offices
|
|
||||||
self.from_date = _from_date
|
|
||||||
self.to_date = _to_date
|
|
||||||
|
|
||||||
def send_mail_to_admins(self, attachment):
|
|
||||||
office_names = [office.long_name for office in self.offices]
|
|
||||||
admin_mails = [admin[1] for admin in ADMINS]
|
|
||||||
|
|
||||||
date_from_date = self.from_date.date()
|
|
||||||
date_to_date = self.to_date.date()
|
|
||||||
|
|
||||||
mail = EmailMessage(
|
|
||||||
subject="Konova reports generated",
|
|
||||||
body=f"Zipped reports attached from {date_from_date} to {date_to_date} for {office_names}.",
|
|
||||||
from_email=DEFAULT_FROM_EMAIL,
|
|
||||||
to=admin_mails,
|
|
||||||
attachments=[
|
|
||||||
(
|
|
||||||
f"reports_{date_from_date}_{date_to_date}.zip",
|
|
||||||
attachment,
|
|
||||||
"application/zip"
|
|
||||||
)
|
|
||||||
]
|
|
||||||
)
|
|
||||||
success = mail.send()
|
|
||||||
if success == 1:
|
|
||||||
self._write_success(f"Mails with zip as attachment sent to {admin_mails}.")
|
|
||||||
else:
|
|
||||||
self._write_error(f"Something went wrong during mail sending. Returned sending code was '{success}'")
|
|
@ -39,9 +39,6 @@ class Command(BaseKonovaCommand):
|
|||||||
for obj in all_objs:
|
for obj in all_objs:
|
||||||
obj.resubmit()
|
obj.resubmit()
|
||||||
self._write_success("Mails have been sent.")
|
self._write_success("Mails have been sent.")
|
||||||
resubmissions = Resubmission.objects.filter(
|
|
||||||
resubmission_sent=True,
|
|
||||||
)
|
|
||||||
resubmissions.delete()
|
resubmissions.delete()
|
||||||
self._write_success("Resubmissions have been deleted.")
|
self._write_success("Resubmissions have been deleted.")
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
|
@ -16,72 +16,7 @@ class CompensationMigrater(BaseMigrater):
|
|||||||
def migrate(self):
|
def migrate(self):
|
||||||
self.connect_db()
|
self.connect_db()
|
||||||
cursor = self.db_connection.cursor()
|
cursor = self.db_connection.cursor()
|
||||||
#el = "'KOM-1011-075001000051090029__'" # Test purposes
|
#el = "'KOM-1568808121948'" # Test purposes
|
||||||
els = [
|
|
||||||
"\'KOM-31-3b-075003000006300002__\'",
|
|
||||||
"\'KOM-38/12-075001000032000008__\'",
|
|
||||||
"\'KOM-38/16-075001000032570001__\'",
|
|
||||||
"\'KOM-38/18-07500100003196______\'",
|
|
||||||
"\'KOM-38/17-07500100003202______\'",
|
|
||||||
"\'KOM-38/14-075001000031670010__\'",
|
|
||||||
"\'KOM-38/11-075001000031520001__\'",
|
|
||||||
"\'KOM-38/10-075001000031390004__\'",
|
|
||||||
"\'KOM-38/13-075001000031560004__\'",
|
|
||||||
"\'KOM-38/15-075001000032320001__\'",
|
|
||||||
"\'KOM-31-3b-07500300000630______\'",
|
|
||||||
"\'KOM-31-3b-075003000006300003__\'",
|
|
||||||
"\'KOM-31-3b-075003000006160005__\'",
|
|
||||||
"\'KOM-31-3b-07500300000629______\'",
|
|
||||||
"\'KOM-24-1b-07500900000909______\'",
|
|
||||||
"\'KOM-24-1b-075009000009090002__\'",
|
|
||||||
"\'KOM-24-1c-07500900000890______\'",
|
|
||||||
"\'KOM-24-1e-075009000009070001__\'",
|
|
||||||
"\'KOM-24-9-075009000009190002__\'",
|
|
||||||
"\'KOM-31-3b-075003000006160002__\'",
|
|
||||||
"\'KOM-24-1b-075009000009380007__\'",
|
|
||||||
"\'KOM-24-1c-07500900000904______\'",
|
|
||||||
"\'KOM-24-1c-07500900000903______\'",
|
|
||||||
"\'KOM-36-2-075001000044750002__\'",
|
|
||||||
"\'KOM-31-3b-075003000006160004__\'",
|
|
||||||
"\'KOM-31-3b-07500300000616______\'",
|
|
||||||
"\'KOM-31-2-075003000006830001__\'",
|
|
||||||
"\'KOM-24-1c-075009000009380020__\'",
|
|
||||||
"\'KOM-24-1c-07500900000906______\'",
|
|
||||||
"\'KOM-24-1c-07500900000894______\'",
|
|
||||||
"\'KOM-36-1-075001000044750009__\'",
|
|
||||||
"\'KOM-24-1c-07500900000891______\'",
|
|
||||||
"\'KOM-22-2-075009000009650001__b\'",
|
|
||||||
"\'KOM-100-075001000031810001__\'",
|
|
||||||
"\'KOM-24-9-075009000009380027__\'",
|
|
||||||
"\'KOM-24-9-07500900000919______\'",
|
|
||||||
"\'KOM-24-9-075009000009170002__\'",
|
|
||||||
"\'KOM-31-3b-075003000006160003__\'",
|
|
||||||
"\'KOM-1011-075001000051090029__\'",
|
|
||||||
"\'KOM-1010-075001000036370001__\'",
|
|
||||||
"\'KOM-50/3-075001000037300001__\'",
|
|
||||||
"\'KOM-50/2-075001000037300001__\'",
|
|
||||||
"\'KOM-50/1-07500100003725______\'",
|
|
||||||
"\'KOM-A4-075004000012160279__\'",
|
|
||||||
"\'KOM-52-07500100003724______\'",
|
|
||||||
"\'KOM-1012-075001000036420012__\'",
|
|
||||||
"\'KOM-KaEINS2_AN1-075001000036710042__\'",
|
|
||||||
"\'KOM-KaEINS2_AN3-075001000036710042__\'",
|
|
||||||
"\'KOM-KaEINS2_E8-075009000009460002__\'",
|
|
||||||
"\'KOM-KaEINS2_E2_E3-075004000009450004__\'",
|
|
||||||
"\'KOM-KaEINS2_E4-075001000039540001__a\'",
|
|
||||||
"\'KOM-KaEINS2_E1-075001000037520001__\'",
|
|
||||||
"\'KOM-KaEINS2_E5-075001000036910003__\'",
|
|
||||||
"\'KOM-KaEINS2_E9-075001000039540001__\'",
|
|
||||||
"\'KOM-KaEINS2_E6-075009000009480001__\'",
|
|
||||||
"\'KOM-KAEINS2_AN6_V6-075001000036710042__\'",
|
|
||||||
"\'KOM-KaEINS2_AN2-075001000036710042__\'",
|
|
||||||
"\'KOM-KaEins2_AN4_A1_KM1-075001000036710042__\'",
|
|
||||||
"\'KOM-KaEINS2_AN5_A4-075001000036710042__\'",
|
|
||||||
"\'KOM-KaEINS2_E7-075009000009650001__\'",
|
|
||||||
"\'KOM-KaEINS2_E3-075004000009280006_\'",
|
|
||||||
]
|
|
||||||
els = ",".join(els)
|
|
||||||
els = f"({els})"
|
|
||||||
empty_str = "''"
|
empty_str = "''"
|
||||||
cursor.execute(
|
cursor.execute(
|
||||||
'select '
|
'select '
|
||||||
@ -102,8 +37,7 @@ class CompensationMigrater(BaseMigrater):
|
|||||||
'om."OKL"=7730080 and '
|
'om."OKL"=7730080 and '
|
||||||
'om.archiv=false and '
|
'om.archiv=false and '
|
||||||
f'(auf."Infos" is null or auf."Infos"={empty_str}) and '
|
f'(auf."Infos" is null or auf."Infos"={empty_str}) and '
|
||||||
'om.nicht_vollstaendig=0 and '
|
'om.nicht_vollstaendig=0 '
|
||||||
f'om."KENNUNG" in {els}'
|
|
||||||
)
|
)
|
||||||
|
|
||||||
all_koms = cursor.fetchall()
|
all_koms = cursor.fetchall()
|
||||||
@ -124,30 +58,30 @@ class CompensationMigrater(BaseMigrater):
|
|||||||
identifier=kom_identifier
|
identifier=kom_identifier
|
||||||
)[0]
|
)[0]
|
||||||
|
|
||||||
compensation.title = kom_title
|
#compensation.title = kom_title
|
||||||
compensation.comment = kom_comment
|
#compensation.comment = kom_comment
|
||||||
### FOR INITIAL RECONSTRUCTION OF EIV-KOM RELATIONSHIP
|
### FOR INITIAL RECONSTRUCTION OF EIV-KOM RELATIONSHIP
|
||||||
try:
|
#try:
|
||||||
compensation = self._migrate_interventions_reference(compensation, kom)
|
# compensation = self._migrate_interventions_reference(compensation, kom)
|
||||||
except ObjectDoesNotExist:
|
#except ObjectDoesNotExist:
|
||||||
compensation.delete()
|
# compensation.delete()
|
||||||
unsuccessfull_compensations[kom_identifier] = "EIV does not exist"
|
# unsuccessfull_compensations[kom_identifier] = "EIV does not exist"
|
||||||
continue
|
# continue
|
||||||
|
|
||||||
compensation = self._migrate_par_7_data(compensation, kom)
|
#compensation = self._migrate_par_7_data(compensation, kom)
|
||||||
compensation = self._migrate_responsibility(compensation, kom)
|
#compensation = self._migrate_responsibility(compensation, kom)
|
||||||
compensation = self._migrate_compensation_type(compensation, kom)
|
#compensation = self._migrate_compensation_type(compensation, kom)
|
||||||
compensation = self._migrate_states(compensation, kom)
|
#compensation = self._migrate_states(compensation, kom)
|
||||||
compensation = self._migrate_deadlines(compensation, kom)
|
#compensation = self._migrate_deadlines(compensation, kom)
|
||||||
compensation = self._migrate_action_control_deadlines(compensation, kom)
|
#compensation = self._migrate_action_control_deadlines(compensation, kom)
|
||||||
compensation = self._migrate_actions(compensation, kom)
|
#compensation = self._migrate_actions(compensation, kom)
|
||||||
compensation = self._migrate_log(compensation, kom)
|
#compensation = self._migrate_log(compensation, kom)
|
||||||
compensation = self._migrate_documents(compensation, CompensationDocument, kom)
|
compensation = self._migrate_documents(compensation, CompensationDocument, kom)
|
||||||
compensation.save()
|
compensation.save()
|
||||||
num_processed += 1
|
num_processed += 1
|
||||||
|
|
||||||
compensation = self._migrate_geometry(compensation, kom)
|
#compensation = self._migrate_geometry(compensation, kom)
|
||||||
compensation.save()
|
#compensation.save()
|
||||||
#print("The following KOMs could not be migrated: ")
|
#print("The following KOMs could not be migrated: ")
|
||||||
#for kom, val in unsuccessfull_compensations.items():
|
#for kom, val in unsuccessfull_compensations.items():
|
||||||
# print(kom)
|
# print(kom)
|
||||||
@ -173,7 +107,7 @@ class CompensationMigrater(BaseMigrater):
|
|||||||
eiv = eivs[0]
|
eiv = eivs[0]
|
||||||
try:
|
try:
|
||||||
intervention = Intervention.objects.get(
|
intervention = Intervention.objects.get(
|
||||||
identifier__iexact=eiv[0]
|
identifier=eiv[0]
|
||||||
)
|
)
|
||||||
except ObjectDoesNotExist:
|
except ObjectDoesNotExist:
|
||||||
raise ObjectDoesNotExist(f"{kom_identifier} could not find migrated {eiv}")
|
raise ObjectDoesNotExist(f"{kom_identifier} could not find migrated {eiv}")
|
||||||
|
@ -19,10 +19,10 @@ class Command(BaseKonovaCommand):
|
|||||||
def handle(self, *args, **options):
|
def handle(self, *args, **options):
|
||||||
try:
|
try:
|
||||||
migraters = [
|
migraters = [
|
||||||
#InterventionMigrater(options),
|
InterventionMigrater(options),
|
||||||
CompensationMigrater(options),
|
CompensationMigrater(options),
|
||||||
#EmaMigrater(options),
|
EmaMigrater(options),
|
||||||
#EcoAccountMigrater(options),
|
EcoAccountMigrater(options),
|
||||||
#InterventionRecordedMigrater(options),
|
#InterventionRecordedMigrater(options),
|
||||||
#UserMigrater(options),
|
#UserMigrater(options),
|
||||||
]
|
]
|
||||||
|
@ -87,7 +87,7 @@ class AbstractDocument(BaseResource):
|
|||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
os.remove(self.file.file.name)
|
os.remove(self.file.file.name)
|
||||||
except (FileNotFoundError, ValueError):
|
except FileNotFoundError:
|
||||||
# File seems to missing anyway - continue!
|
# File seems to missing anyway - continue!
|
||||||
pass
|
pass
|
||||||
super().delete(using=using, keep_parents=keep_parents)
|
super().delete(using=using, keep_parents=keep_parents)
|
||||||
@ -113,7 +113,7 @@ class AbstractDocument(BaseResource):
|
|||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
os.remove(self.file.file.name)
|
os.remove(self.file.file.name)
|
||||||
except (FileNotFoundError, ValueError):
|
except FileNotFoundError:
|
||||||
pass
|
pass
|
||||||
self.file = new_file
|
self.file = new_file
|
||||||
self.save()
|
self.save()
|
@ -60,10 +60,6 @@ a {
|
|||||||
color: var(--rlp-red);
|
color: var(--rlp-red);
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-label {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control:focus{
|
.form-control:focus{
|
||||||
outline: none;
|
outline: none;
|
||||||
border-color: var(--rlp-red);
|
border-color: var(--rlp-red);
|
||||||
|
@ -429,7 +429,7 @@ class Mailer:
|
|||||||
"EMAIL_REPLY_TO": EMAIL_REPLY_TO,
|
"EMAIL_REPLY_TO": EMAIL_REPLY_TO,
|
||||||
}
|
}
|
||||||
msg = render_to_string("email/resubmission/resubmission.html", context)
|
msg = render_to_string("email/resubmission/resubmission.html", context)
|
||||||
user_mail_address = [resubmission.user.email]
|
user_mail_address = [SUPPORT_MAIL_RECIPIENT]
|
||||||
self.send(
|
self.send(
|
||||||
user_mail_address,
|
user_mail_address,
|
||||||
_("Resubmission - {}").format(obj_identifier),
|
_("Resubmission - {}").format(obj_identifier),
|
||||||
|
@ -5,13 +5,11 @@ Contact: ksp-servicestelle@sgdnord.rlp.de
|
|||||||
Created on: 19.08.22
|
Created on: 19.08.22
|
||||||
|
|
||||||
"""
|
"""
|
||||||
from django.contrib.gis.geos import MultiPolygon
|
|
||||||
from django.http import HttpResponse, HttpRequest
|
from django.http import HttpResponse, HttpRequest
|
||||||
from django.shortcuts import get_object_or_404
|
from django.shortcuts import get_object_or_404
|
||||||
from django.template.loader import render_to_string
|
from django.template.loader import render_to_string
|
||||||
|
|
||||||
from konova.models import Geometry, Municipal
|
from konova.models import Geometry, Municipal
|
||||||
from konova.sub_settings.lanis_settings import DEFAULT_SRID_RLP
|
|
||||||
|
|
||||||
|
|
||||||
def get_geom_parcels(request: HttpRequest, id: str):
|
def get_geom_parcels(request: HttpRequest, id: str):
|
||||||
@ -32,7 +30,7 @@ def get_geom_parcels(request: HttpRequest, id: str):
|
|||||||
template = "konova/includes/parcels/parcel_table_frame.html"
|
template = "konova/includes/parcels/parcel_table_frame.html"
|
||||||
geom = get_object_or_404(Geometry, id=id)
|
geom = get_object_or_404(Geometry, id=id)
|
||||||
parcels = geom.get_underlying_parcels()
|
parcels = geom.get_underlying_parcels()
|
||||||
geos_geom = geom.geom or MultiPolygon(srid=DEFAULT_SRID_RLP)
|
geos_geom = geom.geom
|
||||||
|
|
||||||
geometry_exists = not geos_geom.empty
|
geometry_exists = not geos_geom.empty
|
||||||
parcels_are_currently_calculated = geometry_exists and geos_geom.area > 0 and len(parcels) == 0
|
parcels_are_currently_calculated = geometry_exists and geos_geom.area > 0 and len(parcels) == 0
|
||||||
|
Binary file not shown.
@ -28,8 +28,8 @@
|
|||||||
#: konova/filters/mixins/geo_reference.py:79 konova/filters/mixins/office.py:24
|
#: konova/filters/mixins/geo_reference.py:79 konova/filters/mixins/office.py:24
|
||||||
#: konova/filters/mixins/office.py:25 konova/filters/mixins/office.py:56
|
#: konova/filters/mixins/office.py:25 konova/filters/mixins/office.py:56
|
||||||
#: konova/filters/mixins/office.py:57 konova/filters/mixins/record.py:23
|
#: konova/filters/mixins/office.py:57 konova/filters/mixins/record.py:23
|
||||||
#: konova/filters/mixins/self_created.py:24 konova/filters/mixins/share.py:23
|
#: konova/filters/mixins/share.py:23 konova/forms/geometry_form.py:30
|
||||||
#: konova/forms/geometry_form.py:31 konova/forms/modals/document_form.py:25
|
#: konova/forms/modals/document_form.py:25
|
||||||
#: konova/forms/modals/document_form.py:35
|
#: konova/forms/modals/document_form.py:35
|
||||||
#: konova/forms/modals/document_form.py:48
|
#: konova/forms/modals/document_form.py:48
|
||||||
#: konova/forms/modals/document_form.py:60
|
#: konova/forms/modals/document_form.py:60
|
||||||
@ -43,7 +43,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2022-12-06 08:23+0100\n"
|
"POT-Creation-Date: 2022-11-16 13:36+0100\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@ -77,7 +77,7 @@ msgstr "Einträge erstellt bis..."
|
|||||||
#: intervention/forms/intervention.py:103
|
#: intervention/forms/intervention.py:103
|
||||||
#: intervention/templates/intervention/detail/view.html:56
|
#: intervention/templates/intervention/detail/view.html:56
|
||||||
#: intervention/templates/intervention/report/report.html:37
|
#: intervention/templates/intervention/report/report.html:37
|
||||||
#: intervention/utils/quality.py:62 konova/filters/mixins/office.py:34
|
#: intervention/utils/quality.py:49 konova/filters/mixins/office.py:34
|
||||||
msgid "Conservation office"
|
msgid "Conservation office"
|
||||||
msgstr "Eintragungsstelle"
|
msgstr "Eintragungsstelle"
|
||||||
|
|
||||||
@ -365,8 +365,8 @@ msgstr "Kennung"
|
|||||||
|
|
||||||
#: compensation/forms/compensation.py:33 intervention/forms/intervention.py:32
|
#: compensation/forms/compensation.py:33 intervention/forms/intervention.py:32
|
||||||
#: user/forms/user.py:77
|
#: user/forms/user.py:77
|
||||||
msgid "Generated automatically - not editable"
|
msgid "Generated automatically"
|
||||||
msgstr "Automatisch generiert - nicht bearbeitbar"
|
msgstr "Automatisch generiert"
|
||||||
|
|
||||||
#: compensation/forms/compensation.py:42 compensation/tables/compensation.py:28
|
#: compensation/forms/compensation.py:42 compensation/tables/compensation.py:28
|
||||||
#: compensation/tables/eco_account.py:28
|
#: compensation/tables/eco_account.py:28
|
||||||
@ -392,7 +392,7 @@ msgstr "Bezeichnung"
|
|||||||
msgid "An explanatory name"
|
msgid "An explanatory name"
|
||||||
msgstr "Aussagekräftiger Titel"
|
msgstr "Aussagekräftiger Titel"
|
||||||
|
|
||||||
#: compensation/forms/compensation.py:48 ema/forms.py:51 ema/forms.py:114
|
#: compensation/forms/compensation.py:48 ema/forms.py:51 ema/forms.py:111
|
||||||
msgid "Compensation XY; Location ABC"
|
msgid "Compensation XY; Location ABC"
|
||||||
msgstr "Kompensation XY; Flur ABC"
|
msgstr "Kompensation XY; Flur ABC"
|
||||||
|
|
||||||
@ -438,11 +438,11 @@ msgid "Select the intervention for which this compensation compensates"
|
|||||||
msgstr "Wählen Sie den Eingriff, für den diese Kompensation bestimmt ist"
|
msgstr "Wählen Sie den Eingriff, für den diese Kompensation bestimmt ist"
|
||||||
|
|
||||||
#: compensation/forms/compensation.py:113
|
#: compensation/forms/compensation.py:113
|
||||||
#: compensation/views/compensation/compensation.py:115
|
#: compensation/views/compensation/compensation.py:113
|
||||||
msgid "New compensation"
|
msgid "New compensation"
|
||||||
msgstr "Neue Kompensation"
|
msgstr "Neue Kompensation"
|
||||||
|
|
||||||
#: compensation/forms/compensation.py:189
|
#: compensation/forms/compensation.py:186
|
||||||
msgid "Edit compensation"
|
msgid "Edit compensation"
|
||||||
msgstr "Bearbeite Kompensation"
|
msgstr "Bearbeite Kompensation"
|
||||||
|
|
||||||
@ -465,7 +465,7 @@ msgid "When did the parties agree on this?"
|
|||||||
msgstr "Wann wurde dieses Ökokonto offiziell vereinbart?"
|
msgstr "Wann wurde dieses Ökokonto offiziell vereinbart?"
|
||||||
|
|
||||||
#: compensation/forms/eco_account.py:70
|
#: compensation/forms/eco_account.py:70
|
||||||
#: compensation/views/eco_account/eco_account.py:96
|
#: compensation/views/eco_account/eco_account.py:94
|
||||||
msgid "New Eco-Account"
|
msgid "New Eco-Account"
|
||||||
msgstr "Neues Ökokonto"
|
msgstr "Neues Ökokonto"
|
||||||
|
|
||||||
@ -473,11 +473,11 @@ msgstr "Neues Ökokonto"
|
|||||||
msgid "Eco-Account XY; Location ABC"
|
msgid "Eco-Account XY; Location ABC"
|
||||||
msgstr "Ökokonto XY; Flur ABC"
|
msgstr "Ökokonto XY; Flur ABC"
|
||||||
|
|
||||||
#: compensation/forms/eco_account.py:145
|
#: compensation/forms/eco_account.py:143
|
||||||
msgid "Edit Eco-Account"
|
msgid "Edit Eco-Account"
|
||||||
msgstr "Ökokonto bearbeiten"
|
msgstr "Ökokonto bearbeiten"
|
||||||
|
|
||||||
#: compensation/forms/eco_account.py:230
|
#: compensation/forms/eco_account.py:228
|
||||||
msgid "The account can not be removed, since there are still deductions."
|
msgid "The account can not be removed, since there are still deductions."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Das Ökokonto kann nicht entfernt werden, da hierzu noch Abbuchungen "
|
"Das Ökokonto kann nicht entfernt werden, da hierzu noch Abbuchungen "
|
||||||
@ -491,7 +491,7 @@ msgstr ""
|
|||||||
#: intervention/forms/intervention.py:131
|
#: intervention/forms/intervention.py:131
|
||||||
#: intervention/templates/intervention/detail/view.html:60
|
#: intervention/templates/intervention/detail/view.html:60
|
||||||
#: intervention/templates/intervention/report/report.html:41
|
#: intervention/templates/intervention/report/report.html:41
|
||||||
#: intervention/utils/quality.py:55
|
#: intervention/utils/quality.py:42
|
||||||
msgid "Conservation office file number"
|
msgid "Conservation office file number"
|
||||||
msgstr "Aktenzeichen Eintragungsstelle"
|
msgstr "Aktenzeichen Eintragungsstelle"
|
||||||
|
|
||||||
@ -725,22 +725,18 @@ msgid "m"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: compensation/models/action.py:22
|
#: compensation/models/action.py:22
|
||||||
msgid "m²"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: compensation/models/action.py:23
|
|
||||||
msgid "m³"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: compensation/models/action.py:24
|
|
||||||
msgid "km"
|
msgid "km"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: compensation/models/action.py:25
|
#: compensation/models/action.py:23
|
||||||
|
msgid "m²"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: compensation/models/action.py:24
|
||||||
msgid "ha"
|
msgid "ha"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: compensation/models/action.py:26
|
#: compensation/models/action.py:25
|
||||||
msgid "Pieces"
|
msgid "Pieces"
|
||||||
msgstr "Stück"
|
msgstr "Stück"
|
||||||
|
|
||||||
@ -975,7 +971,6 @@ msgstr "Frist löschen"
|
|||||||
#: compensation/templates/compensation/detail/eco_account/includes/documents.html:8
|
#: compensation/templates/compensation/detail/eco_account/includes/documents.html:8
|
||||||
#: ema/templates/ema/detail/includes/documents.html:8
|
#: ema/templates/ema/detail/includes/documents.html:8
|
||||||
#: intervention/templates/intervention/detail/includes/documents.html:8
|
#: intervention/templates/intervention/detail/includes/documents.html:8
|
||||||
#: intervention/utils/quality.py:37
|
|
||||||
msgid "Documents"
|
msgid "Documents"
|
||||||
msgstr "Dokumente"
|
msgstr "Dokumente"
|
||||||
|
|
||||||
@ -1140,7 +1135,7 @@ msgstr "Verzeichnet am"
|
|||||||
#: ema/templates/ema/detail/view.html:71
|
#: ema/templates/ema/detail/view.html:71
|
||||||
#: ema/templates/ema/report/report.html:34
|
#: ema/templates/ema/report/report.html:34
|
||||||
#: intervention/templates/intervention/detail/view.html:113
|
#: intervention/templates/intervention/detail/view.html:113
|
||||||
#: intervention/templates/intervention/report/report.html:89
|
#: intervention/templates/intervention/report/report.html:87
|
||||||
msgid "Last modified"
|
msgid "Last modified"
|
||||||
msgstr "Zuletzt bearbeitet"
|
msgstr "Zuletzt bearbeitet"
|
||||||
|
|
||||||
@ -1245,8 +1240,7 @@ msgstr "Abbuchungen für"
|
|||||||
|
|
||||||
#: compensation/templates/compensation/report/eco_account/report.html:42
|
#: compensation/templates/compensation/report/eco_account/report.html:42
|
||||||
#: intervention/templates/intervention/report/report.html:53
|
#: intervention/templates/intervention/report/report.html:53
|
||||||
#: intervention/templates/intervention/report/report.html:66
|
#: intervention/templates/intervention/report/report.html:74
|
||||||
#: intervention/templates/intervention/report/report.html:76
|
|
||||||
msgid "None"
|
msgid "None"
|
||||||
msgstr "-"
|
msgstr "-"
|
||||||
|
|
||||||
@ -1258,7 +1252,7 @@ msgstr "Ungleiche Zustandsflächenmengen"
|
|||||||
msgid "Finished deadlines"
|
msgid "Finished deadlines"
|
||||||
msgstr "Umsetzungstermin"
|
msgstr "Umsetzungstermin"
|
||||||
|
|
||||||
#: compensation/utils/quality.py:85 intervention/utils/quality.py:97
|
#: compensation/utils/quality.py:85 intervention/utils/quality.py:84
|
||||||
msgid "Legal data"
|
msgid "Legal data"
|
||||||
msgstr "Rechtliche Daten"
|
msgstr "Rechtliche Daten"
|
||||||
|
|
||||||
@ -1269,22 +1263,22 @@ msgstr ""
|
|||||||
"überschreiten"
|
"überschreiten"
|
||||||
|
|
||||||
#: compensation/utils/quality.py:115 ema/utils/quality.py:30
|
#: compensation/utils/quality.py:115 ema/utils/quality.py:30
|
||||||
#: intervention/utils/quality.py:68
|
#: intervention/utils/quality.py:55
|
||||||
msgid "Responsible data"
|
msgid "Responsible data"
|
||||||
msgstr "Daten zu den verantwortlichen Stellen"
|
msgstr "Daten zu den verantwortlichen Stellen"
|
||||||
|
|
||||||
#: compensation/views/compensation/compensation.py:58
|
#: compensation/views/compensation/compensation.py:56
|
||||||
msgid "Compensations - Overview"
|
msgid "Compensations - Overview"
|
||||||
msgstr "Kompensationen - Übersicht"
|
msgstr "Kompensationen - Übersicht"
|
||||||
|
|
||||||
#: compensation/views/compensation/compensation.py:177
|
#: compensation/views/compensation/compensation.py:175
|
||||||
#: konova/utils/message_templates.py:37
|
#: konova/utils/message_templates.py:37
|
||||||
msgid "Compensation {} edited"
|
msgid "Compensation {} edited"
|
||||||
msgstr "Kompensation {} bearbeitet"
|
msgstr "Kompensation {} bearbeitet"
|
||||||
|
|
||||||
#: compensation/views/compensation/compensation.py:187
|
#: compensation/views/compensation/compensation.py:185
|
||||||
#: compensation/views/eco_account/eco_account.py:161 ema/views/ema.py:212
|
#: compensation/views/eco_account/eco_account.py:159 ema/views/ema.py:210
|
||||||
#: intervention/views/intervention.py:230
|
#: intervention/views/intervention.py:228
|
||||||
msgid "Edit {}"
|
msgid "Edit {}"
|
||||||
msgstr "Bearbeite {}"
|
msgstr "Bearbeite {}"
|
||||||
|
|
||||||
@ -1294,27 +1288,27 @@ msgstr "Bearbeite {}"
|
|||||||
msgid "Report {}"
|
msgid "Report {}"
|
||||||
msgstr "Bericht {}"
|
msgstr "Bericht {}"
|
||||||
|
|
||||||
#: compensation/views/eco_account/eco_account.py:53
|
#: compensation/views/eco_account/eco_account.py:51
|
||||||
msgid "Eco-account - Overview"
|
msgid "Eco-account - Overview"
|
||||||
msgstr "Ökokonten - Übersicht"
|
msgstr "Ökokonten - Übersicht"
|
||||||
|
|
||||||
#: compensation/views/eco_account/eco_account.py:86
|
#: compensation/views/eco_account/eco_account.py:84
|
||||||
msgid "Eco-Account {} added"
|
msgid "Eco-Account {} added"
|
||||||
msgstr "Ökokonto {} hinzugefügt"
|
msgstr "Ökokonto {} hinzugefügt"
|
||||||
|
|
||||||
#: compensation/views/eco_account/eco_account.py:151
|
#: compensation/views/eco_account/eco_account.py:149
|
||||||
msgid "Eco-Account {} edited"
|
msgid "Eco-Account {} edited"
|
||||||
msgstr "Ökokonto {} bearbeitet"
|
msgstr "Ökokonto {} bearbeitet"
|
||||||
|
|
||||||
#: compensation/views/eco_account/eco_account.py:267
|
#: compensation/views/eco_account/eco_account.py:265
|
||||||
msgid "Eco-account removed"
|
msgid "Eco-account removed"
|
||||||
msgstr "Ökokonto entfernt"
|
msgstr "Ökokonto entfernt"
|
||||||
|
|
||||||
#: ema/forms.py:42 ema/views/ema.py:95
|
#: ema/forms.py:42 ema/views/ema.py:93
|
||||||
msgid "New EMA"
|
msgid "New EMA"
|
||||||
msgstr "Neue EMA hinzufügen"
|
msgstr "Neue EMA hinzufügen"
|
||||||
|
|
||||||
#: ema/forms.py:108
|
#: ema/forms.py:105
|
||||||
msgid "Edit EMA"
|
msgid "Edit EMA"
|
||||||
msgstr "Bearbeite EMA"
|
msgstr "Bearbeite EMA"
|
||||||
|
|
||||||
@ -1338,19 +1332,19 @@ msgstr ""
|
|||||||
msgid "Payment funded compensation"
|
msgid "Payment funded compensation"
|
||||||
msgstr "Ersatzzahlungsmaßnahme"
|
msgstr "Ersatzzahlungsmaßnahme"
|
||||||
|
|
||||||
#: ema/views/ema.py:52
|
#: ema/views/ema.py:50
|
||||||
msgid "EMAs - Overview"
|
msgid "EMAs - Overview"
|
||||||
msgstr "EMAs - Übersicht"
|
msgstr "EMAs - Übersicht"
|
||||||
|
|
||||||
#: ema/views/ema.py:85
|
#: ema/views/ema.py:83
|
||||||
msgid "EMA {} added"
|
msgid "EMA {} added"
|
||||||
msgstr "EMA {} hinzugefügt"
|
msgstr "EMA {} hinzugefügt"
|
||||||
|
|
||||||
#: ema/views/ema.py:202
|
#: ema/views/ema.py:200
|
||||||
msgid "EMA {} edited"
|
msgid "EMA {} edited"
|
||||||
msgstr "EMA {} bearbeitet"
|
msgstr "EMA {} bearbeitet"
|
||||||
|
|
||||||
#: ema/views/ema.py:236
|
#: ema/views/ema.py:234
|
||||||
msgid "EMA removed"
|
msgid "EMA removed"
|
||||||
msgstr "EMA entfernt"
|
msgstr "EMA entfernt"
|
||||||
|
|
||||||
@ -1361,7 +1355,7 @@ msgstr "Bauvorhaben XY; Flur ABC"
|
|||||||
#: intervention/forms/intervention.py:53
|
#: intervention/forms/intervention.py:53
|
||||||
#: intervention/templates/intervention/detail/view.html:35
|
#: intervention/templates/intervention/detail/view.html:35
|
||||||
#: intervention/templates/intervention/report/report.html:16
|
#: intervention/templates/intervention/report/report.html:16
|
||||||
#: intervention/utils/quality.py:95
|
#: intervention/utils/quality.py:82
|
||||||
msgid "Process type"
|
msgid "Process type"
|
||||||
msgstr "Verfahrenstyp"
|
msgstr "Verfahrenstyp"
|
||||||
|
|
||||||
@ -1372,14 +1366,14 @@ msgstr "Mehrfachauswahl möglich"
|
|||||||
#: intervention/forms/intervention.py:87
|
#: intervention/forms/intervention.py:87
|
||||||
#: intervention/templates/intervention/detail/view.html:48
|
#: intervention/templates/intervention/detail/view.html:48
|
||||||
#: intervention/templates/intervention/report/report.html:29
|
#: intervention/templates/intervention/report/report.html:29
|
||||||
#: intervention/utils/quality.py:59 konova/filters/mixins/office.py:66
|
#: intervention/utils/quality.py:46 konova/filters/mixins/office.py:66
|
||||||
msgid "Registration office"
|
msgid "Registration office"
|
||||||
msgstr "Zulassungsbehörde"
|
msgstr "Zulassungsbehörde"
|
||||||
|
|
||||||
#: intervention/forms/intervention.py:119
|
#: intervention/forms/intervention.py:119
|
||||||
#: intervention/templates/intervention/detail/view.html:52
|
#: intervention/templates/intervention/detail/view.html:52
|
||||||
#: intervention/templates/intervention/report/report.html:33
|
#: intervention/templates/intervention/report/report.html:33
|
||||||
#: intervention/utils/quality.py:52
|
#: intervention/utils/quality.py:39
|
||||||
msgid "Registration office file number"
|
msgid "Registration office file number"
|
||||||
msgstr "Aktenzeichen Zulassungsbehörde"
|
msgstr "Aktenzeichen Zulassungsbehörde"
|
||||||
|
|
||||||
@ -1401,23 +1395,22 @@ msgstr "Detailangabe zum Eingriffsverursacher"
|
|||||||
|
|
||||||
#: intervention/forms/intervention.py:174
|
#: intervention/forms/intervention.py:174
|
||||||
#: intervention/templates/intervention/detail/view.html:101
|
#: intervention/templates/intervention/detail/view.html:101
|
||||||
#: intervention/templates/intervention/report/report.html:81
|
#: intervention/templates/intervention/report/report.html:79
|
||||||
#: intervention/utils/quality.py:86
|
#: intervention/utils/quality.py:73
|
||||||
msgid "Registration date"
|
msgid "Registration date"
|
||||||
msgstr "Datum Zulassung bzw. Satzungsbeschluss"
|
msgstr "Datum Zulassung bzw. Satzungsbeschluss"
|
||||||
|
|
||||||
#: intervention/forms/intervention.py:186
|
#: intervention/forms/intervention.py:186
|
||||||
#: intervention/templates/intervention/detail/view.html:105
|
#: intervention/templates/intervention/detail/view.html:105
|
||||||
#: intervention/templates/intervention/report/report.html:85
|
#: intervention/templates/intervention/report/report.html:83
|
||||||
msgid "Binding on"
|
msgid "Binding on"
|
||||||
msgstr "Datum Bestandskraft bzw. Rechtskraft"
|
msgstr "Datum Bestandskraft bzw. Rechtskraft"
|
||||||
|
|
||||||
#: intervention/forms/intervention.py:212
|
#: intervention/forms/intervention.py:212 intervention/views/intervention.py:98
|
||||||
#: intervention/views/intervention.py:100
|
|
||||||
msgid "New intervention"
|
msgid "New intervention"
|
||||||
msgstr "Neuer Eingriff"
|
msgstr "Neuer Eingriff"
|
||||||
|
|
||||||
#: intervention/forms/intervention.py:302
|
#: intervention/forms/intervention.py:299
|
||||||
msgid "Edit intervention"
|
msgid "Edit intervention"
|
||||||
msgstr "Eingriff bearbeiten"
|
msgstr "Eingriff bearbeiten"
|
||||||
|
|
||||||
@ -1566,11 +1559,10 @@ msgid ""
|
|||||||
"You entered a payment. Please upload the legal document which defines the "
|
"You entered a payment. Please upload the legal document which defines the "
|
||||||
"payment`s amount."
|
"payment`s amount."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Sie haben Ersatzzahlungen angegeben. Laden Sie bitte den Zahlungsbescheid "
|
"Sie haben Ersatzzahlungen angegeben. Laden Sie bitte den Zahlungsbescheid als Dokument hoch."
|
||||||
"als Dokument hoch."
|
|
||||||
|
|
||||||
#: intervention/templates/intervention/detail/includes/payments.html:8
|
#: intervention/templates/intervention/detail/includes/payments.html:8
|
||||||
#: intervention/templates/intervention/report/report.html:71
|
#: intervention/templates/intervention/report/report.html:69
|
||||||
msgid "Payments"
|
msgid "Payments"
|
||||||
msgstr "Ersatzzahlungen"
|
msgstr "Ersatzzahlungen"
|
||||||
|
|
||||||
@ -1606,7 +1598,7 @@ msgid "Remove revocation"
|
|||||||
msgstr "Widerspruch entfernen"
|
msgstr "Widerspruch entfernen"
|
||||||
|
|
||||||
#: intervention/templates/intervention/detail/view.html:64
|
#: intervention/templates/intervention/detail/view.html:64
|
||||||
#: intervention/utils/quality.py:65
|
#: intervention/utils/quality.py:52
|
||||||
msgid "Intervention handler"
|
msgid "Intervention handler"
|
||||||
msgstr "Eingriffsverursacher"
|
msgstr "Eingriffsverursacher"
|
||||||
|
|
||||||
@ -1618,24 +1610,24 @@ msgstr "vorhanden"
|
|||||||
msgid "Deductions of eco-accounts"
|
msgid "Deductions of eco-accounts"
|
||||||
msgstr "Abbuchungen von Ökokonten"
|
msgstr "Abbuchungen von Ökokonten"
|
||||||
|
|
||||||
#: intervention/templates/intervention/report/report.html:74
|
#: intervention/templates/intervention/report/report.html:72
|
||||||
msgid "Exist"
|
msgid "Exist"
|
||||||
msgstr "Vorhanden"
|
msgstr "Vorhanden"
|
||||||
|
|
||||||
#: intervention/utils/quality.py:83
|
#: intervention/utils/quality.py:70
|
||||||
#: templates/table/revocation_warning_col.html:5
|
#: templates/table/revocation_warning_col.html:5
|
||||||
msgid "Revocations exists"
|
msgid "Revocations exists"
|
||||||
msgstr "Widersprüche liegen vor"
|
msgstr "Widersprüche liegen vor"
|
||||||
|
|
||||||
#: intervention/utils/quality.py:89
|
#: intervention/utils/quality.py:76
|
||||||
msgid "Binding date"
|
msgid "Binding date"
|
||||||
msgstr "Datum Bestandskraft bzw. Rechtskraft"
|
msgstr "Datum Bestandskraft bzw. Rechtskraft"
|
||||||
|
|
||||||
#: intervention/utils/quality.py:92
|
#: intervention/utils/quality.py:79
|
||||||
msgid "Laws"
|
msgid "Laws"
|
||||||
msgstr "Gesetze"
|
msgstr "Gesetze"
|
||||||
|
|
||||||
#: intervention/utils/quality.py:114
|
#: intervention/utils/quality.py:101
|
||||||
msgid "No compensation of any type found (Compensation, Payment, Deduction)"
|
msgid "No compensation of any type found (Compensation, Payment, Deduction)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Kein Ausgleich jeglicher Art gefunden (Kompensation, Ersatzzahlung, "
|
"Kein Ausgleich jeglicher Art gefunden (Kompensation, Ersatzzahlung, "
|
||||||
@ -1645,19 +1637,19 @@ msgstr ""
|
|||||||
msgid "Check performed"
|
msgid "Check performed"
|
||||||
msgstr "Prüfung durchgeführt"
|
msgstr "Prüfung durchgeführt"
|
||||||
|
|
||||||
#: intervention/views/intervention.py:57
|
#: intervention/views/intervention.py:55
|
||||||
msgid "Interventions - Overview"
|
msgid "Interventions - Overview"
|
||||||
msgstr "Eingriffe - Übersicht"
|
msgstr "Eingriffe - Übersicht"
|
||||||
|
|
||||||
#: intervention/views/intervention.py:90
|
#: intervention/views/intervention.py:88
|
||||||
msgid "Intervention {} added"
|
msgid "Intervention {} added"
|
||||||
msgstr "Eingriff {} hinzugefügt"
|
msgstr "Eingriff {} hinzugefügt"
|
||||||
|
|
||||||
#: intervention/views/intervention.py:218
|
#: intervention/views/intervention.py:216
|
||||||
msgid "Intervention {} edited"
|
msgid "Intervention {} edited"
|
||||||
msgstr "Eingriff {} bearbeitet"
|
msgstr "Eingriff {} bearbeitet"
|
||||||
|
|
||||||
#: intervention/views/intervention.py:255
|
#: intervention/views/intervention.py:253
|
||||||
msgid "{} removed"
|
msgid "{} removed"
|
||||||
msgstr "{} entfernt"
|
msgstr "{} entfernt"
|
||||||
|
|
||||||
@ -1742,26 +1734,10 @@ msgstr "Nach Zulassungsbehörde suchen"
|
|||||||
msgid "Show recorded"
|
msgid "Show recorded"
|
||||||
msgstr "Verzeichnete anzeigen"
|
msgstr "Verzeichnete anzeigen"
|
||||||
|
|
||||||
#: konova/filters/mixins/record.py:27
|
|
||||||
msgid "If activated also shows entries which have been already recorded"
|
|
||||||
msgstr "Wenn aktiviert werden auch Einträge angezeigt, die bereits verzeichnet wurden"
|
|
||||||
|
|
||||||
#: konova/filters/mixins/self_created.py:23
|
|
||||||
msgid "Show only self created"
|
|
||||||
msgstr "Nur selbst erstellte anzeigen"
|
|
||||||
|
|
||||||
#: konova/filters/mixins/self_created.py:28
|
|
||||||
msgid "If activated only shows entries which have been created by you"
|
|
||||||
msgstr "Wenn aktiviert werden nur Einträge angezeigt, die von Ihnen erstellt worden sind"
|
|
||||||
|
|
||||||
#: konova/filters/mixins/share.py:22
|
#: konova/filters/mixins/share.py:22
|
||||||
msgid "Show unshared"
|
msgid "Show unshared"
|
||||||
msgstr "Nicht freigegebene anzeigen"
|
msgstr "Nicht freigegebene anzeigen"
|
||||||
|
|
||||||
#: konova/filters/mixins/share.py:27
|
|
||||||
msgid "If activated also shows entries which are not shared with you"
|
|
||||||
msgstr "Wenn aktiviert werden auch Einträge angezeigt, die nicht für Sie freigegeben sind"
|
|
||||||
|
|
||||||
#: konova/forms/base_form.py:23 templates/form/collapsable/form.html:62
|
#: konova/forms/base_form.py:23 templates/form/collapsable/form.html:62
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr "Speichern"
|
msgstr "Speichern"
|
||||||
@ -1770,12 +1746,12 @@ msgstr "Speichern"
|
|||||||
msgid "Not editable"
|
msgid "Not editable"
|
||||||
msgstr "Nicht editierbar"
|
msgstr "Nicht editierbar"
|
||||||
|
|
||||||
#: konova/forms/geometry_form.py:30 konova/utils/quality.py:44
|
#: konova/forms/geometry_form.py:29 konova/utils/quality.py:44
|
||||||
#: konova/utils/quality.py:46 templates/form/collapsable/form.html:45
|
#: konova/utils/quality.py:46 templates/form/collapsable/form.html:45
|
||||||
msgid "Geometry"
|
msgid "Geometry"
|
||||||
msgstr "Geometrie"
|
msgstr "Geometrie"
|
||||||
|
|
||||||
#: konova/forms/geometry_form.py:99
|
#: konova/forms/geometry_form.py:80
|
||||||
msgid "Only surfaces allowed. Points or lines must be buffered."
|
msgid "Only surfaces allowed. Points or lines must be buffered."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Nur Flächen erlaubt. Punkte oder Linien müssen zu Flächen gepuffert werden."
|
"Nur Flächen erlaubt. Punkte oder Linien müssen zu Flächen gepuffert werden."
|
||||||
@ -1928,10 +1904,6 @@ msgstr "Gemarkungsschlüssel"
|
|||||||
msgid "Spatial reference"
|
msgid "Spatial reference"
|
||||||
msgstr "Raumreferenz"
|
msgstr "Raumreferenz"
|
||||||
|
|
||||||
#: konova/templates/konova/includes/parcels/parcels.html:28
|
|
||||||
msgid "No geometry entry found on database. Please contact an admin!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: konova/templates/konova/includes/quickstart/compensations.html:20
|
#: konova/templates/konova/includes/quickstart/compensations.html:20
|
||||||
#: konova/templates/konova/includes/quickstart/ecoaccounts.html:20
|
#: konova/templates/konova/includes/quickstart/ecoaccounts.html:20
|
||||||
#: konova/templates/konova/includes/quickstart/interventions.html:20
|
#: konova/templates/konova/includes/quickstart/interventions.html:20
|
||||||
@ -2336,9 +2308,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: templates/500.html:10
|
#: templates/500.html:10
|
||||||
msgid "Something happened. Admins have been informed. We are working on it!"
|
msgid "Something happened. Admins have been informed. We are working on it!"
|
||||||
msgstr ""
|
msgstr "Irgendetwas ist passiert. Die Administratoren wurden informiert. Wir arbeiten daran!"
|
||||||
"Irgendetwas ist passiert. Die Administratoren wurden informiert. Wir "
|
|
||||||
"arbeiten daran!"
|
|
||||||
|
|
||||||
#: templates/email/api/verify_token.html:7
|
#: templates/email/api/verify_token.html:7
|
||||||
msgid "Hello support"
|
msgid "Hello support"
|
||||||
|
@ -4,18 +4,12 @@
|
|||||||
<tbody>
|
<tbody>
|
||||||
{% for field in form %}
|
{% for field in form %}
|
||||||
<tr title="{{ field.help_text }}" class="{% if field.errors %}alert-danger{% endif %}">
|
<tr title="{{ field.help_text }}" class="{% if field.errors %}alert-danger{% endif %}">
|
||||||
{{form.small_label_column}}
|
<th scope="row" class="col-sm-3">
|
||||||
<th scope="row" class="col-sm-{{form.label_input_ratio.0}}">
|
<label for="id_{{ field.name }}">{{ field.label }}<span class="label-required">{% if field.field.required %}*{% endif %}</span></label>
|
||||||
<label class="form-label" for="id_{{ field.name }}">
|
<br>
|
||||||
{{ field.label }}
|
<small>{{ field.help_text }}</small>
|
||||||
<span class="label-required">
|
|
||||||
{% if field.field.required %}*{% endif %}
|
|
||||||
</span>
|
|
||||||
<br>
|
|
||||||
<small>{{ field.help_text }}</small>
|
|
||||||
</label>
|
|
||||||
</th>
|
</th>
|
||||||
<td class="col-sm-{{form.label_input_ratio.1}}">
|
<td class="col-sm-9">
|
||||||
{{ field }}
|
{{ field }}
|
||||||
{% for error in field.errors %}
|
{% for error in field.errors %}
|
||||||
<br>
|
<br>
|
||||||
|
@ -4,9 +4,9 @@
|
|||||||
Encapsules the rendering and initializing of a geometry view component, e.g. used in the detail views.
|
Encapsules the rendering and initializing of a geometry view component, e.g. used in the detail views.
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% if geom_form.empty and geom_form.read_only %}
|
{% if geom_form.empty %}
|
||||||
<div class="w-100">
|
<div class="w-100">
|
||||||
<div class="alert alert-danger">
|
<div class="alert alert-info">
|
||||||
{% fa5_icon 'search-location' %}
|
{% fa5_icon 'search-location' %}
|
||||||
{% trans 'No geometry added, yet.' %}
|
{% trans 'No geometry added, yet.' %}
|
||||||
</div>
|
</div>
|
||||||
|
@ -74,7 +74,7 @@ class UserAPITokenForm(BaseForm):
|
|||||||
label_suffix="",
|
label_suffix="",
|
||||||
max_length=255,
|
max_length=255,
|
||||||
required=True,
|
required=True,
|
||||||
help_text=_("Generated automatically - not editable"),
|
help_text=_("Generated automatically"),
|
||||||
widget=GenerateInput(
|
widget=GenerateInput(
|
||||||
attrs={
|
attrs={
|
||||||
"class": "form-control",
|
"class": "form-control",
|
||||||
|
Loading…
Reference in New Issue
Block a user