From 060ff5f4ad04526ffcec8ccfeb83e02b204d0e41 Mon Sep 17 00:00:00 2001 From: mpeltriaux Date: Mon, 18 Oct 2021 15:52:51 +0200 Subject: [PATCH] #26 Annual conservation report * introduces new app 'analysis' for annual report generating and future features * adds new templates (WIP) * adds new routes (WIP) --- analysis/__init__.py | 0 analysis/admin.py | 3 + analysis/apps.py | 5 + analysis/models.py | 3 + .../templates/analysis/reports/detail.html | 17 + .../reports/includes/card_compensation.html | 23 ++ .../reports/includes/card_eco_account.html | 23 ++ .../includes/card_old_interventions.html | 24 ++ .../reports/includes/intervention/amount.html | 30 ++ .../intervention/card_intervention.html | 26 ++ .../includes/intervention/compensated_by.html | 34 ++ .../reports/includes/intervention/laws.html | 50 +++ .../templates/analysis/reports/index.html | 8 + analysis/tests.py | 3 + analysis/urls.py | 15 + analysis/utils/report.py | 127 +++++++ analysis/views.py | 59 ++++ konova/sub_settings/django_settings.py | 1 + konova/urls.py | 3 +- locale/de/LC_MESSAGES/django.mo | Bin 24781 -> 25176 bytes locale/de/LC_MESSAGES/django.po | 311 +++++++++++------- templates/navbars/navbar.html | 2 +- 22 files changed, 641 insertions(+), 126 deletions(-) create mode 100644 analysis/__init__.py create mode 100644 analysis/admin.py create mode 100644 analysis/apps.py create mode 100644 analysis/models.py create mode 100644 analysis/templates/analysis/reports/detail.html create mode 100644 analysis/templates/analysis/reports/includes/card_compensation.html create mode 100644 analysis/templates/analysis/reports/includes/card_eco_account.html create mode 100644 analysis/templates/analysis/reports/includes/card_old_interventions.html create mode 100644 analysis/templates/analysis/reports/includes/intervention/amount.html create mode 100644 analysis/templates/analysis/reports/includes/intervention/card_intervention.html create mode 100644 analysis/templates/analysis/reports/includes/intervention/compensated_by.html create mode 100644 analysis/templates/analysis/reports/includes/intervention/laws.html create mode 100644 analysis/templates/analysis/reports/index.html create mode 100644 analysis/tests.py create mode 100644 analysis/urls.py create mode 100644 analysis/utils/report.py create mode 100644 analysis/views.py diff --git a/analysis/__init__.py b/analysis/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/analysis/admin.py b/analysis/admin.py new file mode 100644 index 00000000..8c38f3f3 --- /dev/null +++ b/analysis/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/analysis/apps.py b/analysis/apps.py new file mode 100644 index 00000000..126ab0e5 --- /dev/null +++ b/analysis/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class AnalysisConfig(AppConfig): + name = 'analysis' diff --git a/analysis/models.py b/analysis/models.py new file mode 100644 index 00000000..71a83623 --- /dev/null +++ b/analysis/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/analysis/templates/analysis/reports/detail.html b/analysis/templates/analysis/reports/detail.html new file mode 100644 index 00000000..219ad46d --- /dev/null +++ b/analysis/templates/analysis/reports/detail.html @@ -0,0 +1,17 @@ +{% extends 'base.html' %} +{% load i18n fontawesome_5 %} + +{% block body %} +
+
+

{% trans 'Report' %}

+
{{office.long_name}}
+
+
+
+ {% include 'analysis/reports/includes/intervention/card_intervention.html' %} + {% include 'analysis/reports/includes/card_compensation.html' %} + {% include 'analysis/reports/includes/card_eco_account.html' %} + {% include 'analysis/reports/includes/card_old_interventions.html' %} +
+{% endblock %} \ No newline at end of file diff --git a/analysis/templates/analysis/reports/includes/card_compensation.html b/analysis/templates/analysis/reports/includes/card_compensation.html new file mode 100644 index 00000000..24d0eabf --- /dev/null +++ b/analysis/templates/analysis/reports/includes/card_compensation.html @@ -0,0 +1,23 @@ +{% load i18n fontawesome_5 %} + +
+
+
+
+
+
+
+ {% fa5_icon 'leaf' %} + {% trans 'Compensations' %} +
+
+
+
+
+
+ {% include 'form/table/generic_table_form_body.html' %} +
+
+
+
+
\ No newline at end of file diff --git a/analysis/templates/analysis/reports/includes/card_eco_account.html b/analysis/templates/analysis/reports/includes/card_eco_account.html new file mode 100644 index 00000000..744ce07f --- /dev/null +++ b/analysis/templates/analysis/reports/includes/card_eco_account.html @@ -0,0 +1,23 @@ +{% load i18n fontawesome_5 %} + +
+
+
+
+
+
+
+ {% fa5_icon 'tree' %} + {% trans 'Eco-Accounts' %} +
+
+
+
+
+
+ {% include 'form/table/generic_table_form_body.html' %} +
+
+
+
+
\ No newline at end of file diff --git a/analysis/templates/analysis/reports/includes/card_old_interventions.html b/analysis/templates/analysis/reports/includes/card_old_interventions.html new file mode 100644 index 00000000..400d0085 --- /dev/null +++ b/analysis/templates/analysis/reports/includes/card_old_interventions.html @@ -0,0 +1,24 @@ +{% load i18n fontawesome_5 %} + +
+
+
+
+
+
+
+ {% fa5_icon 'pencil-ruler' %} + {% trans 'Old interventions' %} +
+ {% trans 'Before' %} 16.06.2018 +
+
+
+
+
+ {% include 'form/table/generic_table_form_body.html' %} +
+
+
+
+
\ No newline at end of file diff --git a/analysis/templates/analysis/reports/includes/intervention/amount.html b/analysis/templates/analysis/reports/includes/intervention/amount.html new file mode 100644 index 00000000..a146d4b2 --- /dev/null +++ b/analysis/templates/analysis/reports/includes/intervention/amount.html @@ -0,0 +1,30 @@ +{% load i18n fontawesome_5 %} + +

{% trans 'Amount' %}

+ + {% blocktrans %} + Checked = Has been checked by the registration office according to LKompVzVo + {% endblocktrans %} +
+ {% blocktrans %} + Recorded = Has been checked and published by the conservation office + {% endblocktrans %} +
+
+ + + + + + + + + + + + + + + +
{% trans 'Total' %}{% fa5_icon 'star' %} {% trans 'Checked' %}{% fa5_icon 'bookmark' %} {% trans 'Recorded' %}
{{report.intervention_report.queryset.count}}{{report.intervention_report.queryset_checked.count}}{{report.intervention_report.queryset_recorded.count}}
+
\ No newline at end of file diff --git a/analysis/templates/analysis/reports/includes/intervention/card_intervention.html b/analysis/templates/analysis/reports/includes/intervention/card_intervention.html new file mode 100644 index 00000000..13c22892 --- /dev/null +++ b/analysis/templates/analysis/reports/includes/intervention/card_intervention.html @@ -0,0 +1,26 @@ +{% load i18n fontawesome_5 %} +
+
+
+
+
+
+
+ {% fa5_icon 'pencil-ruler' %} + {% trans 'Interventions' %} +
+
+
+
+
+
+ {% include 'analysis/reports/includes/intervention/amount.html' %} +
+ {% include 'analysis/reports/includes/intervention/laws.html' %} +
+ {% include 'analysis/reports/includes/intervention/compensated_by.html' %} +
+
+
+
+
\ No newline at end of file diff --git a/analysis/templates/analysis/reports/includes/intervention/compensated_by.html b/analysis/templates/analysis/reports/includes/intervention/compensated_by.html new file mode 100644 index 00000000..87dfc570 --- /dev/null +++ b/analysis/templates/analysis/reports/includes/intervention/compensated_by.html @@ -0,0 +1,34 @@ +{% load i18n fontawesome_5 %} +

{% trans 'Compensated by' %}

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{% trans 'Compensation type' %}{% trans 'Total' %}{% trans 'Checked' %}{% trans 'Recorded' %}
{% trans 'Compensation' %}{{report.intervention_report.compensation_sum}}{{report.intervention_report.compensation_sum_checked}}{{report.intervention_report.compensation_sum_recorded}}
{% trans 'Payment' %}{{report.intervention_report.payment_sum}}{{report.intervention_report.payment_sum_checked}}{{report.intervention_report.payment_sum_recorded}}
{% trans 'Deductions' %}{{report.intervention_report.deduction_sum}}{{report.intervention_report.deduction_sum_checked}}{{report.intervention_report.deduction_sum_recorded}}
+
\ No newline at end of file diff --git a/analysis/templates/analysis/reports/includes/intervention/laws.html b/analysis/templates/analysis/reports/includes/intervention/laws.html new file mode 100644 index 00000000..d373c681 --- /dev/null +++ b/analysis/templates/analysis/reports/includes/intervention/laws.html @@ -0,0 +1,50 @@ +{% load i18n fontawesome_5 %} +

{% trans 'Law usage' %}

+ + {% blocktrans %} + Please note: One intervention can be based on multiple laws. This table therefore does not + count + {% endblocktrans %} + +
+ + + + + + + + + + + {% for law in report.intervention_report.evaluated_laws %} + + + + + + + {% endfor %} + + + + + + + +
+ {% trans 'Law' %} + + {% trans 'Checked' %} + + {% trans 'Recorded' %} + + {% trans 'Total' %} +
+ {{law.short_name}} +
+ + {{law.long_name}} + +
{{law.num_checked}}{{law.num_recorded}}{{law.num}}
{% trans 'Total' %}{{report.intervention_report.law_sum_checked}}{{report.intervention_report.law_sum_recorded}}{{report.intervention_report.law_sum}}
+
\ No newline at end of file diff --git a/analysis/templates/analysis/reports/index.html b/analysis/templates/analysis/reports/index.html new file mode 100644 index 00000000..4f7d8bd0 --- /dev/null +++ b/analysis/templates/analysis/reports/index.html @@ -0,0 +1,8 @@ +{% extends 'base.html' %} +{% load i18n fontawesome_5 %} + +{% block body %} +
+

{% trans 'Reports' %}

+
+{% endblock %} \ No newline at end of file diff --git a/analysis/tests.py b/analysis/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/analysis/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/analysis/urls.py b/analysis/urls.py new file mode 100644 index 00000000..71eb6665 --- /dev/null +++ b/analysis/urls.py @@ -0,0 +1,15 @@ +""" +Author: Michel Peltriaux +Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany +Contact: michel.peltriaux@sgdnord.rlp.de +Created on: 15.10.21 + +""" +from django.urls import path +from analysis.views import * + +app_name = "analysis" +urlpatterns = [ + path("reports/", index_reports_view, name="reports"), + path("reports/", detail_report_view, name="report-detail"), +] \ No newline at end of file diff --git a/analysis/utils/report.py b/analysis/utils/report.py new file mode 100644 index 00000000..fbc88520 --- /dev/null +++ b/analysis/utils/report.py @@ -0,0 +1,127 @@ +""" +Author: Michel Peltriaux +Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany +Contact: michel.peltriaux@sgdnord.rlp.de +Created on: 18.10.21 + +""" +from django.db.models import Count, Sum, Q + +from codelist.models import KonovaCode +from codelist.settings import CODELIST_LAW_ID +from compensation.models import Compensation, Payment, EcoAccountDeduction +from intervention.models import Intervention + + +class TimespanReport: + office_id = -1 + + class InterventionReport: + queryset = Intervention.objects.none() + queryset_checked = Intervention.objects.none() + queryset_recorded = Intervention.objects.none() + + # Law related + law_sum = -1 + law_sum_checked = -1 + law_sum_recorded = -1 + evaluated_laws = None + + # Compensations related + compensation_sum = -1 + compensation_sum_checked = -1 + compensation_sum_recorded = -1 + payment_sum = -1 + payment_sum_checked = -1 + payment_sum_recorded = -1 + deduction_sum = -1 + deduction_sum_checked = -1 + deduction_sum_recorded = -1 + + def __init__(self, id: str): + self.queryset = Intervention.objects.filter( + responsible__conservation_office__id=id, + deleted=None, + ) + self.queryset_checked = self.queryset.filter( + checked__isnull=False + ) + self.queryset_recorded = self.queryset.filter( + recorded__isnull=False + ) + self._create_report() + + def _create_report(self): + """ Creates all report information + + Returns: + + """ + self._evaluate_laws() + self._evaluate_compensations() + + def _evaluate_laws(self): + """ Analyzes the intervention-law distribution + + Returns: + + """ + # Count interventions based on law + # Fetch all KonovaCodes for laws, sorted alphabetically + laws = KonovaCode.objects.filter( + is_archived=False, + is_leaf=True, + code_lists__in=[CODELIST_LAW_ID], + ).order_by( + "long_name" + ) + # Fetch all law ids which are used by any .legal object of an intervention object + intervention_laws_total = self.queryset.values_list("legal__laws__id") + intervention_laws_checked = self.queryset.filter(checked__isnull=False).values_list("legal__laws__id") + intervention_laws_recorded = self.queryset.filter(recorded__isnull=False).values_list( + "legal__laws__id") + # Count how often which law id appears in the above list, return only the long_name of the law and the resulting + # count (here 'num'). This is for keeping the db fetch as small as possible + # Compute the sum for total, checked and recorded + self.evaluated_laws = laws.annotate( + num=Count("id", filter=Q(id__in=intervention_laws_total)), + num_checked=Count("id", filter=Q(id__in=intervention_laws_checked)), + num_recorded=Count("id", filter=Q(id__in=intervention_laws_recorded)), + ).values_list("short_name", "long_name", "num_checked", "num_recorded", "num", named=True) + self.law_sum = self.evaluated_laws.aggregate(sum_num=Sum("num"))["sum_num"] + self.law_sum_checked = self.evaluated_laws.aggregate(sum_num_checked=Sum("num_checked"))["sum_num_checked"] + self.law_sum_recorded = self.evaluated_laws.aggregate(sum_num_recorded=Sum("num_recorded"))["sum_num_recorded"] + + def _evaluate_compensations(self): + """ Analyzes the types of compensation distribution + + Returns: + + """ + # Count all compensations + comps = Compensation.objects.filter( + intervention__in=self.queryset + ) + self.compensation_sum = comps.count() + self.compensation_sum_checked = comps.filter(intervention__checked__isnull=False).count() + self.compensation_sum_recorded = comps.filter(intervention__recorded__isnull=False).count() + + # Count all payments + payments = Payment.objects.filter( + intervention__in=self.queryset + ) + self.payment_sum = payments.count() + self.payment_sum_checked = payments.filter(intervention__checked__isnull=False).count() + self.payment_sum_recorded = payments.filter(intervention__recorded__isnull=False).count() + + # Count all deductions + deductions = EcoAccountDeduction.objects.filter( + intervention__in=self.queryset + ) + self.deduction_sum = deductions.count() + self.deduction_sum_checked = deductions.filter(intervention__checked__isnull=False).count() + self.deduction_sum_recorded = deductions.filter(intervention__recorded__isnull=False).count() + + def __init__(self, office_id: str): + self.office_id = office_id + self.intervention_report = self.InterventionReport(self.office_id) diff --git a/analysis/views.py b/analysis/views.py new file mode 100644 index 00000000..43dd061b --- /dev/null +++ b/analysis/views.py @@ -0,0 +1,59 @@ +from django.contrib.auth.decorators import login_required +from django.db.models import Count, Q, Sum +from django.http import HttpRequest +from django.shortcuts import render, get_object_or_404 + +from analysis.utils.report import TimespanReport +from codelist.models import KonovaCode +from codelist.settings import CODELIST_LAW_ID +from compensation.models import EcoAccount, Compensation +from ema.models import Ema +from intervention.models import Intervention +from konova.contexts import BaseContext +from konova.decorators import conservation_office_group_required + + +@login_required +@conservation_office_group_required +def index_reports_view(request: HttpRequest): + """ + + Args: + request (HttpRequest): The incoming request + + Returns: + + """ + template = "analysis/reports/index.html" + context = {} + context = BaseContext(request, context).context + return render(request, template, context) + + +def detail_report_view(request: HttpRequest, id: str): + cons_office = get_object_or_404( + KonovaCode, + id=id, + ) + cons_interventions = Intervention.objects.filter( + responsible__conservation_office__id=id, + deleted=None, + ) + cons_comps = Compensation.objects.filter( + intervention__in=cons_interventions, + deleted=None, + ) + cons_eco_account = EcoAccount.objects.filter( + responsible__conservation_office__id=id, + deleted=None, + ) + + report = TimespanReport(id) + + template = "analysis/reports/detail.html" + context = { + "office": cons_office, + "report": report, + } + context = BaseContext(request, context).context + return render(request, template, context) \ No newline at end of file diff --git a/konova/sub_settings/django_settings.py b/konova/sub_settings/django_settings.py index 29540d4b..df875a81 100644 --- a/konova/sub_settings/django_settings.py +++ b/konova/sub_settings/django_settings.py @@ -69,6 +69,7 @@ INSTALLED_APPS = [ 'user', 'ema', 'codelist', + 'analysis', ] if DEBUG: INSTALLED_APPS += [ diff --git a/konova/urls.py b/konova/urls.py index 8448cb4e..1aebcbcc 100644 --- a/konova/urls.py +++ b/konova/urls.py @@ -36,7 +36,8 @@ urlpatterns = [ path('ema/', include("ema.urls")), path('user/', include("user.urls")), path('news/', include("news.urls")), - path('news/', include("codelist.urls")), + path('cl/', include("codelist.urls")), + path('analysis/', include("analysis.urls")), # Generic deadline routes path('deadline//remove', remove_deadline_view, name="deadline-remove"), diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo index b9d3ebde2f32b322b31bbe5e82f547e9e9e5b976..c65e66dc01cf89f3565d996215b6934dfe6b7363 100644 GIT binary patch delta 8283 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 Ow(q*2lH_6W75@i-DK3Ek diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po index aebd7445..f02eced3 100644 --- a/locale/de/LC_MESSAGES/django.po +++ b/locale/de/LC_MESSAGES/django.po @@ -19,7 +19,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-14 09:12+0200\n" +"POT-Creation-Date: 2021-10-18 14:59+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -29,12 +29,111 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: analysis/templates/analysis/reports/detail.html:7 +#: compensation/templates/compensation/report/compensation/report.html:7 +#: compensation/templates/compensation/report/eco_account/report.html:7 +#: ema/templates/ema/report/report.html:7 +#: intervention/templates/intervention/report/report.html:7 +msgid "Report" +msgstr "Bericht" + +#: analysis/templates/analysis/reports/includes/card_compensation.html:11 +#: compensation/tables.py:62 +#: intervention/templates/intervention/detail/includes/compensations.html:8 +#: intervention/templates/intervention/report/report.html:49 +msgid "Compensations" +msgstr "Kompensationen" + +#: analysis/templates/analysis/reports/includes/card_eco_account.html:11 +msgid "Eco-Accounts" +msgstr "Ökokonten" + +#: analysis/templates/analysis/reports/includes/card_intervention.html:10 +#: intervention/tables.py:66 +msgid "Interventions" +msgstr "Eingriffe" + +#: analysis/templates/analysis/reports/includes/card_intervention.html:17 +msgid "Total interventions" +msgstr "Insgesamt" + +#: analysis/templates/analysis/reports/includes/card_intervention.html:22 +msgid "Amount total" +msgstr "Anzahl insgesamt" + +#: analysis/templates/analysis/reports/includes/card_intervention.html:26 +msgid "Amount checked" +msgstr "Anzahl geprüft" + +#: analysis/templates/analysis/reports/includes/card_intervention.html:30 +msgid "Amount recorded" +msgstr "Anzahl verzeichnet" + +#: analysis/templates/analysis/reports/includes/card_intervention.html:37 +msgid "Law usage" +msgstr "Gesetzesanwendungen" + +#: analysis/templates/analysis/reports/includes/card_intervention.html:43 +#: intervention/forms/forms.py:68 +#: intervention/templates/intervention/detail/view.html:39 +#: intervention/templates/intervention/report/report.html:20 +msgid "Law" +msgstr "Gesetz" + +#: analysis/templates/analysis/reports/includes/card_intervention.html:46 +#: compensation/tables.py:35 +#: compensation/templates/compensation/detail/compensation/view.html:43 +#: intervention/tables.py:33 +#: intervention/templates/intervention/detail/view.html:68 user/models.py:48 +msgid "Checked" +msgstr "Geprüft" + +#: analysis/templates/analysis/reports/includes/card_intervention.html:49 +#: compensation/tables.py:41 compensation/tables.py:181 +#: compensation/templates/compensation/detail/compensation/view.html:57 +#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:31 +#: compensation/templates/compensation/detail/eco_account/view.html:44 +#: ema/tables.py:38 ema/templates/ema/detail/view.html:28 +#: intervention/tables.py:39 +#: intervention/templates/intervention/detail/view.html:82 user/models.py:49 +msgid "Recorded" +msgstr "Verzeichnet" + +#: analysis/templates/analysis/reports/includes/card_intervention.html:52 +#: analysis/templates/analysis/reports/includes/card_intervention.html:72 +#: konova/templates/konova/home.html:23 konova/templates/konova/home.html:61 +#: konova/templates/konova/home.html:100 +msgid "Total" +msgstr "Insgesamt" + +#: analysis/templates/analysis/reports/includes/card_intervention.html:81 +msgid "" +"\n" +" Please note: One intervention can be based on " +"multiple laws. This table therefore does not\n" +" count\n" +" " +msgstr "" + +#: analysis/templates/analysis/reports/includes/card_old_interventions.html:11 +msgid "Old interventions" +msgstr "Altfälle" + +#: analysis/templates/analysis/reports/includes/card_old_interventions.html:13 +msgid "Before" +msgstr "Vor" + +#: analysis/templates/analysis/reports/index.html:6 +#: templates/navbars/navbar.html:46 +msgid "Reports" +msgstr "Berichte" + #: compensation/filters.py:70 msgid "Show only unrecorded" msgstr "Nur unverzeichnete anzeigen" #: compensation/forms/forms.py:31 compensation/tables.py:25 -#: compensation/tables.py:167 ema/tables.py:28 intervention/forms/forms.py:27 +#: compensation/tables.py:166 ema/tables.py:28 intervention/forms/forms.py:27 #: intervention/tables.py:23 #: intervention/templates/intervention/detail/includes/compensations.html:30 msgid "Identifier" @@ -45,7 +144,7 @@ msgid "Generated automatically" msgstr "Automatisch generiert" #: compensation/forms/forms.py:43 compensation/tables.py:30 -#: compensation/tables.py:172 +#: compensation/tables.py:171 #: compensation/templates/compensation/detail/compensation/includes/documents.html:28 #: compensation/templates/compensation/detail/compensation/view.html:31 #: compensation/templates/compensation/detail/eco_account/includes/documents.html:28 @@ -308,12 +407,12 @@ msgstr "Maßnahmentyp wählen" #: compensation/templates/compensation/detail/compensation/includes/documents.html:35 #: compensation/templates/compensation/detail/compensation/includes/states-after.html:40 #: compensation/templates/compensation/detail/compensation/includes/states-before.html:40 -#: compensation/templates/compensation/detail/eco_account/includes/actions.html:37 +#: compensation/templates/compensation/detail/eco_account/includes/actions.html:38 #: compensation/templates/compensation/detail/eco_account/includes/deadlines.html:37 #: compensation/templates/compensation/detail/eco_account/includes/deductions.html:40 #: compensation/templates/compensation/detail/eco_account/includes/documents.html:34 -#: compensation/templates/compensation/detail/eco_account/includes/states-after.html:39 -#: compensation/templates/compensation/detail/eco_account/includes/states-before.html:39 +#: compensation/templates/compensation/detail/eco_account/includes/states-after.html:40 +#: compensation/templates/compensation/detail/eco_account/includes/states-before.html:40 #: ema/templates/ema/detail/includes/actions.html:37 #: ema/templates/ema/detail/includes/deadlines.html:37 #: ema/templates/ema/detail/includes/documents.html:34 @@ -358,38 +457,38 @@ msgstr "Geben Sie die Daten der neuen Maßnahme ein" msgid "Added action" msgstr "Maßnahme hinzugefügt" -#: compensation/models.py:78 +#: compensation/models.py:82 msgid "cm" msgstr "" -#: compensation/models.py:79 +#: compensation/models.py:83 msgid "m" msgstr "" -#: compensation/models.py:80 +#: compensation/models.py:84 msgid "km" msgstr "" -#: compensation/models.py:81 +#: compensation/models.py:85 msgid "m²" msgstr "" -#: compensation/models.py:82 +#: compensation/models.py:86 msgid "ha" msgstr "" -#: compensation/models.py:83 +#: compensation/models.py:87 msgid "Pieces" msgstr "Stück" -#: compensation/models.py:311 +#: compensation/models.py:321 msgid "" "Deductable surface can not be larger than existing surfaces in after states" msgstr "" "Die abbuchbare Fläche darf die Gesamtfläche der Zielzustände nicht " "überschreiten" -#: compensation/models.py:318 +#: compensation/models.py:328 msgid "" "Deductable surface can not be smaller than the sum of already existing " "deductions. Please contact the responsible users for the deductions!" @@ -397,40 +496,17 @@ msgstr "" "Es wurde bereits mehr Fläche abgebucht, als Sie nun als abbuchbar einstellen " "wollen. Kontaktieren Sie die für die Abbuchungen verantwortlichen Nutzer!" -#: compensation/tables.py:35 -#: compensation/templates/compensation/detail/compensation/view.html:43 -#: intervention/tables.py:33 -#: intervention/templates/intervention/detail/view.html:68 user/models.py:48 -msgid "Checked" -msgstr "Geprüft" - -#: compensation/tables.py:41 compensation/tables.py:182 -#: compensation/templates/compensation/detail/compensation/view.html:57 -#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:31 -#: compensation/templates/compensation/detail/eco_account/view.html:44 -#: ema/tables.py:38 ema/templates/ema/detail/view.html:28 -#: intervention/tables.py:39 -#: intervention/templates/intervention/detail/view.html:82 user/models.py:49 -msgid "Recorded" -msgstr "Verzeichnet" - -#: compensation/tables.py:47 compensation/tables.py:188 ema/tables.py:44 +#: compensation/tables.py:47 compensation/tables.py:187 ema/tables.py:44 #: intervention/tables.py:51 msgid "Editable" msgstr "Freigegeben" -#: compensation/tables.py:53 compensation/tables.py:194 ema/tables.py:50 +#: compensation/tables.py:53 compensation/tables.py:193 ema/tables.py:50 #: intervention/tables.py:57 msgid "Last edit" msgstr "Zuletzt bearbeitet" -#: compensation/tables.py:62 -#: intervention/templates/intervention/detail/includes/compensations.html:8 -#: intervention/templates/intervention/report/report.html:49 -msgid "Compensations" -msgstr "Kompensationen" - -#: compensation/tables.py:84 compensation/tables.py:225 ema/tables.py:82 +#: compensation/tables.py:84 compensation/tables.py:224 ema/tables.py:82 #: intervention/tables.py:88 msgid "Open {}" msgstr "Öffne {}" @@ -451,46 +527,47 @@ msgstr "Am {} von {} geprüft worden" #: compensation/tables.py:129 #: compensation/templates/compensation/detail/compensation/view.html:60 +#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:56 #: compensation/templates/compensation/detail/eco_account/view.html:47 #: ema/tables.py:101 ema/templates/ema/detail/view.html:31 -#: intervention/models.py:384 intervention/tables.py:131 +#: intervention/tables.py:131 #: intervention/templates/intervention/detail/view.html:85 msgid "Not recorded yet" msgstr "Noch nicht verzeichnet" -#: compensation/tables.py:134 compensation/tables.py:263 ema/tables.py:106 -#: intervention/models.py:389 intervention/tables.py:136 +#: compensation/tables.py:134 compensation/tables.py:262 ema/tables.py:106 +#: intervention/tables.py:136 msgid "Recorded on {} by {}" msgstr "Am {} von {} verzeichnet worden" -#: compensation/tables.py:159 compensation/tables.py:286 ema/tables.py:129 +#: compensation/tables.py:158 compensation/tables.py:284 ema/tables.py:129 #: intervention/tables.py:159 msgid "Full access granted" msgstr "Für Sie freigegeben - Datensatz kann bearbeitet werden" -#: compensation/tables.py:159 compensation/tables.py:286 ema/tables.py:129 +#: compensation/tables.py:158 compensation/tables.py:284 ema/tables.py:129 #: intervention/tables.py:159 msgid "Access not granted" msgstr "Nicht freigegeben - Datensatz nur lesbar" -#: compensation/tables.py:177 +#: compensation/tables.py:176 #: compensation/templates/compensation/detail/eco_account/view.html:35 #: konova/templates/konova/widgets/progressbar.html:3 msgid "Available" msgstr "Verfügbar" -#: compensation/tables.py:203 +#: compensation/tables.py:202 msgid "Eco Accounts" msgstr "Ökokonten" -#: compensation/tables.py:225 +#: compensation/tables.py:224 #: compensation/templates/compensation/detail/eco_account/view.html:19 #: intervention/forms/modalForms.py:258 intervention/forms/modalForms.py:265 #: konova/templates/konova/home.html:88 templates/navbars/navbar.html:34 msgid "Eco-account" msgstr "Ökokonto" -#: compensation/tables.py:258 +#: compensation/tables.py:257 msgid "Not recorded yet. Can not be used for deductions, yet." msgstr "" "Noch nicht verzeichnet. Kann noch nicht für Abbuchungen genutzt werden." @@ -522,7 +599,7 @@ msgid "Amount" msgstr "Menge" #: compensation/templates/compensation/detail/compensation/includes/actions.html:53 -#: compensation/templates/compensation/detail/eco_account/includes/actions.html:51 +#: compensation/templates/compensation/detail/eco_account/includes/actions.html:53 #: ema/templates/ema/detail/includes/actions.html:51 msgid "Remove action" msgstr "Maßnahme entfernen" @@ -638,8 +715,8 @@ msgstr "Biotoptyp" #: compensation/templates/compensation/detail/compensation/includes/states-after.html:54 #: compensation/templates/compensation/detail/compensation/includes/states-before.html:54 -#: compensation/templates/compensation/detail/eco_account/includes/states-after.html:52 -#: compensation/templates/compensation/detail/eco_account/includes/states-before.html:52 +#: compensation/templates/compensation/detail/eco_account/includes/states-after.html:54 +#: compensation/templates/compensation/detail/eco_account/includes/states-before.html:54 #: ema/templates/ema/detail/includes/states-after.html:52 #: ema/templates/ema/detail/includes/states-before.html:52 msgid "Remove state" @@ -670,6 +747,7 @@ msgstr "Geprüft am " #: compensation/templates/compensation/detail/compensation/view.html:50 #: compensation/templates/compensation/detail/compensation/view.html:64 +#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:54 #: compensation/templates/compensation/detail/eco_account/view.html:51 #: ema/templates/ema/detail/view.html:35 #: intervention/templates/intervention/detail/view.html:75 @@ -755,6 +833,12 @@ msgstr "Eingriffskennung" msgid "Created" msgstr "Erstellt" +#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:54 +#, fuzzy +#| msgid "Recorded on " +msgid "Recorded on" +msgstr "Verzeichnet am" + #: compensation/templates/compensation/detail/eco_account/includes/deductions.html:63 #: intervention/templates/intervention/detail/includes/deductions.html:58 msgid "Remove Deduction" @@ -789,24 +873,17 @@ msgstr "Fehlt" msgid "Action handler" msgstr "Maßnahmenträger" -#: compensation/templates/compensation/report/compensation/report.html:7 -#: compensation/templates/compensation/report/eco_account/report.html:7 -#: ema/templates/ema/report/report.html:7 -#: intervention/templates/intervention/report/report.html:7 -msgid "Report" -msgstr "Bericht" - -#: compensation/templates/compensation/report/compensation/report.html:58 -#: compensation/templates/compensation/report/eco_account/report.html:75 -#: ema/templates/ema/report/report.html:62 -#: intervention/templates/intervention/report/report.html:108 +#: compensation/templates/compensation/report/compensation/report.html:55 +#: compensation/templates/compensation/report/eco_account/report.html:72 +#: ema/templates/ema/report/report.html:59 +#: intervention/templates/intervention/report/report.html:105 msgid "Open in browser" msgstr "Im Browser öffnen" -#: compensation/templates/compensation/report/compensation/report.html:62 -#: compensation/templates/compensation/report/eco_account/report.html:79 -#: ema/templates/ema/report/report.html:66 -#: intervention/templates/intervention/report/report.html:112 +#: compensation/templates/compensation/report/compensation/report.html:59 +#: compensation/templates/compensation/report/eco_account/report.html:76 +#: ema/templates/ema/report/report.html:63 +#: intervention/templates/intervention/report/report.html:109 msgid "View in LANIS" msgstr "In LANIS öffnen" @@ -823,8 +900,8 @@ msgid "Compensation {} edited" msgstr "Kompensation {} bearbeitet" #: compensation/views/compensation_views.py:213 -#: compensation/views/eco_account_views.py:278 ema/views.py:175 -#: intervention/views.py:428 +#: compensation/views/eco_account_views.py:287 ema/views.py:175 +#: intervention/views.py:437 msgid "Log" msgstr "Log" @@ -833,23 +910,23 @@ msgid "Compensation removed" msgstr "Kompensation entfernt" #: compensation/views/compensation_views.py:253 -#: compensation/views/eco_account_views.py:377 ema/views.py:328 -#: intervention/views.py:124 +#: compensation/views/eco_account_views.py:386 ema/views.py:328 +#: intervention/views.py:126 msgid "Document added" msgstr "Dokument hinzugefügt" #: compensation/views/compensation_views.py:309 -#: compensation/views/eco_account_views.py:321 ema/views.py:272 +#: compensation/views/eco_account_views.py:330 ema/views.py:272 msgid "State added" msgstr "Zustand hinzugefügt" #: compensation/views/compensation_views.py:328 -#: compensation/views/eco_account_views.py:340 ema/views.py:291 +#: compensation/views/eco_account_views.py:349 ema/views.py:291 msgid "Action added" msgstr "Maßnahme hinzugefügt" #: compensation/views/compensation_views.py:347 -#: compensation/views/eco_account_views.py:359 ema/views.py:310 +#: compensation/views/eco_account_views.py:368 ema/views.py:310 msgid "Deadline added" msgstr "Frist/Termin hinzugefügt" @@ -861,33 +938,33 @@ msgstr "Zustand gelöscht" msgid "Action removed" msgstr "Maßnahme entfernt" -#: compensation/views/eco_account_views.py:87 +#: compensation/views/eco_account_views.py:86 msgid "Eco-Account {} added" msgstr "Ökokonto {} hinzugefügt" -#: compensation/views/eco_account_views.py:142 +#: compensation/views/eco_account_views.py:141 msgid "Eco-Account {} edited" msgstr "Ökokonto {} bearbeitet" -#: compensation/views/eco_account_views.py:228 +#: compensation/views/eco_account_views.py:237 msgid "Eco-account removed" msgstr "Ökokonto entfernt" -#: compensation/views/eco_account_views.py:255 +#: compensation/views/eco_account_views.py:264 msgid "Deduction removed" msgstr "Abbuchung entfernt" -#: compensation/views/eco_account_views.py:298 ema/views.py:249 -#: intervention/views.py:468 +#: compensation/views/eco_account_views.py:307 ema/views.py:249 +#: intervention/views.py:477 msgid "{} unrecorded" msgstr "{} entzeichnet" -#: compensation/views/eco_account_views.py:298 ema/views.py:249 -#: intervention/views.py:468 +#: compensation/views/eco_account_views.py:307 ema/views.py:249 +#: intervention/views.py:477 msgid "{} recorded" msgstr "{} verzeichnet" -#: compensation/views/eco_account_views.py:434 intervention/views.py:450 +#: compensation/views/eco_account_views.py:443 intervention/views.py:459 msgid "Deduction added" msgstr "Abbuchung hinzugefügt" @@ -965,12 +1042,6 @@ msgstr "Bauvorhaben XY; Flur ABC" msgid "Process type" msgstr "Verfahrenstyp" -#: intervention/forms/forms.py:68 -#: intervention/templates/intervention/detail/view.html:39 -#: intervention/templates/intervention/report/report.html:20 -msgid "Law" -msgstr "Gesetz" - #: intervention/forms/forms.py:70 msgid "Multiple selection possible" msgstr "Mehrfachauswahl möglich" @@ -1120,31 +1191,31 @@ msgstr "" "Das Ökokonto {} hat für eine Abbuchung von {} m² nicht ausreichend " "Restfläche. Es stehen noch {} m² zur Verfügung." -#: intervention/models.py:324 +#: intervention/models.py:329 msgid "Registration office file number missing" msgstr "Aktenzeichen Zulassungsbehörde fehlt" -#: intervention/models.py:327 +#: intervention/models.py:332 msgid "Conservation office file number missing" msgstr "Aktenzeichen Naturschutzbehörde fehlt" -#: intervention/models.py:330 +#: intervention/models.py:335 msgid "Responsible data missing" msgstr "Daten zu Verantwortlichen fehlen" -#: intervention/models.py:344 +#: intervention/models.py:349 msgid "Revocation exists" msgstr "Widerspruch liegt vor" -#: intervention/models.py:347 +#: intervention/models.py:352 msgid "Registration date missing" msgstr "Datum Zulassung bzw. Satzungsbeschluss fehlt" -#: intervention/models.py:350 +#: intervention/models.py:355 msgid "Binding on missing" msgstr "Datum Bestandskraft fehlt" -#: intervention/models.py:352 +#: intervention/models.py:357 msgid "Legal data missing" msgstr "Rechtliche Daten fehlen" @@ -1155,10 +1226,6 @@ msgstr "Rechtliche Daten fehlen" msgid "Revocation" msgstr "Widerspruch" -#: intervention/tables.py:66 -msgid "Interventions" -msgstr "Eingriffe" - #: intervention/tables.py:176 msgid "No revocation" msgstr "Kein Widerspruch" @@ -1226,15 +1293,15 @@ msgstr "Abbuchungen von Ökokonten" msgid "Exist" msgstr "Vorhanden" -#: intervention/views.py:77 +#: intervention/views.py:79 msgid "Intervention {} added" msgstr "Eingriff {} hinzugefügt" -#: intervention/views.py:212 +#: intervention/views.py:221 msgid "This intervention has a revocation from {}" msgstr "Es existiert ein Widerspruch vom {}" -#: intervention/views.py:228 +#: intervention/views.py:237 msgid "" "Remember: This data has not been shared with you, yet. This means you can " "only read but can not edit or perform any actions like running a check or " @@ -1244,43 +1311,43 @@ msgstr "" "bedeutet, dass Sie nur lesenden Zugriff hierauf haben und weder bearbeiten, " "noch Prüfungen durchführen oder verzeichnen können." -#: intervention/views.py:255 +#: intervention/views.py:264 msgid "Intervention {} edited" msgstr "Eingriff {} bearbeitet" -#: intervention/views.py:287 +#: intervention/views.py:296 msgid "{} removed" msgstr "{} entfernt" -#: intervention/views.py:308 +#: intervention/views.py:317 msgid "Revocation removed" msgstr "Widerspruch entfernt" -#: intervention/views.py:334 +#: intervention/views.py:343 msgid "{} has already been shared with you" msgstr "{} wurde bereits für Sie freigegeben" -#: intervention/views.py:339 +#: intervention/views.py:348 msgid "{} has been shared with you" msgstr "{} ist nun für Sie freigegeben" -#: intervention/views.py:346 +#: intervention/views.py:355 msgid "Share link invalid" msgstr "Freigabelink ungültig" -#: intervention/views.py:367 +#: intervention/views.py:376 msgid "Share settings updated" msgstr "Freigabe Einstellungen aktualisiert" -#: intervention/views.py:386 +#: intervention/views.py:395 msgid "Check performed" msgstr "Prüfung durchgeführt" -#: intervention/views.py:406 +#: intervention/views.py:415 msgid "Revocation added" msgstr "Widerspruch hinzugefügt" -#: intervention/views.py:473 +#: intervention/views.py:482 msgid "There are errors on this intervention:" msgstr "Es liegen Fehler in diesem Eingriff vor:" @@ -1403,10 +1470,13 @@ msgstr "Kontrolle am" msgid "Other" msgstr "Sonstige" -#: konova/templates/konova/home.html:23 konova/templates/konova/home.html:61 -#: konova/templates/konova/home.html:100 -msgid "Total" -msgstr "Insgesamt" +#: konova/sub_settings/django_settings.py:154 +msgid "German" +msgstr "" + +#: konova/sub_settings/django_settings.py:155 +msgid "English" +msgstr "" #: konova/templates/konova/home.html:27 konova/templates/konova/home.html:65 #: konova/templates/konova/home.html:104 @@ -1634,10 +1704,6 @@ msgstr "" msgid "Export..." msgstr "" -#: templates/navbars/navbar.html:46 -msgid "Reports" -msgstr "Berichte" - #: templates/navbars/navbar.html:58 user/templates/user/index.html:31 msgid "Settings" msgstr "Einstellungen" @@ -2980,9 +3046,6 @@ msgstr "" #~ msgid "Transfer comment" #~ msgstr "Verwendungszweck" -#~ msgid "EMA recorded" -#~ msgstr "EMA verzeichnet" - #~ msgid "Edit {}" #~ msgstr "Bearbeite {}" diff --git a/templates/navbars/navbar.html b/templates/navbars/navbar.html index 39b622e1..46a274ff 100644 --- a/templates/navbars/navbar.html +++ b/templates/navbars/navbar.html @@ -43,7 +43,7 @@ {% fa5_icon 'euro-sign' %} {% trans 'EMA' %} {% fa5_icon 'file-import' %} {% trans 'Import...' %} {% fa5_icon 'file-export' %} {% trans 'Export...' %} - {% fa5_icon 'file-alt' %} {% trans 'Reports' %} + {% fa5_icon 'file-alt' %} {% trans 'Reports' %}