Compare commits
No commits in common. "492110882b6d5e883decba346cca4eaf7570780e" and "fb36bb6d3eb154f2942fc0000f820bad70a64565" have entirely different histories.
492110882b
...
fb36bb6d3e
@ -22,7 +22,6 @@ class TimespanReportForm(BaseForm):
|
|||||||
date_from = forms.DateField(
|
date_from = forms.DateField(
|
||||||
label_suffix="",
|
label_suffix="",
|
||||||
label=_("From"),
|
label=_("From"),
|
||||||
help_text=_("Entries created from..."),
|
|
||||||
widget=forms.DateInput(
|
widget=forms.DateInput(
|
||||||
attrs={
|
attrs={
|
||||||
"type": "date",
|
"type": "date",
|
||||||
@ -35,7 +34,6 @@ class TimespanReportForm(BaseForm):
|
|||||||
date_to = forms.DateField(
|
date_to = forms.DateField(
|
||||||
label_suffix="",
|
label_suffix="",
|
||||||
label=_("To"),
|
label=_("To"),
|
||||||
help_text=_("Entries created until..."),
|
|
||||||
widget=forms.DateInput(
|
widget=forms.DateInput(
|
||||||
attrs={
|
attrs={
|
||||||
"type": "date",
|
"type": "date",
|
||||||
|
@ -15,40 +15,40 @@
|
|||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="col">{% trans 'Area of responsibility' %}</th>
|
<th scope="col">{% trans 'Area of responsibility' %}</th>
|
||||||
<th scope="col">{% trans 'Total' %}</th>
|
|
||||||
<th scope="col">{% trans 'Number single areas' %}</th>
|
|
||||||
<th scope="col">{% fa5_icon 'star' %} {% trans 'Checked' %}</th>
|
<th scope="col">{% fa5_icon 'star' %} {% trans 'Checked' %}</th>
|
||||||
<th scope="col">{% fa5_icon 'bookmark' %} {% trans 'Recorded' %}</th>
|
<th scope="col">{% fa5_icon 'bookmark' %} {% trans 'Recorded' %}</th>
|
||||||
|
<th scope="col">{% trans 'Number single areas' %}</th>
|
||||||
|
<th scope="col">{% trans 'Total' %}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{% trans 'Conservation office by law' %}</td>
|
<td>{% trans 'Conservation office by law' %}</td>
|
||||||
<td>{{report.compensation_report.queryset_registration_office_unb_count|default_if_zero:"-"}}</td>
|
|
||||||
<td>{{report.compensation_report.num_single_surfaces_total_unb|default_if_zero:"-"}}</td>
|
|
||||||
<td>{{report.compensation_report.queryset_registration_office_unb_checked_count|default_if_zero:"-"}}</td>
|
<td>{{report.compensation_report.queryset_registration_office_unb_checked_count|default_if_zero:"-"}}</td>
|
||||||
<td>{{report.compensation_report.queryset_registration_office_unb_recorded_count|default_if_zero:"-"}}</td>
|
<td>{{report.compensation_report.queryset_registration_office_unb_recorded_count|default_if_zero:"-"}}</td>
|
||||||
|
<td>{{report.compensation_report.num_single_surfaces_total_unb|default_if_zero:"-"}}</td>
|
||||||
|
<td>{{report.compensation_report.queryset_registration_office_unb_count|default_if_zero:"-"}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{% trans 'Land-use planning' %}</td>
|
<td>{% trans 'Land-use planning' %}</td>
|
||||||
<td>{{report.compensation_report.queryset_registration_office_tbp_count|default_if_zero:"-"}}</td>
|
|
||||||
<td>{{report.compensation_report.num_single_surfaces_total_tbp|default_if_zero:"-"}}</td>
|
|
||||||
<td>{{report.compensation_report.queryset_registration_office_tbp_checked_count|default_if_zero:"-"}}</td>
|
<td>{{report.compensation_report.queryset_registration_office_tbp_checked_count|default_if_zero:"-"}}</td>
|
||||||
<td>{{report.compensation_report.queryset_registration_office_tbp_recorded_count|default_if_zero:"-"}}</td>
|
<td>{{report.compensation_report.queryset_registration_office_tbp_recorded_count|default_if_zero:"-"}}</td>
|
||||||
|
<td>{{report.compensation_report.num_single_surfaces_total_tbp|default_if_zero:"-"}}</td>
|
||||||
|
<td>{{report.compensation_report.queryset_registration_office_tbp_count|default_if_zero:"-"}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{% trans 'Other registration office' %}</td>
|
<td>{% trans 'Other registration office' %}</td>
|
||||||
<td>{{report.compensation_report.queryset_registration_office_other_count|default_if_zero:"-"}}</td>
|
|
||||||
<td>{{report.compensation_report.num_single_surfaces_total_other|default_if_zero:"-"}}</td>
|
|
||||||
<td>{{report.compensation_report.queryset_registration_office_other_checked_count|default_if_zero:"-"}}</td>
|
<td>{{report.compensation_report.queryset_registration_office_other_checked_count|default_if_zero:"-"}}</td>
|
||||||
<td>{{report.compensation_report.queryset_registration_office_other_recorded_count|default_if_zero:"-"}}</td>
|
<td>{{report.compensation_report.queryset_registration_office_other_recorded_count|default_if_zero:"-"}}</td>
|
||||||
|
<td>{{report.compensation_report.num_single_surfaces_total_other|default_if_zero:"-"}}</td>
|
||||||
|
<td>{{report.compensation_report.queryset_registration_office_other_count|default_if_zero:"-"}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong>{% trans 'Total' %}</strong></td>
|
<td><strong>{% trans 'Total' %}</strong></td>
|
||||||
<td><strong>{{report.compensation_report.queryset_count|default_if_zero:"-"}}</strong></td>
|
|
||||||
<td><strong>{{report.compensation_report.num_single_surfaces_total|default_if_zero:"-"}}</strong></td>
|
|
||||||
<td><strong>{{report.compensation_report.queryset_checked_count|default_if_zero:"-"}}</strong></td>
|
<td><strong>{{report.compensation_report.queryset_checked_count|default_if_zero:"-"}}</strong></td>
|
||||||
<td><strong>{{report.compensation_report.queryset_recorded_count|default_if_zero:"-"}}</strong></td>
|
<td><strong>{{report.compensation_report.queryset_recorded_count|default_if_zero:"-"}}</strong></td>
|
||||||
|
<td><strong>{{report.compensation_report.num_single_surfaces_total|default_if_zero:"-"}}</strong></td>
|
||||||
|
<td><strong>{{report.compensation_report.queryset_count|default_if_zero:"-"}}</strong></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
@ -10,14 +10,14 @@
|
|||||||
<table class="table table-hover">
|
<table class="table table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="col">{% trans 'Total' %}</th>
|
|
||||||
<th scope="col" class="w-25">{% fa5_icon 'bookmark' %} {% trans 'Recorded' %}</th>
|
<th scope="col" class="w-25">{% fa5_icon 'bookmark' %} {% trans 'Recorded' %}</th>
|
||||||
|
<th scope="col">{% trans 'Total' %}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{report.eco_account_report.queryset_count|default_if_zero:"-"}}</td>
|
|
||||||
<td>{{report.eco_account_report.queryset_recorded_count|default_if_zero:"-"}}</td>
|
<td>{{report.eco_account_report.queryset_recorded_count|default_if_zero:"-"}}</td>
|
||||||
|
<td>{{report.eco_account_report.queryset_count|default_if_zero:"-"}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
@ -1,37 +1,22 @@
|
|||||||
{% load i18n fontawesome_5 ksp_filters %}
|
{% load i18n fontawesome_5 ksp_filters %}
|
||||||
|
|
||||||
<h3>{% trans 'Deductions' %}</h3>
|
<h3>{% trans 'Deductions' %}</h3>
|
||||||
<strong>
|
|
||||||
{% blocktrans %}
|
|
||||||
Recorded = Counts the deductions whose interventions have been recorded
|
|
||||||
{% endblocktrans %}
|
|
||||||
</strong>
|
|
||||||
<div class="table-container">
|
<div class="table-container">
|
||||||
<table class="table table-hover">
|
<table class="table table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="col" class="w-25">{% trans 'Total' %}</th>
|
|
||||||
<th scope="col" class="w-25">{% trans 'Total' %} {% trans 'Surface' %}</th>
|
|
||||||
<th scope="col">{% fa5_icon 'bookmark' %} {% trans 'Recorded' %}</th>
|
<th scope="col">{% fa5_icon 'bookmark' %} {% trans 'Recorded' %}</th>
|
||||||
<th scope="col">{% fa5_icon 'bookmark' %} {% trans 'Recorded' %} {% trans 'Surface' %}</th>
|
<th scope="col">{% fa5_icon 'bookmark' %} {% trans 'Recorded' %} {% trans 'Surface' %}</th>
|
||||||
|
<th scope="col" class="w-25">{% trans 'Total' %}</th>
|
||||||
|
<th scope="col" class="w-25">{% trans 'Total' %} {% trans 'Surface' %}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{report.eco_account_report.queryset_deductions_count|default_if_zero:"-"}}</td>
|
|
||||||
<td>
|
|
||||||
{{report.eco_account_report.deductions_sq_m|default_if_zero:"-"}}
|
|
||||||
{% if report.eco_account_report.deductions_sq_m > 0 %}
|
|
||||||
m²
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
|
||||||
<td>{{report.eco_account_report.queryset_deductions_recorded_count|default_if_zero:"-"}}</td>
|
<td>{{report.eco_account_report.queryset_deductions_recorded_count|default_if_zero:"-"}}</td>
|
||||||
<td>
|
<td>{{report.eco_account_report.recorded_deductions_sq_m|default_if_zero:"-"}}m²</td>
|
||||||
{{report.eco_account_report.recorded_deductions_sq_m|default_if_zero:"-"}}
|
<td>{{report.eco_account_report.queryset_deductions_count|default_if_zero:"-"}}</td>
|
||||||
{% if report.eco_account_report.recorded_deductions_sq_m > 0 %}
|
<td>{{report.eco_account_report.deductions_sq_m|default_if_zero:"-"}}m²</td>
|
||||||
m²
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
@ -14,16 +14,16 @@
|
|||||||
<table class="table table-hover">
|
<table class="table table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="col" class="w-25">{% trans 'Total' %}</th>
|
|
||||||
<th scope="col">{% fa5_icon 'star' %} {% trans 'Checked' %}</th>
|
<th scope="col">{% fa5_icon 'star' %} {% trans 'Checked' %}</th>
|
||||||
<th scope="col">{% fa5_icon 'bookmark' %} {% trans 'Recorded' %}</th>
|
<th scope="col">{% fa5_icon 'bookmark' %} {% trans 'Recorded' %}</th>
|
||||||
|
<th scope="col" class="w-25">{% trans 'Total' %}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{report.intervention_report.queryset_count|default_if_zero:"-"}}</td>
|
|
||||||
<td>{{report.intervention_report.queryset_checked_count|default_if_zero:"-"}}</td>
|
<td>{{report.intervention_report.queryset_checked_count|default_if_zero:"-"}}</td>
|
||||||
<td>{{report.intervention_report.queryset_recorded_count|default_if_zero:"-"}}</td>
|
<td>{{report.intervention_report.queryset_recorded_count|default_if_zero:"-"}}</td>
|
||||||
|
<td>{{report.intervention_report.queryset_count|default_if_zero:"-"}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
@ -5,29 +5,29 @@
|
|||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="w-25" scope="col">{% trans 'Compensation type' %}</th>
|
<th class="w-25" scope="col">{% trans 'Compensation type' %}</th>
|
||||||
<th class="w-25" scope="col">{% trans 'Total' %}</th>
|
|
||||||
<th class="w-25" scope="col">{% fa5_icon 'star' %} {% trans 'Checked' %}</th>
|
<th class="w-25" scope="col">{% fa5_icon 'star' %} {% trans 'Checked' %}</th>
|
||||||
<th class="w-25" scope="col">{% fa5_icon 'bookmark' %} {% trans 'Recorded' %}</th>
|
<th class="w-25" scope="col">{% fa5_icon 'bookmark' %} {% trans 'Recorded' %}</th>
|
||||||
|
<th class="w-25" scope="col">{% trans 'Total' %}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{% trans 'Compensation' %}</th>
|
<th>{% trans 'Compensation' %}</th>
|
||||||
<td>{{report.intervention_report.compensation_sum|default_if_zero:"-"}}</td>
|
|
||||||
<td>{{report.intervention_report.compensation_sum_checked|default_if_zero:"-"}}</td>
|
<td>{{report.intervention_report.compensation_sum_checked|default_if_zero:"-"}}</td>
|
||||||
<td>{{report.intervention_report.compensation_sum_recorded|default_if_zero:"-"}}</td>
|
<td>{{report.intervention_report.compensation_sum_recorded|default_if_zero:"-"}}</td>
|
||||||
|
<td>{{report.intervention_report.compensation_sum|default_if_zero:"-"}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{% trans 'Payment' %}</th>
|
<th>{% trans 'Payment' %}</th>
|
||||||
<td>{{report.intervention_report.payment_sum|default_if_zero:"-"}}</td>
|
|
||||||
<td>{{report.intervention_report.payment_sum_checked|default_if_zero:"-"}}</td>
|
<td>{{report.intervention_report.payment_sum_checked|default_if_zero:"-"}}</td>
|
||||||
<td>{{report.intervention_report.payment_sum_recorded|default_if_zero:"-"}}</td>
|
<td>{{report.intervention_report.payment_sum_recorded|default_if_zero:"-"}}</td>
|
||||||
|
<td>{{report.intervention_report.payment_sum|default_if_zero:"-"}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{% trans 'Deductions' %}</th>
|
<th>{% trans 'Deductions' %}</th>
|
||||||
<td>{{report.intervention_report.deduction_sum|default_if_zero:"-"}}</td>
|
|
||||||
<td>{{report.intervention_report.deduction_sum_checked|default_if_zero:"-"}}</td>
|
<td>{{report.intervention_report.deduction_sum_checked|default_if_zero:"-"}}</td>
|
||||||
<td>{{report.intervention_report.deduction_sum_recorded|default_if_zero:"-"}}</td>
|
<td>{{report.intervention_report.deduction_sum_recorded|default_if_zero:"-"}}</td>
|
||||||
|
<td>{{report.intervention_report.deduction_sum|default_if_zero:"-"}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
@ -13,15 +13,15 @@
|
|||||||
<th class="w-25" scope="col">
|
<th class="w-25" scope="col">
|
||||||
{% trans 'Law' %}
|
{% trans 'Law' %}
|
||||||
</th>
|
</th>
|
||||||
<th scope="col">
|
|
||||||
{% trans 'Total' %}
|
|
||||||
</th>
|
|
||||||
<th scope="col">
|
<th scope="col">
|
||||||
{% fa5_icon 'star' %} {% trans 'Checked' %}
|
{% fa5_icon 'star' %} {% trans 'Checked' %}
|
||||||
</th>
|
</th>
|
||||||
<th scope="col">
|
<th scope="col">
|
||||||
{% fa5_icon 'bookmark' %} {% trans 'Recorded' %}
|
{% fa5_icon 'bookmark' %} {% trans 'Recorded' %}
|
||||||
</th>
|
</th>
|
||||||
|
<th scope="col">
|
||||||
|
{% trans 'Total' %}
|
||||||
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@ -34,16 +34,16 @@
|
|||||||
{{law.long_name}}
|
{{law.long_name}}
|
||||||
</small>
|
</small>
|
||||||
</td>
|
</td>
|
||||||
<td>{{law.num|default_if_zero:"-"}}</td>
|
|
||||||
<td>{{law.num_checked|default_if_zero:"-"}}</td>
|
<td>{{law.num_checked|default_if_zero:"-"}}</td>
|
||||||
<td>{{law.num_recorded|default_if_zero:"-"}}</td>
|
<td>{{law.num_recorded|default_if_zero:"-"}}</td>
|
||||||
|
<td>{{law.num|default_if_zero:"-"}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong>{% trans 'Total' %}</strong></td>
|
<td><strong>{% trans 'Total' %}</strong></td>
|
||||||
<td><strong>{{report.intervention_report.law_sum|default_if_zero:"-"}}</strong></td>
|
|
||||||
<td><strong>{{report.intervention_report.law_sum_checked|default_if_zero:"-"}}</strong></td>
|
<td><strong>{{report.intervention_report.law_sum_checked|default_if_zero:"-"}}</strong></td>
|
||||||
<td><strong>{{report.intervention_report.law_sum_recorded|default_if_zero:"-"}}</strong></td>
|
<td><strong>{{report.intervention_report.law_sum_recorded|default_if_zero:"-"}}</strong></td>
|
||||||
|
<td><strong>{{report.intervention_report.law_sum|default_if_zero:"-"}}</strong></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
@ -14,26 +14,26 @@
|
|||||||
<table class="table table-hover">
|
<table class="table table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="col" class="w-25">{% trans 'Type' %}</th>
|
<th scope="col" class="w-25">{% fa5_icon 'star' %} {% trans 'Type' %}</th>
|
||||||
<th scope="col">{% trans 'Total' %}</th>
|
|
||||||
<th scope="col">{% fa5_icon 'bookmark' %} {% trans 'Recorded' %}</th>
|
<th scope="col">{% fa5_icon 'bookmark' %} {% trans 'Recorded' %}</th>
|
||||||
|
<th scope="col">{% trans 'Total' %}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{% trans 'Intervention' %}</td>
|
<td>{% trans 'Intervention' %}</td>
|
||||||
<td>{{report.old_data_report.queryset_intervention_count|default_if_zero:"-"}}</td>
|
|
||||||
<td>{{report.old_data_report.queryset_intervention_recorded_count|default_if_zero:"-"}}</td>
|
<td>{{report.old_data_report.queryset_intervention_recorded_count|default_if_zero:"-"}}</td>
|
||||||
|
<td>{{report.old_data_report.queryset_intervention_count|default_if_zero:"-"}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{% trans 'Compensation' %}</td>
|
<td>{% trans 'Compensation' %}</td>
|
||||||
<td>{{report.old_data_report.queryset_comps_count|default_if_zero:"-"}}</td>
|
|
||||||
<td>{{report.old_data_report.queryset_comps_recorded_count|default_if_zero:"-"}}</td>
|
<td>{{report.old_data_report.queryset_comps_recorded_count|default_if_zero:"-"}}</td>
|
||||||
|
<td>{{report.old_data_report.queryset_comps_count|default_if_zero:"-"}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{% trans 'Eco-account' %}</td>
|
<td>{% trans 'Eco-account' %}</td>
|
||||||
<td>{{report.old_data_report.queryset_acc_count|default_if_zero:"-"}}</td>
|
|
||||||
<td>{{report.old_data_report.queryset_acc_recorded_count|default_if_zero:"-"}}</td>
|
<td>{{report.old_data_report.queryset_acc_recorded_count|default_if_zero:"-"}}</td>
|
||||||
|
<td>{{report.old_data_report.queryset_acc_count|default_if_zero:"-"}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
{% fa5_icon 'pencil-ruler' %}
|
{% fa5_icon 'pencil-ruler' %}
|
||||||
{% trans 'Old interventions' %}
|
{% trans 'Old interventions' %}
|
||||||
</h5>
|
</h5>
|
||||||
<span>{% trans 'Binding date before' %} 16.06.2018</span>
|
<span>{% trans 'Before' %} 16.06.2018</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -108,7 +108,7 @@ class TempExcelFile:
|
|||||||
for _iter_entry in _iter_obj:
|
for _iter_entry in _iter_obj:
|
||||||
j = 0
|
j = 0
|
||||||
for _iter_attr in _attrs:
|
for _iter_attr in _attrs:
|
||||||
_new_cell = ws.cell(start_cell.row + i, start_cell.column + j, _iter_entry.get(_iter_attr, "MISSING"))
|
_new_cell = ws.cell(start_cell.row + i, start_cell.column + j, getattr(_iter_entry, _iter_attr))
|
||||||
_new_cell.border = border_style
|
_new_cell.border = border_style
|
||||||
j += 1
|
j += 1
|
||||||
i += 1
|
i += 1
|
||||||
|
Binary file not shown.
@ -137,36 +137,22 @@ class TimespanReport:
|
|||||||
).order_by(
|
).order_by(
|
||||||
"long_name"
|
"long_name"
|
||||||
)
|
)
|
||||||
|
# Fetch all law ids which are used by any .legal object of an intervention object
|
||||||
evaluated_laws = []
|
intervention_laws_total = self.queryset.values_list("legal__laws__id")
|
||||||
sum_num_checked = 0
|
intervention_laws_checked = self.queryset.filter(checked__isnull=False).values_list("legal__laws__id")
|
||||||
sum_num_recorded = 0
|
intervention_laws_recorded = self.queryset.filter(recorded__isnull=False).values_list(
|
||||||
sum_num = 0
|
"legal__laws__id")
|
||||||
for law in laws:
|
# Count how often which law id appears in the above list, return only the long_name of the law and the resulting
|
||||||
num = self.queryset.filter(
|
# count (here 'num'). This is for keeping the db fetch as small as possible
|
||||||
legal__laws__atom_id=law.atom_id
|
# Compute the sum for total, checked and recorded
|
||||||
).count()
|
self.evaluated_laws = laws.annotate(
|
||||||
num_checked = self.queryset_checked.filter(
|
num=Count("id", filter=Q(id__in=intervention_laws_total)),
|
||||||
legal__laws__atom_id=law.atom_id
|
num_checked=Count("id", filter=Q(id__in=intervention_laws_checked)),
|
||||||
).count()
|
num_recorded=Count("id", filter=Q(id__in=intervention_laws_recorded)),
|
||||||
num_recorded = self.queryset_recorded.filter(
|
).values_list("short_name", "long_name", "num_checked", "num_recorded", "num", named=True)
|
||||||
legal__laws__atom_id=law.atom_id
|
self.law_sum = self.evaluated_laws.aggregate(sum_num=Sum("num"))["sum_num"]
|
||||||
).count()
|
self.law_sum_checked = self.evaluated_laws.aggregate(sum_num_checked=Sum("num_checked"))["sum_num_checked"]
|
||||||
evaluated_laws.append({
|
self.law_sum_recorded = self.evaluated_laws.aggregate(sum_num_recorded=Sum("num_recorded"))["sum_num_recorded"]
|
||||||
"short_name": law.short_name,
|
|
||||||
"long_name": law.long_name,
|
|
||||||
"num": num,
|
|
||||||
"num_checked": num_checked,
|
|
||||||
"num_recorded": num_recorded,
|
|
||||||
})
|
|
||||||
sum_num += num
|
|
||||||
sum_num_checked += num_checked
|
|
||||||
sum_num_recorded += num_recorded
|
|
||||||
|
|
||||||
self.evaluated_laws = evaluated_laws
|
|
||||||
self.law_sum = sum_num
|
|
||||||
self.law_sum_checked = sum_num_checked
|
|
||||||
self.law_sum_recorded = sum_num_recorded
|
|
||||||
|
|
||||||
def _evaluate_compensations(self):
|
def _evaluate_compensations(self):
|
||||||
""" Analyzes the types of compensation distribution
|
""" Analyzes the types of compensation distribution
|
||||||
|
@ -12,7 +12,6 @@ from django.contrib.gis import geos
|
|||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
|
||||||
from api.tests.v1.share.test_api_sharing import BaseAPIV1TestCase
|
from api.tests.v1.share.test_api_sharing import BaseAPIV1TestCase
|
||||||
from konova.sub_settings.lanis_settings import DEFAULT_SRID_RLP
|
|
||||||
|
|
||||||
|
|
||||||
class APIV1UpdateTestCase(BaseAPIV1TestCase):
|
class APIV1UpdateTestCase(BaseAPIV1TestCase):
|
||||||
@ -64,7 +63,6 @@ class APIV1UpdateTestCase(BaseAPIV1TestCase):
|
|||||||
|
|
||||||
put_props = put_body["properties"]
|
put_props = put_body["properties"]
|
||||||
put_geom = geos.fromstr(json.dumps(put_body))
|
put_geom = geos.fromstr(json.dumps(put_body))
|
||||||
put_geom.transform(DEFAULT_SRID_RLP)
|
|
||||||
self.assertEqual(put_geom, self.intervention.geometry.geom)
|
self.assertEqual(put_geom, self.intervention.geometry.geom)
|
||||||
self.assertEqual(put_props["title"], self.intervention.title)
|
self.assertEqual(put_props["title"], self.intervention.title)
|
||||||
self.assertNotEqual(modified_on, self.intervention.modified)
|
self.assertNotEqual(modified_on, self.intervention.modified)
|
||||||
@ -94,7 +92,6 @@ class APIV1UpdateTestCase(BaseAPIV1TestCase):
|
|||||||
|
|
||||||
put_props = put_body["properties"]
|
put_props = put_body["properties"]
|
||||||
put_geom = geos.fromstr(json.dumps(put_body))
|
put_geom = geos.fromstr(json.dumps(put_body))
|
||||||
put_geom.transform(DEFAULT_SRID_RLP)
|
|
||||||
self.assertEqual(put_geom, self.compensation.geometry.geom)
|
self.assertEqual(put_geom, self.compensation.geometry.geom)
|
||||||
self.assertEqual(put_props["title"], self.compensation.title)
|
self.assertEqual(put_props["title"], self.compensation.title)
|
||||||
self.assertNotEqual(modified_on, self.compensation.modified)
|
self.assertNotEqual(modified_on, self.compensation.modified)
|
||||||
@ -124,7 +121,6 @@ class APIV1UpdateTestCase(BaseAPIV1TestCase):
|
|||||||
|
|
||||||
put_props = put_body["properties"]
|
put_props = put_body["properties"]
|
||||||
put_geom = geos.fromstr(json.dumps(put_body))
|
put_geom = geos.fromstr(json.dumps(put_body))
|
||||||
put_geom.transform(DEFAULT_SRID_RLP)
|
|
||||||
self.assertEqual(put_geom, self.eco_account.geometry.geom)
|
self.assertEqual(put_geom, self.eco_account.geometry.geom)
|
||||||
self.assertEqual(put_props["title"], self.eco_account.title)
|
self.assertEqual(put_props["title"], self.eco_account.title)
|
||||||
self.assertNotEqual(modified_on, self.eco_account.modified)
|
self.assertNotEqual(modified_on, self.eco_account.modified)
|
||||||
@ -156,7 +152,6 @@ class APIV1UpdateTestCase(BaseAPIV1TestCase):
|
|||||||
|
|
||||||
put_props = put_body["properties"]
|
put_props = put_body["properties"]
|
||||||
put_geom = geos.fromstr(json.dumps(put_body))
|
put_geom = geos.fromstr(json.dumps(put_body))
|
||||||
put_geom.transform(DEFAULT_SRID_RLP)
|
|
||||||
self.assertEqual(put_geom, self.ema.geometry.geom)
|
self.assertEqual(put_geom, self.ema.geometry.geom)
|
||||||
self.assertEqual(put_props["title"], self.ema.title)
|
self.assertEqual(put_props["title"], self.ema.title)
|
||||||
self.assertNotEqual(modified_on, self.ema.modified)
|
self.assertNotEqual(modified_on, self.ema.modified)
|
||||||
|
@ -12,7 +12,6 @@ from django.contrib.gis import geos
|
|||||||
from django.contrib.gis.geos import GEOSGeometry
|
from django.contrib.gis.geos import GEOSGeometry
|
||||||
from django.core.paginator import Paginator
|
from django.core.paginator import Paginator
|
||||||
|
|
||||||
from konova.sub_settings.lanis_settings import DEFAULT_SRID_RLP
|
|
||||||
from konova.utils.message_templates import DATA_UNSHARED
|
from konova.utils.message_templates import DATA_UNSHARED
|
||||||
|
|
||||||
|
|
||||||
@ -134,8 +133,6 @@ class AbstractModelAPISerializer:
|
|||||||
if isinstance(geojson, dict):
|
if isinstance(geojson, dict):
|
||||||
geojson = json.dumps(geojson)
|
geojson = json.dumps(geojson)
|
||||||
geometry = geos.fromstr(geojson)
|
geometry = geos.fromstr(geojson)
|
||||||
if geometry.srid != DEFAULT_SRID_RLP:
|
|
||||||
geometry.transform(DEFAULT_SRID_RLP)
|
|
||||||
if geometry.empty:
|
if geometry.empty:
|
||||||
geometry = None
|
geometry = None
|
||||||
return geometry
|
return geometry
|
||||||
|
@ -1,165 +0,0 @@
|
|||||||
"""
|
|
||||||
Author: Michel Peltriaux
|
|
||||||
Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany
|
|
||||||
Contact: michel.peltriaux@sgdnord.rlp.de
|
|
||||||
Created on: 31.05.22
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
from django.db import transaction
|
|
||||||
|
|
||||||
from codelist.models import KonovaCode
|
|
||||||
from compensation.models import CompensationAction, CompensationState
|
|
||||||
from intervention.models import Legal, Handler, Responsibility
|
|
||||||
from konova.management.commands.setup import BaseKonovaCommand
|
|
||||||
|
|
||||||
|
|
||||||
class Command(BaseKonovaCommand):
|
|
||||||
help = "Updates internal codelist by external API"
|
|
||||||
|
|
||||||
def handle(self, *args, **options):
|
|
||||||
try:
|
|
||||||
with transaction.atomic():
|
|
||||||
self.sync_codelist()
|
|
||||||
except KeyboardInterrupt:
|
|
||||||
self._break_line()
|
|
||||||
exit(-1)
|
|
||||||
|
|
||||||
def __get_newest_code(self, code):
|
|
||||||
code = KonovaCode.objects.filter(
|
|
||||||
atom_id=code.atom_id,
|
|
||||||
parent=code.parent,
|
|
||||||
code_lists__in=code.code_lists.all(),
|
|
||||||
).order_by(
|
|
||||||
"-id"
|
|
||||||
).first()
|
|
||||||
return code
|
|
||||||
|
|
||||||
def __migrate_compensation_action_codes(self):
|
|
||||||
all_actions = CompensationAction.objects.all()
|
|
||||||
used_codes = []
|
|
||||||
for action in all_actions:
|
|
||||||
stored_codes = action.action_type.all()
|
|
||||||
codes = []
|
|
||||||
for code in stored_codes:
|
|
||||||
codes.append(self.__get_newest_code(code))
|
|
||||||
action.action_type.set(codes)
|
|
||||||
used_codes += codes
|
|
||||||
|
|
||||||
stored_codes = action.action_type_details.all()
|
|
||||||
codes = []
|
|
||||||
for code in stored_codes:
|
|
||||||
codes.append(self.__get_newest_code(code))
|
|
||||||
action.action_type_details.set(codes)
|
|
||||||
used_codes += codes
|
|
||||||
|
|
||||||
action.save()
|
|
||||||
return used_codes
|
|
||||||
|
|
||||||
def __migrate_compensation_state_codes(self):
|
|
||||||
all_states = CompensationState.objects.all()
|
|
||||||
used_codes = []
|
|
||||||
for state in all_states:
|
|
||||||
code = state.biotope_type
|
|
||||||
if code is not None:
|
|
||||||
new_code = self.__get_newest_code(code)
|
|
||||||
state.biotope_type = new_code
|
|
||||||
used_codes.append(new_code)
|
|
||||||
|
|
||||||
stored_codes = state.biotope_type_details.all()
|
|
||||||
codes = []
|
|
||||||
for code in stored_codes:
|
|
||||||
codes.append(self.__get_newest_code(code))
|
|
||||||
state.biotope_type_details.set(codes)
|
|
||||||
|
|
||||||
used_codes += codes
|
|
||||||
state.save()
|
|
||||||
return used_codes
|
|
||||||
|
|
||||||
def __migrate_legal_codes(self):
|
|
||||||
all_legal = Legal.objects.all()
|
|
||||||
used_codes = []
|
|
||||||
for legal in all_legal:
|
|
||||||
code = legal.process_type
|
|
||||||
if code is not None:
|
|
||||||
new_code = self.__get_newest_code(code)
|
|
||||||
legal.process_type = new_code
|
|
||||||
used_codes.append(new_code)
|
|
||||||
|
|
||||||
stored_codes = legal.laws.all()
|
|
||||||
codes = []
|
|
||||||
for code in stored_codes:
|
|
||||||
codes.append(self.__get_newest_code(code))
|
|
||||||
legal.laws.set(codes)
|
|
||||||
|
|
||||||
used_codes += codes
|
|
||||||
legal.save()
|
|
||||||
return used_codes
|
|
||||||
|
|
||||||
def __migrate_handler_codes(apps):
|
|
||||||
all_handlers = Handler.objects.all()
|
|
||||||
used_codes = []
|
|
||||||
for handler in all_handlers:
|
|
||||||
code = handler.type
|
|
||||||
if code is None:
|
|
||||||
continue
|
|
||||||
new_code = apps.__get_newest_code(code)
|
|
||||||
handler.type = new_code
|
|
||||||
used_codes.append(new_code)
|
|
||||||
handler.save()
|
|
||||||
return used_codes
|
|
||||||
|
|
||||||
def __migrate_responsibility_codes(apps):
|
|
||||||
all_resps = Responsibility.objects.all()
|
|
||||||
used_codes = []
|
|
||||||
for responsibility in all_resps:
|
|
||||||
code = responsibility.registration_office
|
|
||||||
if code is not None:
|
|
||||||
new_code = apps.__get_newest_code(code)
|
|
||||||
responsibility.registration_office = new_code
|
|
||||||
used_codes.append(new_code)
|
|
||||||
|
|
||||||
code = responsibility.conservation_office
|
|
||||||
if code is not None:
|
|
||||||
new_code = apps.__get_newest_code(code)
|
|
||||||
responsibility.conservation_office = new_code
|
|
||||||
used_codes.append(new_code)
|
|
||||||
|
|
||||||
responsibility.save()
|
|
||||||
return used_codes
|
|
||||||
|
|
||||||
def sync_codelist(self):
|
|
||||||
""" Due to issues on the external codelist app there can be multiple entries of the same code
|
|
||||||
(atom_id, parent, list) but with different identifiers.
|
|
||||||
|
|
||||||
These issues have been resolved but already
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
"""
|
|
||||||
self._write_warning("Sync codes in usage and replace by newest entries...")
|
|
||||||
used_codes = []
|
|
||||||
used_codes += self.__migrate_compensation_action_codes()
|
|
||||||
used_codes += self.__migrate_compensation_state_codes()
|
|
||||||
used_codes += self.__migrate_legal_codes()
|
|
||||||
used_codes += self.__migrate_handler_codes()
|
|
||||||
used_codes += self.__migrate_responsibility_codes()
|
|
||||||
self._write_success(f"Synced {len(used_codes)} code usages!")
|
|
||||||
|
|
||||||
all_codes = KonovaCode.objects.all()
|
|
||||||
newest_code_ids = []
|
|
||||||
for code in all_codes:
|
|
||||||
newest_code = self.__get_newest_code(code)
|
|
||||||
newest_code_ids.append(newest_code.id)
|
|
||||||
|
|
||||||
code_ids_to_keep = set(newest_code_ids)
|
|
||||||
self._write_warning(f"Of {all_codes.count()} KonovaCodes there are {len(code_ids_to_keep)} to keep as newest versions...")
|
|
||||||
|
|
||||||
deletable_codes = KonovaCode.objects.all().exclude(
|
|
||||||
id__in=code_ids_to_keep
|
|
||||||
)
|
|
||||||
deletable_codes_count = deletable_codes.count()
|
|
||||||
self._write_warning(f"{deletable_codes_count} found which are obsolet...")
|
|
||||||
if deletable_codes_count > 0:
|
|
||||||
deletable_codes.delete()
|
|
||||||
self._write_success("Obsolete codes deleted!")
|
|
@ -12,6 +12,7 @@ from codelist.models import KonovaCode
|
|||||||
from codelist.settings import CODELIST_BIOTOPES_ID, CODELIST_BIOTOPES_EXTRA_CODES_ID
|
from codelist.settings import CODELIST_BIOTOPES_ID, CODELIST_BIOTOPES_EXTRA_CODES_ID
|
||||||
from compensation.managers import CompensationStateManager
|
from compensation.managers import CompensationStateManager
|
||||||
from konova.models import UuidModel
|
from konova.models import UuidModel
|
||||||
|
from konova.utils.message_templates import COMPENSATION_STATE_REMOVED
|
||||||
|
|
||||||
|
|
||||||
class CompensationState(UuidModel):
|
class CompensationState(UuidModel):
|
||||||
|
@ -123,16 +123,9 @@
|
|||||||
{% include 'user/includes/team_data_modal_button.html' %}
|
{% include 'user/includes/team_data_modal_button.html' %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<hr>
|
<hr>
|
||||||
{% if has_access %}
|
{% for user in obj.intervention.users.all %}
|
||||||
{% for user in obj.users.all %}
|
|
||||||
{% include 'user/includes/contact_modal_button.html' %}
|
{% include 'user/includes/contact_modal_button.html' %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% else %}
|
|
||||||
<span title="{% trans 'The data must be shared with you, if you want to see which other users have shared access as well.' %}">
|
|
||||||
{% fa5_icon 'eye-slash' %}
|
|
||||||
{{obj.users.count}} {% trans 'other users' %}
|
|
||||||
</span>
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
@ -101,16 +101,9 @@
|
|||||||
{% include 'user/includes/team_data_modal_button.html' %}
|
{% include 'user/includes/team_data_modal_button.html' %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<hr>
|
<hr>
|
||||||
{% if has_access %}
|
|
||||||
{% for user in obj.users.all %}
|
{% for user in obj.users.all %}
|
||||||
{% include 'user/includes/contact_modal_button.html' %}
|
{% include 'user/includes/contact_modal_button.html' %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% else %}
|
|
||||||
<span title="{% trans 'The data must be shared with you, if you want to see which other users have shared access as well.' %}">
|
|
||||||
{% fa5_icon 'eye-slash' %}
|
|
||||||
{{obj.users.count}} {% trans 'other users' %}
|
|
||||||
</span>
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
@ -87,16 +87,9 @@
|
|||||||
{% include 'user/includes/team_data_modal_button.html' %}
|
{% include 'user/includes/team_data_modal_button.html' %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<hr>
|
<hr>
|
||||||
{% if has_access %}
|
{% for user in obj.user.all %}
|
||||||
{% for user in obj.users.all %}
|
|
||||||
{% include 'user/includes/contact_modal_button.html' %}
|
{% include 'user/includes/contact_modal_button.html' %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% else %}
|
|
||||||
<span title="{% trans 'The data must be shared with you, if you want to see which other users have shared access as well.' %}">
|
|
||||||
{% fa5_icon 'eye-slash' %}
|
|
||||||
{{obj.users.count}} {% trans 'other users' %}
|
|
||||||
</span>
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
@ -129,16 +129,9 @@
|
|||||||
{% include 'user/includes/team_data_modal_button.html' %}
|
{% include 'user/includes/team_data_modal_button.html' %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<hr>
|
<hr>
|
||||||
{% if has_access %}
|
|
||||||
{% for user in obj.users.all %}
|
{% for user in obj.users.all %}
|
||||||
{% include 'user/includes/contact_modal_button.html' %}
|
{% include 'user/includes/contact_modal_button.html' %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% else %}
|
|
||||||
<span title="{% trans 'The data must be shared with you, if you want to see which other users have shared access as well.' %}">
|
|
||||||
{% fa5_icon 'eye-slash' %}
|
|
||||||
{{obj.users.count}} {% trans 'other users' %}
|
|
||||||
</span>
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
@ -7,8 +7,7 @@ Created on: 16.11.20
|
|||||||
"""
|
"""
|
||||||
from django.http import HttpRequest
|
from django.http import HttpRequest
|
||||||
|
|
||||||
from konova.sub_settings.context_settings import BASE_TITLE, HELP_LINK, BASE_FRONTEND_TITLE, TAB_TITLE_IDENTIFIER, \
|
from konova.sub_settings.context_settings import BASE_TITLE, HELP_LINK, BASE_FRONTEND_TITLE, TAB_TITLE_IDENTIFIER
|
||||||
IMPRESSUM_LINK
|
|
||||||
from konova.sub_settings.django_settings import EMAIL_REPLY_TO
|
from konova.sub_settings.django_settings import EMAIL_REPLY_TO
|
||||||
|
|
||||||
|
|
||||||
@ -26,7 +25,6 @@ class BaseContext:
|
|||||||
"user": request.user,
|
"user": request.user,
|
||||||
"current_role": None,
|
"current_role": None,
|
||||||
"help_link": HELP_LINK,
|
"help_link": HELP_LINK,
|
||||||
"impressum_link": IMPRESSUM_LINK,
|
|
||||||
"CONTACT_MAIL": EMAIL_REPLY_TO,
|
"CONTACT_MAIL": EMAIL_REPLY_TO,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -369,14 +369,14 @@ class SimpleGeomForm(BaseForm):
|
|||||||
if self.instance is None or self.instance.geometry is None:
|
if self.instance is None or self.instance.geometry is None:
|
||||||
raise LookupError
|
raise LookupError
|
||||||
geometry = self.instance.geometry
|
geometry = self.instance.geometry
|
||||||
geometry.geom = self.cleaned_data.get("geom", MultiPolygon(srid=DEFAULT_SRID_RLP))
|
geometry.geom = self.cleaned_data.get("geom", MultiPolygon(srid=DEFAULT_SRID))
|
||||||
geometry.modified = action
|
geometry.modified = action
|
||||||
|
|
||||||
geometry.save()
|
geometry.save()
|
||||||
except LookupError:
|
except LookupError:
|
||||||
# No geometry or linked instance holding a geometry exist --> create a new one!
|
# No geometry or linked instance holding a geometry exist --> create a new one!
|
||||||
geometry = Geometry.objects.create(
|
geometry = Geometry.objects.create(
|
||||||
geom=self.cleaned_data.get("geom", MultiPolygon(srid=DEFAULT_SRID_RLP)),
|
geom=self.cleaned_data.get("geom", MultiPolygon(srid=DEFAULT_SRID)),
|
||||||
created=action,
|
created=action,
|
||||||
)
|
)
|
||||||
# Start the parcel update procedure in a background process
|
# Start the parcel update procedure in a background process
|
||||||
|
@ -10,7 +10,6 @@ from django.utils.timezone import make_aware
|
|||||||
from konova.models import Geometry
|
from konova.models import Geometry
|
||||||
from konova.settings import DEFAULT_GROUP
|
from konova.settings import DEFAULT_GROUP
|
||||||
from user.models import User, UserActionLogEntry, UserAction, Team
|
from user.models import User, UserActionLogEntry, UserAction, Team
|
||||||
from konova.tasks import celery_update_parcels
|
|
||||||
|
|
||||||
|
|
||||||
class BaseMigrater:
|
class BaseMigrater:
|
||||||
@ -63,7 +62,7 @@ class BaseMigrater:
|
|||||||
geom = instance.geometry or Geometry()
|
geom = instance.geometry or Geometry()
|
||||||
geom.geom = db_result_geom
|
geom.geom = db_result_geom
|
||||||
geom.save()
|
geom.save()
|
||||||
celery_update_parcels.delay(geom.id)
|
# celery_update_parcels.delay(geom.id)
|
||||||
|
|
||||||
instance.geometry = geom
|
instance.geometry = geom
|
||||||
return instance
|
return instance
|
||||||
@ -144,10 +143,9 @@ class BaseMigrater:
|
|||||||
)
|
)
|
||||||
fetch_results = tmp_cursor.fetchall()
|
fetch_results = tmp_cursor.fetchall()
|
||||||
|
|
||||||
migrated_identifier = "(migriert)"
|
instance.log.all().delete()
|
||||||
instance.log.filter(comment__contains=migrated_identifier).delete()
|
|
||||||
for result in fetch_results:
|
for result in fetch_results:
|
||||||
comment = f"{result[0]} {migrated_identifier}"
|
comment = result[0]
|
||||||
timestamp = make_aware(result[1])
|
timestamp = make_aware(result[1])
|
||||||
user_name = result[2]
|
user_name = result[2]
|
||||||
user = self._get_migrate_user(user_name)
|
user = self._get_migrate_user(user_name)
|
||||||
@ -174,11 +172,11 @@ class BaseMigrater:
|
|||||||
first_entry = instance.log.order_by("timestamp").first()
|
first_entry = instance.log.order_by("timestamp").first()
|
||||||
last_entry = instance.log.order_by("-timestamp").first()
|
last_entry = instance.log.order_by("-timestamp").first()
|
||||||
|
|
||||||
if first_entry is not None and instance.created is None:
|
if first_entry is not None:
|
||||||
instance.created = UserActionLogEntry.get_created_action(first_entry.user)
|
instance.created = UserActionLogEntry.get_created_action(first_entry.user)
|
||||||
instance.created.timestamp = first_entry.timestamp
|
instance.created.timestamp = first_entry.timestamp
|
||||||
instance.created.save()
|
instance.created.save()
|
||||||
if last_entry is not None and instance.modified != last_entry:
|
if last_entry is not None:
|
||||||
instance.modified = last_entry
|
instance.modified = last_entry
|
||||||
|
|
||||||
tmp_cursor.close()
|
tmp_cursor.close()
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
from django.contrib.gis.gdal import GDALException
|
from django.contrib.auth.models import Group
|
||||||
from django.contrib.gis.geos import MultiPolygon, Polygon
|
from django.contrib.gis.geos import MultiPolygon, Polygon
|
||||||
from django.core.exceptions import ObjectDoesNotExist
|
from django.core.exceptions import ObjectDoesNotExist
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
@ -13,8 +13,8 @@ from compensation.utils.quality import EcoAccountQualityChecker
|
|||||||
from intervention.models import Responsibility, Handler, Intervention, Legal
|
from intervention.models import Responsibility, Handler, Intervention, Legal
|
||||||
from konova.management.commands.kspMigrater.compensation_migrater import CompensationMigrater
|
from konova.management.commands.kspMigrater.compensation_migrater import CompensationMigrater
|
||||||
from konova.models import Geometry
|
from konova.models import Geometry
|
||||||
from konova.sub_settings.lanis_settings import DEFAULT_SRID_RLP
|
from konova.sub_settings.lanis_settings import DEFAULT_SRID_RLP, DEFAULT_SRID
|
||||||
from user.models import UserActionLogEntry
|
from user.models import User, UserActionLogEntry
|
||||||
|
|
||||||
|
|
||||||
class EcoAccountMigrater(CompensationMigrater):
|
class EcoAccountMigrater(CompensationMigrater):
|
||||||
@ -104,7 +104,7 @@ class EcoAccountMigrater(CompensationMigrater):
|
|||||||
if db_result_geom is not None:
|
if db_result_geom is not None:
|
||||||
deductions_db_result_geom = MultiPolygon.from_ewkt(deduction_db_results[0][0])
|
deductions_db_result_geom = MultiPolygon.from_ewkt(deduction_db_results[0][0])
|
||||||
else:
|
else:
|
||||||
deductions_db_result_geom = MultiPolygon(srid=DEFAULT_SRID_RLP)
|
deductions_db_result_geom = MultiPolygon(srid=DEFAULT_SRID)
|
||||||
|
|
||||||
tmp_cursor.execute(
|
tmp_cursor.execute(
|
||||||
'select '
|
'select '
|
||||||
@ -121,7 +121,7 @@ class EcoAccountMigrater(CompensationMigrater):
|
|||||||
|
|
||||||
db_result_geom = account_db_result_geom.union(deductions_db_result_geom)
|
db_result_geom = account_db_result_geom.union(deductions_db_result_geom)
|
||||||
if isinstance(db_result_geom, Polygon):
|
if isinstance(db_result_geom, Polygon):
|
||||||
db_result_geom = MultiPolygon(db_result_geom, srid=DEFAULT_SRID_RLP)
|
db_result_geom = MultiPolygon(db_result_geom, srid=DEFAULT_SRID)
|
||||||
instance.geometry = instance.geometry or Geometry()
|
instance.geometry = instance.geometry or Geometry()
|
||||||
try:
|
try:
|
||||||
# Calculate area by transforming
|
# Calculate area by transforming
|
||||||
@ -146,8 +146,6 @@ class EcoAccountMigrater(CompensationMigrater):
|
|||||||
instance.geometry.save()
|
instance.geometry.save()
|
||||||
except TypeError:
|
except TypeError:
|
||||||
raise TypeError(f"{identifier}, {db_result_geom}")
|
raise TypeError(f"{identifier}, {db_result_geom}")
|
||||||
except GDALException as e:
|
|
||||||
raise GDALException(f"{identifier}, {e}")
|
|
||||||
tmp_cursor.close()
|
tmp_cursor.close()
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
from django.contrib.auth.models import Group
|
from django.contrib.auth.models import Group
|
||||||
from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned
|
from django.core.exceptions import ObjectDoesNotExist
|
||||||
|
|
||||||
from codelist.models import KonovaCode
|
from codelist.models import KonovaCode
|
||||||
from codelist.settings import CODELIST_CONSERVATION_OFFICE_ID, CODELIST_REGISTRATION_OFFICE_ID
|
from codelist.settings import CODELIST_CONSERVATION_OFFICE_ID, CODELIST_REGISTRATION_OFFICE_ID
|
||||||
@ -84,8 +84,6 @@ class UserMigrater(BaseMigrater):
|
|||||||
except ObjectDoesNotExist:
|
except ObjectDoesNotExist:
|
||||||
# organisation code might not be valid anymore
|
# organisation code might not be valid anymore
|
||||||
continue
|
continue
|
||||||
except MultipleObjectsReturned as e:
|
|
||||||
raise MultipleObjectsReturned(f"{_org}: {e}")
|
|
||||||
if company_team is not None and len(user_teams) == 0:
|
if company_team is not None and len(user_teams) == 0:
|
||||||
# Only team is the company team
|
# Only team is the company team
|
||||||
company_team.users.add(user)
|
company_team.users.add(user)
|
||||||
|
@ -1,35 +0,0 @@
|
|||||||
# Generated by Django 3.1.3 on 2022-07-13 06:01
|
|
||||||
import django
|
|
||||||
from django.db import migrations
|
|
||||||
|
|
||||||
from konova.sub_settings.lanis_settings import DEFAULT_SRID_RLP
|
|
||||||
|
|
||||||
|
|
||||||
def migrate_geometry_srs(apps, schema_editor):
|
|
||||||
Geometry = apps.get_model("konova", "Geometry")
|
|
||||||
all_geoms = Geometry.objects.all()
|
|
||||||
|
|
||||||
# Transform all geoms and store in new geom field
|
|
||||||
for geometry in all_geoms:
|
|
||||||
geom = geometry.geom
|
|
||||||
if geom is None:
|
|
||||||
continue
|
|
||||||
geom.transform(DEFAULT_SRID_RLP)
|
|
||||||
geometry.geom_tmp = geom
|
|
||||||
geometry.save()
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('konova', '0011_auto_20220420_1101'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name="geometry",
|
|
||||||
name="geom_tmp",
|
|
||||||
field=django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=DEFAULT_SRID_RLP)
|
|
||||||
),
|
|
||||||
migrations.RunPython(migrate_geometry_srs),
|
|
||||||
]
|
|
@ -1,22 +0,0 @@
|
|||||||
# Generated by Django 3.1.3 on 2022-07-13 06:14
|
|
||||||
|
|
||||||
from django.db import migrations
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('konova', '0012_auto_20220713_0801'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name="geometry",
|
|
||||||
name="geom"
|
|
||||||
),
|
|
||||||
migrations.RenameField(
|
|
||||||
model_name="geometry",
|
|
||||||
old_name="geom_tmp",
|
|
||||||
new_name="geom"
|
|
||||||
),
|
|
||||||
]
|
|
@ -21,7 +21,8 @@ class Geometry(BaseResource):
|
|||||||
"""
|
"""
|
||||||
Geometry model
|
Geometry model
|
||||||
"""
|
"""
|
||||||
geom = MultiPolygonField(null=True, blank=True, srid=DEFAULT_SRID_RLP)
|
from konova.settings import DEFAULT_SRID
|
||||||
|
geom = MultiPolygonField(null=True, blank=True, srid=DEFAULT_SRID)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return str(self.id)
|
return str(self.id)
|
||||||
|
@ -11,4 +11,3 @@ BASE_TITLE = "KSP - Kompensationsverzeichnis Service Portal"
|
|||||||
BASE_FRONTEND_TITLE = "Kompensationsverzeichnis Service Portal"
|
BASE_FRONTEND_TITLE = "Kompensationsverzeichnis Service Portal"
|
||||||
TAB_TITLE_IDENTIFIER = "tab_title"
|
TAB_TITLE_IDENTIFIER = "tab_title"
|
||||||
HELP_LINK = "https://dienste.naturschutz.rlp.de/doku/doku.php?id=ksp:start"
|
HELP_LINK = "https://dienste.naturschutz.rlp.de/doku/doku.php?id=ksp:start"
|
||||||
IMPRESSUM_LINK = "https://naturschutz.rlp.de/index.php?q=impressum"
|
|
||||||
|
@ -430,13 +430,15 @@ class BaseTestCase(TestCase):
|
|||||||
self.assertTrue(True)
|
self.assertTrue(True)
|
||||||
return
|
return
|
||||||
|
|
||||||
tolerance = 0.001
|
|
||||||
if geom1.srid != geom2.srid:
|
if geom1.srid != geom2.srid:
|
||||||
|
tolerance = 0.001
|
||||||
# Due to prior possible transformation of any of these geometries, we need to make sure there exists a
|
# Due to prior possible transformation of any of these geometries, we need to make sure there exists a
|
||||||
# transformation from one coordinate system into the other, which is valid
|
# transformation from one coordinate system into the other, which is valid
|
||||||
geom1.transform(geom2.srid)
|
geom1_t = geom1.transform(geom2.srid, clone=True)
|
||||||
geom2.transform(geom1.srid)
|
geom2_t = geom2.transform(geom1.srid, clone=True)
|
||||||
self.assertTrue(geom1.equals_exact(geom2, tolerance) or geom2.equals_exact(geom1, tolerance))
|
self.assertTrue(geom1_t.equals_exact(geom2, tolerance) or geom2_t.equals_exact(geom1, tolerance))
|
||||||
|
else:
|
||||||
|
self.assertTrue(geom1.equals(geom2))
|
||||||
|
|
||||||
|
|
||||||
class BaseViewTestCase(BaseTestCase):
|
class BaseViewTestCase(BaseTestCase):
|
||||||
|
Binary file not shown.
@ -26,7 +26,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-06-27 14:23+0200\n"
|
"POT-Creation-Date: 2022-05-31 13:05+0200\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"
|
||||||
@ -40,19 +40,11 @@ msgstr ""
|
|||||||
msgid "From"
|
msgid "From"
|
||||||
msgstr "Vom"
|
msgstr "Vom"
|
||||||
|
|
||||||
#: analysis/forms.py:25
|
#: analysis/forms.py:36
|
||||||
msgid "Entries created from..."
|
|
||||||
msgstr "Einträge erstellt seit..."
|
|
||||||
|
|
||||||
#: analysis/forms.py:37
|
|
||||||
msgid "To"
|
msgid "To"
|
||||||
msgstr "Bis"
|
msgstr "Bis"
|
||||||
|
|
||||||
#: analysis/forms.py:38
|
#: analysis/forms.py:47 compensation/forms/forms.py:77
|
||||||
msgid "Entries created until..."
|
|
||||||
msgstr "Einträge erstellt bis..."
|
|
||||||
|
|
||||||
#: analysis/forms.py:49 compensation/forms/forms.py:77
|
|
||||||
#: compensation/templates/compensation/detail/eco_account/view.html:59
|
#: compensation/templates/compensation/detail/eco_account/view.html:59
|
||||||
#: compensation/templates/compensation/report/eco_account/report.html:16
|
#: compensation/templates/compensation/report/eco_account/report.html:16
|
||||||
#: compensation/utils/quality.py:100 ema/templates/ema/detail/view.html:49
|
#: compensation/utils/quality.py:100 ema/templates/ema/detail/view.html:49
|
||||||
@ -64,11 +56,11 @@ msgstr "Einträge erstellt bis..."
|
|||||||
msgid "Conservation office"
|
msgid "Conservation office"
|
||||||
msgstr "Eintragungsstelle"
|
msgstr "Eintragungsstelle"
|
||||||
|
|
||||||
#: analysis/forms.py:51 compensation/forms/forms.py:79
|
#: analysis/forms.py:49 compensation/forms/forms.py:79
|
||||||
msgid "Select the responsible office"
|
msgid "Select the responsible office"
|
||||||
msgstr "Verantwortliche Stelle"
|
msgstr "Verantwortliche Stelle"
|
||||||
|
|
||||||
#: analysis/forms.py:60 compensation/forms/forms.py:88
|
#: analysis/forms.py:58 compensation/forms/forms.py:88
|
||||||
#: compensation/forms/forms.py:118 compensation/forms/forms.py:199
|
#: compensation/forms/forms.py:118 compensation/forms/forms.py:199
|
||||||
#: intervention/forms/forms.py:64 intervention/forms/forms.py:81
|
#: intervention/forms/forms.py:64 intervention/forms/forms.py:81
|
||||||
#: intervention/forms/forms.py:97 intervention/forms/forms.py:113
|
#: intervention/forms/forms.py:97 intervention/forms/forms.py:113
|
||||||
@ -77,15 +69,15 @@ msgstr "Verantwortliche Stelle"
|
|||||||
msgid "Click for selection"
|
msgid "Click for selection"
|
||||||
msgstr "Auswählen..."
|
msgstr "Auswählen..."
|
||||||
|
|
||||||
#: analysis/forms.py:67
|
#: analysis/forms.py:65
|
||||||
msgid "Generate report"
|
msgid "Generate report"
|
||||||
msgstr "Bericht generieren"
|
msgstr "Bericht generieren"
|
||||||
|
|
||||||
#: analysis/forms.py:68
|
#: analysis/forms.py:66
|
||||||
msgid "Select a timespan and the desired conservation office"
|
msgid "Select a timespan and the desired conservation office"
|
||||||
msgstr "Wählen Sie die Zeitspanne und die gewünschte Eintragungsstelle"
|
msgstr "Wählen Sie die Zeitspanne und die gewünschte Eintragungsstelle"
|
||||||
|
|
||||||
#: analysis/forms.py:71 konova/forms.py:227
|
#: analysis/forms.py:69 konova/forms.py:227
|
||||||
msgid "Continue"
|
msgid "Continue"
|
||||||
msgstr "Weiter"
|
msgstr "Weiter"
|
||||||
|
|
||||||
@ -143,29 +135,9 @@ msgid "Area of responsibility"
|
|||||||
msgstr "Zuständigkeitsbereich"
|
msgstr "Zuständigkeitsbereich"
|
||||||
|
|
||||||
#: analysis/templates/analysis/reports/includes/compensation/amount.html:18
|
#: analysis/templates/analysis/reports/includes/compensation/amount.html:18
|
||||||
#: analysis/templates/analysis/reports/includes/compensation/amount.html:47
|
|
||||||
#: analysis/templates/analysis/reports/includes/eco_account/amount.html:13
|
|
||||||
#: analysis/templates/analysis/reports/includes/eco_account/deductions.html:13
|
|
||||||
#: analysis/templates/analysis/reports/includes/eco_account/deductions.html:14
|
|
||||||
#: analysis/templates/analysis/reports/includes/intervention/amount.html:17
|
#: analysis/templates/analysis/reports/includes/intervention/amount.html:17
|
||||||
#: analysis/templates/analysis/reports/includes/intervention/compensated_by.html:8
|
#: analysis/templates/analysis/reports/includes/intervention/compensated_by.html:8
|
||||||
#: analysis/templates/analysis/reports/includes/intervention/laws.html:17
|
#: analysis/templates/analysis/reports/includes/intervention/laws.html:17
|
||||||
#: analysis/templates/analysis/reports/includes/intervention/laws.html:43
|
|
||||||
#: analysis/templates/analysis/reports/includes/old_data/amount.html:18
|
|
||||||
#: konova/templates/konova/includes/quickstart/compensations.html:16
|
|
||||||
#: konova/templates/konova/includes/quickstart/ecoaccounts.html:16
|
|
||||||
#: konova/templates/konova/includes/quickstart/interventions.html:16
|
|
||||||
msgid "Total"
|
|
||||||
msgstr "Insgesamt"
|
|
||||||
|
|
||||||
#: analysis/templates/analysis/reports/includes/compensation/amount.html:19
|
|
||||||
msgid "Number single areas"
|
|
||||||
msgstr "Einzelflächen"
|
|
||||||
|
|
||||||
#: analysis/templates/analysis/reports/includes/compensation/amount.html:20
|
|
||||||
#: analysis/templates/analysis/reports/includes/intervention/amount.html:18
|
|
||||||
#: analysis/templates/analysis/reports/includes/intervention/compensated_by.html:9
|
|
||||||
#: analysis/templates/analysis/reports/includes/intervention/laws.html:20
|
|
||||||
#: compensation/tables.py:38
|
#: compensation/tables.py:38
|
||||||
#: compensation/templates/compensation/detail/compensation/view.html:74
|
#: compensation/templates/compensation/detail/compensation/view.html:74
|
||||||
#: intervention/tables.py:38
|
#: intervention/tables.py:38
|
||||||
@ -174,14 +146,14 @@ msgstr "Einzelflächen"
|
|||||||
msgid "Checked"
|
msgid "Checked"
|
||||||
msgstr "Geprüft"
|
msgstr "Geprüft"
|
||||||
|
|
||||||
#: analysis/templates/analysis/reports/includes/compensation/amount.html:21
|
#: analysis/templates/analysis/reports/includes/compensation/amount.html:19
|
||||||
#: analysis/templates/analysis/reports/includes/eco_account/amount.html:14
|
#: analysis/templates/analysis/reports/includes/eco_account/amount.html:13
|
||||||
#: analysis/templates/analysis/reports/includes/eco_account/deductions.html:15
|
#: analysis/templates/analysis/reports/includes/eco_account/deductions.html:8
|
||||||
#: analysis/templates/analysis/reports/includes/eco_account/deductions.html:16
|
#: analysis/templates/analysis/reports/includes/eco_account/deductions.html:9
|
||||||
#: analysis/templates/analysis/reports/includes/intervention/amount.html:19
|
#: analysis/templates/analysis/reports/includes/intervention/amount.html:18
|
||||||
#: analysis/templates/analysis/reports/includes/intervention/compensated_by.html:10
|
#: analysis/templates/analysis/reports/includes/intervention/compensated_by.html:9
|
||||||
#: analysis/templates/analysis/reports/includes/intervention/laws.html:23
|
#: analysis/templates/analysis/reports/includes/intervention/laws.html:20
|
||||||
#: analysis/templates/analysis/reports/includes/old_data/amount.html:19
|
#: analysis/templates/analysis/reports/includes/old_data/amount.html:18
|
||||||
#: compensation/tables.py:44 compensation/tables.py:219
|
#: compensation/tables.py:44 compensation/tables.py:219
|
||||||
#: compensation/templates/compensation/detail/compensation/view.html:93
|
#: compensation/templates/compensation/detail/compensation/view.html:93
|
||||||
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:31
|
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:31
|
||||||
@ -193,6 +165,26 @@ msgstr "Geprüft"
|
|||||||
msgid "Recorded"
|
msgid "Recorded"
|
||||||
msgstr "Verzeichnet"
|
msgstr "Verzeichnet"
|
||||||
|
|
||||||
|
#: analysis/templates/analysis/reports/includes/compensation/amount.html:20
|
||||||
|
msgid "Number single areas"
|
||||||
|
msgstr "Einzelflächen"
|
||||||
|
|
||||||
|
#: analysis/templates/analysis/reports/includes/compensation/amount.html:21
|
||||||
|
#: analysis/templates/analysis/reports/includes/compensation/amount.html:47
|
||||||
|
#: analysis/templates/analysis/reports/includes/eco_account/amount.html:14
|
||||||
|
#: analysis/templates/analysis/reports/includes/eco_account/deductions.html:10
|
||||||
|
#: analysis/templates/analysis/reports/includes/eco_account/deductions.html:11
|
||||||
|
#: analysis/templates/analysis/reports/includes/intervention/amount.html:19
|
||||||
|
#: analysis/templates/analysis/reports/includes/intervention/compensated_by.html:10
|
||||||
|
#: analysis/templates/analysis/reports/includes/intervention/laws.html:23
|
||||||
|
#: analysis/templates/analysis/reports/includes/intervention/laws.html:43
|
||||||
|
#: analysis/templates/analysis/reports/includes/old_data/amount.html:19
|
||||||
|
#: konova/templates/konova/includes/quickstart/compensations.html:16
|
||||||
|
#: konova/templates/konova/includes/quickstart/ecoaccounts.html:16
|
||||||
|
#: konova/templates/konova/includes/quickstart/interventions.html:16
|
||||||
|
msgid "Total"
|
||||||
|
msgstr "Insgesamt"
|
||||||
|
|
||||||
#: analysis/templates/analysis/reports/includes/compensation/amount.html:26
|
#: analysis/templates/analysis/reports/includes/compensation/amount.html:26
|
||||||
msgid "Conservation office by law"
|
msgid "Conservation office by law"
|
||||||
msgstr "Naturschutzbehörde (§17 Abs.3 BNatSchG)"
|
msgstr "Naturschutzbehörde (§17 Abs.3 BNatSchG)"
|
||||||
@ -221,18 +213,8 @@ msgstr "Ökokonten"
|
|||||||
msgid "Deductions"
|
msgid "Deductions"
|
||||||
msgstr "Abbuchungen"
|
msgstr "Abbuchungen"
|
||||||
|
|
||||||
#: analysis/templates/analysis/reports/includes/eco_account/deductions.html:5
|
#: analysis/templates/analysis/reports/includes/eco_account/deductions.html:9
|
||||||
msgid ""
|
#: analysis/templates/analysis/reports/includes/eco_account/deductions.html:11
|
||||||
"\n"
|
|
||||||
" Recorded = Counts the deductions whose interventions have been recorded\n"
|
|
||||||
" "
|
|
||||||
msgstr ""
|
|
||||||
"\n"
|
|
||||||
"Verzeichnet = Anzahl der Abbuchungen welche zu bereits verzeichneten "
|
|
||||||
"Eingriffen gehören "
|
|
||||||
|
|
||||||
#: analysis/templates/analysis/reports/includes/eco_account/deductions.html:14
|
|
||||||
#: analysis/templates/analysis/reports/includes/eco_account/deductions.html:16
|
|
||||||
#: compensation/forms/modalForms.py:187
|
#: compensation/forms/modalForms.py:187
|
||||||
#: compensation/templates/compensation/detail/compensation/includes/states-after.html:36
|
#: compensation/templates/compensation/detail/compensation/includes/states-after.html:36
|
||||||
#: compensation/templates/compensation/detail/compensation/includes/states-before.html:36
|
#: compensation/templates/compensation/detail/compensation/includes/states-before.html:36
|
||||||
@ -325,8 +307,8 @@ msgid "Old interventions"
|
|||||||
msgstr "Altfälle"
|
msgstr "Altfälle"
|
||||||
|
|
||||||
#: analysis/templates/analysis/reports/includes/old_data/card_old_interventions.html:13
|
#: analysis/templates/analysis/reports/includes/old_data/card_old_interventions.html:13
|
||||||
msgid "Binding date before"
|
msgid "Before"
|
||||||
msgstr "Bestandskraft- bzw. Rechtskraftdatum vor"
|
msgstr "Vor"
|
||||||
|
|
||||||
#: compensation/filters.py:122
|
#: compensation/filters.py:122
|
||||||
msgid "Show only unrecorded"
|
msgid "Show only unrecorded"
|
||||||
@ -433,7 +415,6 @@ msgid "Company Mustermann"
|
|||||||
msgstr "Firma Mustermann"
|
msgstr "Firma Mustermann"
|
||||||
|
|
||||||
#: compensation/forms/forms.py:143
|
#: compensation/forms/forms.py:143
|
||||||
#: compensation/templates/compensation/report/compensation/report.html:34
|
|
||||||
msgid "Is CEF"
|
msgid "Is CEF"
|
||||||
msgstr "Ist CEF-Maßnahme"
|
msgstr "Ist CEF-Maßnahme"
|
||||||
|
|
||||||
@ -442,7 +423,6 @@ msgid "Optionally: Whether this compensation is a CEF compensation?"
|
|||||||
msgstr "Optional: Handelt es sich um eine CEF-Maßnahme?"
|
msgstr "Optional: Handelt es sich um eine CEF-Maßnahme?"
|
||||||
|
|
||||||
#: compensation/forms/forms.py:156
|
#: compensation/forms/forms.py:156
|
||||||
#: compensation/templates/compensation/report/compensation/report.html:44
|
|
||||||
msgid "Is coherence keeping"
|
msgid "Is coherence keeping"
|
||||||
msgstr "Ist Kohärenzsicherungsmaßnahme"
|
msgstr "Ist Kohärenzsicherungsmaßnahme"
|
||||||
|
|
||||||
@ -454,10 +434,7 @@ msgstr "Optional: Handelt es sich um eine Kohärenzsicherungsmaßnahme?"
|
|||||||
#: compensation/forms/forms.py:169
|
#: compensation/forms/forms.py:169
|
||||||
#: compensation/templates/compensation/detail/compensation/view.html:44
|
#: compensation/templates/compensation/detail/compensation/view.html:44
|
||||||
#: compensation/templates/compensation/detail/eco_account/view.html:75
|
#: compensation/templates/compensation/detail/eco_account/view.html:75
|
||||||
#: compensation/templates/compensation/report/compensation/report.html:24
|
|
||||||
#: compensation/templates/compensation/report/eco_account/report.html:24
|
|
||||||
#: ema/templates/ema/detail/view.html:61
|
#: ema/templates/ema/detail/view.html:61
|
||||||
#: ema/templates/ema/report/report.html:24
|
|
||||||
msgid "Is PIK"
|
msgid "Is PIK"
|
||||||
msgstr "Ist PIK Maßnahme"
|
msgstr "Ist PIK Maßnahme"
|
||||||
|
|
||||||
@ -696,14 +673,14 @@ msgstr ""
|
|||||||
msgid "Pieces"
|
msgid "Pieces"
|
||||||
msgstr "Stück"
|
msgstr "Stück"
|
||||||
|
|
||||||
#: compensation/models/eco_account.py:55
|
#: compensation/models/eco_account.py:56
|
||||||
msgid ""
|
msgid ""
|
||||||
"Deductable surface can not be larger than existing surfaces in after states"
|
"Deductable surface can not be larger than existing surfaces in after states"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Die abbuchbare Fläche darf die Gesamtfläche der Zielzustände nicht "
|
"Die abbuchbare Fläche darf die Gesamtfläche der Zielzustände nicht "
|
||||||
"überschreiten"
|
"überschreiten"
|
||||||
|
|
||||||
#: compensation/models/eco_account.py:62
|
#: compensation/models/eco_account.py:63
|
||||||
msgid ""
|
msgid ""
|
||||||
"Deductable surface can not be smaller than the sum of already existing "
|
"Deductable surface can not be smaller than the sum of already existing "
|
||||||
"deductions. Please contact the responsible users for the deductions!"
|
"deductions. Please contact the responsible users for the deductions!"
|
||||||
@ -995,12 +972,7 @@ msgstr "Fehlende Flächenmengen laut Zielzustand: "
|
|||||||
#: compensation/templates/compensation/detail/compensation/view.html:57
|
#: compensation/templates/compensation/detail/compensation/view.html:57
|
||||||
#: compensation/templates/compensation/detail/compensation/view.html:67
|
#: compensation/templates/compensation/detail/compensation/view.html:67
|
||||||
#: compensation/templates/compensation/detail/eco_account/view.html:78
|
#: compensation/templates/compensation/detail/eco_account/view.html:78
|
||||||
#: compensation/templates/compensation/report/compensation/report.html:27
|
|
||||||
#: compensation/templates/compensation/report/compensation/report.html:37
|
|
||||||
#: compensation/templates/compensation/report/compensation/report.html:47
|
|
||||||
#: compensation/templates/compensation/report/eco_account/report.html:27
|
|
||||||
#: ema/templates/ema/detail/view.html:64
|
#: ema/templates/ema/detail/view.html:64
|
||||||
#: ema/templates/ema/report/report.html:27
|
|
||||||
#: venv/lib/python3.7/site-packages/django/forms/widgets.py:710
|
#: venv/lib/python3.7/site-packages/django/forms/widgets.py:710
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
msgstr "Ja"
|
msgstr "Ja"
|
||||||
@ -1009,12 +981,7 @@ msgstr "Ja"
|
|||||||
#: compensation/templates/compensation/detail/compensation/view.html:59
|
#: compensation/templates/compensation/detail/compensation/view.html:59
|
||||||
#: compensation/templates/compensation/detail/compensation/view.html:69
|
#: compensation/templates/compensation/detail/compensation/view.html:69
|
||||||
#: compensation/templates/compensation/detail/eco_account/view.html:80
|
#: compensation/templates/compensation/detail/eco_account/view.html:80
|
||||||
#: compensation/templates/compensation/report/compensation/report.html:29
|
|
||||||
#: compensation/templates/compensation/report/compensation/report.html:39
|
|
||||||
#: compensation/templates/compensation/report/compensation/report.html:49
|
|
||||||
#: compensation/templates/compensation/report/eco_account/report.html:29
|
|
||||||
#: ema/templates/ema/detail/view.html:66
|
#: ema/templates/ema/detail/view.html:66
|
||||||
#: ema/templates/ema/report/report.html:29
|
|
||||||
#: venv/lib/python3.7/site-packages/django/forms/widgets.py:711
|
#: venv/lib/python3.7/site-packages/django/forms/widgets.py:711
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr "Nein"
|
msgstr "Nein"
|
||||||
@ -1051,10 +1018,10 @@ msgstr "Verzeichnet am"
|
|||||||
|
|
||||||
#: compensation/templates/compensation/detail/compensation/view.html:107
|
#: compensation/templates/compensation/detail/compensation/view.html:107
|
||||||
#: compensation/templates/compensation/detail/eco_account/view.html:85
|
#: compensation/templates/compensation/detail/eco_account/view.html:85
|
||||||
#: compensation/templates/compensation/report/compensation/report.html:54
|
#: compensation/templates/compensation/report/compensation/report.html:24
|
||||||
#: compensation/templates/compensation/report/eco_account/report.html:47
|
#: compensation/templates/compensation/report/eco_account/report.html:37
|
||||||
#: 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:24
|
||||||
#: intervention/templates/intervention/detail/view.html:113
|
#: intervention/templates/intervention/detail/view.html:113
|
||||||
#: intervention/templates/intervention/report/report.html:87
|
#: intervention/templates/intervention/report/report.html:87
|
||||||
msgid "Last modified"
|
msgid "Last modified"
|
||||||
@ -1156,11 +1123,11 @@ msgstr "Maßnahmenträger"
|
|||||||
msgid "Report"
|
msgid "Report"
|
||||||
msgstr "Bericht"
|
msgstr "Bericht"
|
||||||
|
|
||||||
#: compensation/templates/compensation/report/eco_account/report.html:34
|
#: compensation/templates/compensation/report/eco_account/report.html:24
|
||||||
msgid "Deductions for"
|
msgid "Deductions for"
|
||||||
msgstr "Abbuchungen für"
|
msgstr "Abbuchungen für"
|
||||||
|
|
||||||
#: compensation/templates/compensation/report/eco_account/report.html:42
|
#: compensation/templates/compensation/report/eco_account/report.html:32
|
||||||
#: intervention/templates/intervention/report/report.html:53
|
#: intervention/templates/intervention/report/report.html:53
|
||||||
#: intervention/templates/intervention/report/report.html:74
|
#: intervention/templates/intervention/report/report.html:74
|
||||||
msgid "None"
|
msgid "None"
|
||||||
@ -1549,18 +1516,6 @@ msgstr "Eingriffsverursacher"
|
|||||||
msgid "Exists"
|
msgid "Exists"
|
||||||
msgstr "vorhanden"
|
msgstr "vorhanden"
|
||||||
|
|
||||||
#: intervention/templates/intervention/detail/view.html:138
|
|
||||||
msgid ""
|
|
||||||
"The data must be shared with you, if you want to see which other users have "
|
|
||||||
"shared access as well."
|
|
||||||
msgstr ""
|
|
||||||
"Die Daten müssen für Sie freigegeben sein, damit Sie sehen können welche weiteren Nutzern "
|
|
||||||
"ebenfalls Zugriff hierauf haben."
|
|
||||||
|
|
||||||
#: intervention/templates/intervention/detail/view.html:140
|
|
||||||
msgid "other users"
|
|
||||||
msgstr "weitere Nutzer"
|
|
||||||
|
|
||||||
#: intervention/templates/intervention/report/report.html:58
|
#: intervention/templates/intervention/report/report.html:58
|
||||||
msgid "Deductions of eco-accounts"
|
msgid "Deductions of eco-accounts"
|
||||||
msgstr "Abbuchungen von Ökokonten"
|
msgstr "Abbuchungen von Ökokonten"
|
||||||
@ -1883,7 +1838,7 @@ msgstr "In Zwischenablage kopiert"
|
|||||||
|
|
||||||
#: konova/templates/konova/widgets/tree/checkbox/checkbox-tree-select.html:4
|
#: konova/templates/konova/widgets/tree/checkbox/checkbox-tree-select.html:4
|
||||||
#: konova/templates/konova/widgets/tree/radio/radio-tree-select.html:4
|
#: konova/templates/konova/widgets/tree/radio/radio-tree-select.html:4
|
||||||
#: templates/generic_index.html:58
|
#: templates/generic_index.html:56
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Suchen"
|
msgstr "Suchen"
|
||||||
|
|
||||||
@ -2475,31 +2430,31 @@ msgstr ""
|
|||||||
msgid "Fields with * are required."
|
msgid "Fields with * are required."
|
||||||
msgstr "* sind Pflichtfelder."
|
msgstr "* sind Pflichtfelder."
|
||||||
|
|
||||||
#: templates/generic_index.html:41
|
#: templates/generic_index.html:39
|
||||||
msgid "New entry"
|
msgid "New entry"
|
||||||
msgstr "Neuer Eintrag"
|
msgstr "Neuer Eintrag"
|
||||||
|
|
||||||
#: templates/generic_index.html:43 user/templates/user/team/index.html:22
|
#: templates/generic_index.html:41 user/templates/user/team/index.html:22
|
||||||
msgid "New"
|
msgid "New"
|
||||||
msgstr "Neu"
|
msgstr "Neu"
|
||||||
|
|
||||||
#: templates/generic_index.html:58
|
#: templates/generic_index.html:56
|
||||||
msgid "Search for keywords"
|
msgid "Search for keywords"
|
||||||
msgstr "Nach Schlagwörtern suchen"
|
msgstr "Nach Schlagwörtern suchen"
|
||||||
|
|
||||||
#: templates/generic_index.html:59
|
#: templates/generic_index.html:57
|
||||||
msgid "Start search"
|
msgid "Start search"
|
||||||
msgstr "Starte Suche"
|
msgstr "Starte Suche"
|
||||||
|
|
||||||
#: templates/generic_index.html:71
|
#: templates/generic_index.html:69
|
||||||
msgid "Results per page"
|
msgid "Results per page"
|
||||||
msgstr "Treffer pro Seite"
|
msgstr "Treffer pro Seite"
|
||||||
|
|
||||||
#: templates/generic_index.html:95 templates/generic_index.html:120
|
#: templates/generic_index.html:93 templates/generic_index.html:118
|
||||||
msgid "Filter"
|
msgid "Filter"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/generic_index.html:122
|
#: templates/generic_index.html:120
|
||||||
msgid "Apply filter"
|
msgid "Apply filter"
|
||||||
msgstr "Filter anwenden"
|
msgstr "Filter anwenden"
|
||||||
|
|
||||||
@ -4345,9 +4300,6 @@ msgstr ""
|
|||||||
msgid "Unable to connect to qpid with SASL mechanism %s"
|
msgid "Unable to connect to qpid with SASL mechanism %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid "Before"
|
|
||||||
#~ msgstr "Vor"
|
|
||||||
|
|
||||||
#~ msgid "Groups"
|
#~ msgid "Groups"
|
||||||
#~ msgstr "Gruppen"
|
#~ msgstr "Gruppen"
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
<a href="{{ help_link }}" target="_blank">{% trans 'Help' %}</a>
|
<a href="{{ help_link }}" target="_blank">{% trans 'Help' %}</a>
|
||||||
</span>
|
</span>
|
||||||
<span class="col-sm-auto footer-link">
|
<span class="col-sm-auto footer-link">
|
||||||
<a href="{{ impressum_link }}" target="_blank">{% trans 'Impressum' %}</a>
|
<a href="{% url 'home' %}">{% trans 'Impressum' %}</a>
|
||||||
</span>
|
</span>
|
||||||
<span class="col-sm-auto footer-link">
|
<span class="col-sm-auto footer-link">
|
||||||
<a href="mailto:{{CONTACT_MAIL}}">{% trans 'Contact' %}</a>
|
<a href="mailto:{{CONTACT_MAIL}}">{% trans 'Contact' %}</a>
|
||||||
|
@ -14,15 +14,13 @@
|
|||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block body %}
|
{% block body %}
|
||||||
<div>
|
<div class="col-md">
|
||||||
{% if table.title %}
|
{% if table.title %}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md">
|
|
||||||
<h3>
|
<h3>
|
||||||
{{ table.title }}
|
{{ table.title }}
|
||||||
</h3>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
{% if table.subtitle %}
|
{% if table.subtitle %}
|
||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
<div class="col-lg">
|
<div class="col-lg">
|
||||||
|
Loading…
Reference in New Issue
Block a user