From 0e9a169d381875d9279564ade8f4eb7515266b2a Mon Sep 17 00:00:00 2001 From: mpeltriaux Date: Tue, 19 Oct 2021 14:22:41 +0200 Subject: [PATCH] #26 Annual conservation report * finishes intervention analysis report for cases before 16.06.2018 (LKompVzVo) --- analysis/settings.py | 12 ++++++++ .../templates/analysis/reports/detail.html | 2 +- .../includes/old_intervention/amount.html | 30 +++++++++++++++++++ .../card_old_interventions.html | 2 +- analysis/utils/report.py | 23 ++++++++++++++ analysis/views.py | 22 ++++++-------- 6 files changed, 76 insertions(+), 15 deletions(-) create mode 100644 analysis/settings.py create mode 100644 analysis/templates/analysis/reports/includes/old_intervention/amount.html rename analysis/templates/analysis/reports/includes/{ => old_intervention}/card_old_interventions.html (90%) diff --git a/analysis/settings.py b/analysis/settings.py new file mode 100644 index 0000000..5ea5fad --- /dev/null +++ b/analysis/settings.py @@ -0,0 +1,12 @@ +""" +Author: Michel Peltriaux +Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany +Contact: michel.peltriaux@sgdnord.rlp.de +Created on: 19.10.21 + +""" + +import datetime + +# Defines the date of the legal publishing of the LKompVzVo +LKOMPVZVO_PUBLISH_DATE = datetime.date.fromisoformat("2018-06-16") diff --git a/analysis/templates/analysis/reports/detail.html b/analysis/templates/analysis/reports/detail.html index f90acda..4232241 100644 --- a/analysis/templates/analysis/reports/detail.html +++ b/analysis/templates/analysis/reports/detail.html @@ -12,6 +12,6 @@ {% include 'analysis/reports/includes/intervention/card_intervention.html' %} {% include 'analysis/reports/includes/compensation/card_compensation.html' %} {% include 'analysis/reports/includes/card_eco_account.html' %} - {% include 'analysis/reports/includes/card_old_interventions.html' %} + {% include 'analysis/reports/includes/old_intervention/card_old_interventions.html' %} {% endblock %} \ No newline at end of file diff --git a/analysis/templates/analysis/reports/includes/old_intervention/amount.html b/analysis/templates/analysis/reports/includes/old_intervention/amount.html new file mode 100644 index 0000000..5ab45a9 --- /dev/null +++ b/analysis/templates/analysis/reports/includes/old_intervention/amount.html @@ -0,0 +1,30 @@ +{% load i18n fontawesome_5 ksp_filters %} + +

{% 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 %} +
+
+ + + + + + + + + + + + + + + +
{% fa5_icon 'star' %} {% trans 'Checked' %}{% fa5_icon 'bookmark' %} {% trans 'Recorded' %}{% trans 'Total' %}
{{report.old_intervention_report.queryset_checked.count|default_if_zero:"-"}}{{report.old_intervention_report.queryset_recorded.count|default_if_zero:"-"}}{{report.old_intervention_report.queryset.count|default_if_zero:"-"}}
+
\ No newline at end of file diff --git a/analysis/templates/analysis/reports/includes/card_old_interventions.html b/analysis/templates/analysis/reports/includes/old_intervention/card_old_interventions.html similarity index 90% rename from analysis/templates/analysis/reports/includes/card_old_interventions.html rename to analysis/templates/analysis/reports/includes/old_intervention/card_old_interventions.html index 400d008..3a27287 100644 --- a/analysis/templates/analysis/reports/includes/card_old_interventions.html +++ b/analysis/templates/analysis/reports/includes/old_intervention/card_old_interventions.html @@ -16,7 +16,7 @@
- {% include 'form/table/generic_table_form_body.html' %} + {% include 'analysis/reports/includes/old_intervention/amount.html' %}
diff --git a/analysis/utils/report.py b/analysis/utils/report.py index ce5d895..12d0a46 100644 --- a/analysis/utils/report.py +++ b/analysis/utils/report.py @@ -8,6 +8,7 @@ Created on: 18.10.21 from django.contrib.gis.db.models.functions import NumGeometries from django.db.models import Count, Sum, Q +from analysis.settings import LKOMPVZVO_PUBLISH_DATE from codelist.models import KonovaCode from codelist.settings import CODELIST_LAW_ID from compensation.models import Compensation, Payment, EcoAccountDeduction @@ -23,6 +24,7 @@ class TimespanReport: queryset_checked = Intervention.objects.none() queryset_recorded = Intervention.objects.none() + # Law related law_sum = -1 law_sum_checked = -1 @@ -43,6 +45,7 @@ class TimespanReport: def __init__(self, id: str): self.queryset = Intervention.objects.filter( responsible__conservation_office__id=id, + legal__registration_date__gt=LKOMPVZVO_PUBLISH_DATE, deleted=None, ) self.queryset_checked = self.queryset.filter( @@ -157,6 +160,7 @@ class TimespanReport: def __init__(self, id: str): self.queryset = Compensation.objects.filter( intervention__responsible__conservation_office__id=id, + intervention__legal__registration_date__gt=LKOMPVZVO_PUBLISH_DATE, deleted=None, ) self.queryset_checked = self.queryset.filter( @@ -261,7 +265,26 @@ class TimespanReport: intervention__checked__isnull=False, ) + class OldInterventionReport: + queryset = Compensation.objects.none() + queryset_checked = Compensation.objects.none() + queryset_recorded = Compensation.objects.none() + + def __init__(self, id: str): + self.queryset = Intervention.objects.filter( + legal__registration_date__lte=LKOMPVZVO_PUBLISH_DATE, + 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 + ) + def __init__(self, office_id: str): self.office_id = office_id self.intervention_report = self.InterventionReport(self.office_id) self.compensation_report = self.CompensationReport(self.office_id) + self.old_intervention_report = self.OldInterventionReport(self.office_id) diff --git a/analysis/views.py b/analysis/views.py index 43dd061..b769971 100644 --- a/analysis/views.py +++ b/analysis/views.py @@ -31,23 +31,19 @@ def index_reports_view(request: HttpRequest): def detail_report_view(request: HttpRequest, id: str): + """ Renders the detailed report for a conservation office + + Args: + request (HttpRequest): The incoming request + id (str): The conservation_office KonovaCode id + + Returns: + + """ 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"