From fd4c9b0e5e095f93762a3f4edb09b4434112d630 Mon Sep 17 00:00:00 2001 From: mpeltriaux Date: Mon, 8 Aug 2022 14:57:36 +0200 Subject: [PATCH] #190 Mandatory finished deadline * adds template message to indicate a finished-deadline is mandatory * adds finished deadline existance to quality check of compensation-like entries * adds proper warning to quality check result * extends tests --- compensation/models/compensation.py | 15 +++- .../compensation/includes/deadlines.html | 5 ++ .../eco_account/includes/deadlines.html | 5 ++ compensation/utils/quality.py | 11 +++ compensation/views/compensation.py | 1 + compensation/views/eco_account.py | 1 + .../ema/detail/includes/deadlines.html | 5 ++ ema/views.py | 1 + konova/tests/test_views.py | 21 ++++- locale/de/LC_MESSAGES/django.mo | Bin 43924 -> 44074 bytes locale/de/LC_MESSAGES/django.po | 78 +++++++++++------- 11 files changed, 106 insertions(+), 37 deletions(-) diff --git a/compensation/models/compensation.py b/compensation/models/compensation.py index 2e42ff7a..e513c95c 100644 --- a/compensation/models/compensation.py +++ b/compensation/models/compensation.py @@ -14,16 +14,14 @@ from user.models import User, Team from django.db import models, transaction from django.db.models import QuerySet, Sum from django.http import HttpRequest -from django.utils.translation import gettext_lazy as _ from compensation.managers import CompensationManager from compensation.models import CompensationState, CompensationAction from compensation.utils.quality import CompensationQualityChecker from konova.models import BaseObject, AbstractDocument, Deadline, generate_document_file_upload_path, \ - GeoReferencedMixin -from konova.settings import DEFAULT_SRID_RLP, LANIS_LINK_TEMPLATE + GeoReferencedMixin, DeadlineType from konova.utils.message_templates import DATA_UNSHARED_EXPLANATION, COMPENSATION_REMOVED_TEMPLATE, \ - DOCUMENT_REMOVED_TEMPLATE, COMPENSATION_EDITED_TEMPLATE, DEADLINE_REMOVED, ADDED_DEADLINE, \ + DOCUMENT_REMOVED_TEMPLATE, DEADLINE_REMOVED, ADDED_DEADLINE, \ COMPENSATION_ACTION_REMOVED, COMPENSATION_STATE_REMOVED, INTERVENTION_HAS_REVOCATIONS_TEMPLATE from user.models import UserActionLogEntry @@ -226,6 +224,15 @@ class AbstractCompensation(BaseObject, GeoReferencedMixin): request = self.set_geometry_conflict_message(request) return request + def get_finished_deadlines(self): + """ Getter for FINISHED-deadlines + + Returns: + queryset (QuerySet): The finished deadlines + """ + return self.deadlines.filter( + type=DeadlineType.FINISHED + ) class CEFMixin(models.Model): """ Provides CEF flag as Mixin diff --git a/compensation/templates/compensation/detail/compensation/includes/deadlines.html b/compensation/templates/compensation/detail/compensation/includes/deadlines.html index 7f445657..bc54e95a 100644 --- a/compensation/templates/compensation/detail/compensation/includes/deadlines.html +++ b/compensation/templates/compensation/detail/compensation/includes/deadlines.html @@ -20,6 +20,11 @@ + {% if not has_finished_deadlines %} +
+ {% trans 'Missing finished deadline ' %} +
+ {% endif %}
diff --git a/compensation/templates/compensation/detail/eco_account/includes/deadlines.html b/compensation/templates/compensation/detail/eco_account/includes/deadlines.html index beaecfda..c0b4daf9 100644 --- a/compensation/templates/compensation/detail/eco_account/includes/deadlines.html +++ b/compensation/templates/compensation/detail/eco_account/includes/deadlines.html @@ -20,6 +20,11 @@ + {% if not has_finished_deadlines %} +
+ {% trans 'Missing finished deadline ' %} +
+ {% endif %}
diff --git a/compensation/utils/quality.py b/compensation/utils/quality.py index b622fcdd..f883ba36 100644 --- a/compensation/utils/quality.py +++ b/compensation/utils/quality.py @@ -19,6 +19,7 @@ class CompensationQualityChecker(AbstractQualityChecker): self._check_states() self._check_actions() self._check_geometry() + self._check_deadlines() self.valid = len(self.messages) == 0 def _check_states(self): @@ -47,6 +48,16 @@ class CompensationQualityChecker(AbstractQualityChecker): if not self.obj.actions.all(): self._add_missing_attr_name(_con("Compensation", "Actions")) + def _check_deadlines(self): + """ Checks data quality for related Deadline objects + + Returns: + + """ + finished_deadlines = self.obj.get_finished_deadlines() + if not finished_deadlines.exists(): + self._add_missing_attr_name(_("Finished deadlines")) + class EcoAccountQualityChecker(CompensationQualityChecker): def run_check(self): diff --git a/compensation/views/compensation.py b/compensation/views/compensation.py index 31087ed7..efe51ce3 100644 --- a/compensation/views/compensation.py +++ b/compensation/views/compensation.py @@ -240,6 +240,7 @@ def detail_view(request: HttpRequest, id: str): "is_ets_member": in_group(_user, ETS_GROUP), "LANIS_LINK": comp.get_LANIS_link(), TAB_TITLE_IDENTIFIER: f"{comp.identifier} - {comp.title}", + "has_finished_deadlines": comp.get_finished_deadlines().exists(), } context = BaseContext(request, context).context return render(request, template, context) diff --git a/compensation/views/eco_account.py b/compensation/views/eco_account.py index ecaccbe6..ebface8d 100644 --- a/compensation/views/eco_account.py +++ b/compensation/views/eco_account.py @@ -242,6 +242,7 @@ def detail_view(request: HttpRequest, id: str): "deductions": deductions, "actions": actions, TAB_TITLE_IDENTIFIER: f"{acc.identifier} - {acc.title}", + "has_finished_deadlines": acc.get_finished_deadlines().exists(), } context = BaseContext(request, context).context return render(request, template, context) diff --git a/ema/templates/ema/detail/includes/deadlines.html b/ema/templates/ema/detail/includes/deadlines.html index 761ce067..0c25b390 100644 --- a/ema/templates/ema/detail/includes/deadlines.html +++ b/ema/templates/ema/detail/includes/deadlines.html @@ -20,6 +20,11 @@ + {% if not has_finished_deadlines %} +
+ {% trans 'Missing finished deadline ' %} +
+ {% endif %}
diff --git a/ema/views.py b/ema/views.py index ce0d68f5..589165f5 100644 --- a/ema/views.py +++ b/ema/views.py @@ -166,6 +166,7 @@ def detail_view(request: HttpRequest, id: str): "is_ets_member": in_group(_user, ETS_GROUP), "LANIS_LINK": ema.get_LANIS_link(), TAB_TITLE_IDENTIFIER: f"{ema.identifier} - {ema.title}", + "has_finished_deadlines": ema.get_finished_deadlines().exists(), } context = BaseContext(request, context).context return render(request, template, context) diff --git a/konova/tests/test_views.py b/konova/tests/test_views.py index 4037c6bf..c6006190 100644 --- a/konova/tests/test_views.py +++ b/konova/tests/test_views.py @@ -22,7 +22,7 @@ from codelist.models import KonovaCode, KonovaCodeList from compensation.models import Compensation, CompensationState, CompensationAction, EcoAccount, EcoAccountDeduction from intervention.models import Legal, Responsibility, Intervention, Handler from konova.management.commands.setup_data import GROUPS_DATA -from konova.models import Geometry +from konova.models import Geometry, Deadline, DeadlineType from konova.settings import DEFAULT_GROUP from konova.utils.generators import generate_random_string from user.models import UserActionLogEntry @@ -41,6 +41,7 @@ class BaseTestCase(TestCase): eco_account = None comp_state = None comp_action = None + finished_deadline = None codes = None superuser_pw = "root" @@ -69,6 +70,7 @@ class BaseTestCase(TestCase): self.create_dummy_action() self.codes = self.create_dummy_codes() self.team = self.create_dummy_team() + self.finished_deadline = self.create_dummy_deadline() # Set the default group as only group for the user default_group = self.groups.get(name=DEFAULT_GROUP) @@ -279,6 +281,20 @@ class BaseTestCase(TestCase): return team + def create_dummy_deadline(self, type: DeadlineType = DeadlineType.FINISHED): + """ Creates a dummy deadline. + + If type is not specified, it defaults to DeadlineType.FINISHED + + Returns: + deadline (Deadline): A deadline + """ + deadline = Deadline.objects.create( + type=type, + date="1970-01-01" + ) + return deadline + @staticmethod def create_dummy_geometry() -> MultiPolygon: """ Creates some geometry @@ -361,6 +377,7 @@ class BaseTestCase(TestCase): compensation.before_states.add(self.comp_state) compensation.actions.add(self.comp_action) compensation.geometry.geom = self.create_dummy_geometry() + compensation.deadlines.add(self.finished_deadline) compensation.geometry.save() return compensation @@ -390,6 +407,7 @@ class BaseTestCase(TestCase): ema.before_states.add(self.comp_state) ema.actions.add(self.comp_action) ema.geometry.geom = self.create_dummy_geometry() + ema.deadlines.add(self.finished_deadline) ema.geometry.save() return ema @@ -410,6 +428,7 @@ class BaseTestCase(TestCase): eco_account.geometry.geom = self.create_dummy_geometry() eco_account.geometry.save() eco_account.deductable_surface = eco_account.get_state_after_surface_sum() + eco_account.deadlines.add(self.finished_deadline) eco_account.save() return eco_account diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo index 7072e4c2765d9290ef6c1c9cd3971d3b72a6cf1e..5b2d55a9dbb4a98c46dd7d7eb3f0612c61cd9508 100644 GIT binary patch delta 12151 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 delta 12043 zcmZA733yJ&9>?*Mgd_+dl1NC1L_#8B4-p}j+Lx%EYHHt?T4MLApw<>4q_%3+UTzy} zEv1TDi)vBTqAl7|6s4tgzrT0JeLVL(_n*&y=A1J#XJ*bxxi(zzTzKBo^?g8|MGi*= zPsa(vsYM*;2KlW>)jH0M1jq6BaGaT#MLDOU;}oP^p_1dArkq^aaXO%16~`HZJ+Td* z#a39RDsAEj49CZqh{4sk$8lUvOOiLK=z;-w4GZE!TlT8%INrJe3t%|vx>%$Er#5C_ zQ`CL?u@IiJUPj$_3#0I{tq)@qf%NZ`Cn?N{ROI2EHn!Xo{V9*cqBs=;aS5v94^bU` zg28yydIdu%Kf(|!Qo~#qXH7yqKog9if2S)+0!~3a=|`xBccK>_L1x`KZqGl#^^`qp znt^RX4QM}V22P>|bP0>$AD9pGCz%HfL|q?)E+th-^n|IHAKTdr(oqczvgN6$0nWz? zxCFIL4x?u37xcluuq=AiGBXj2T7m|sep*|5)?)sBsTfU#Zk&voni;4WSc)3p2GrE= zKs9gzwVAG{>zc1?gF{l}yjA1z2MWPX|Lrv*+%!5Cn zX5trn{wZq2`BO~8p{RyqQEOWZHIogoIkrT$iIan~@eFD}-RhY82BQY-nna=z%|rK; zqh??OYQ%?7Pju3j&!N`xJ1l`WQ61;0YnG}Ys$3kkBvGh#lTZU_f*Noqq+OTOgG3|g zZ!Z{+>R>i%?H8kFXth26F=}^zX3t;5Fv{0a1NTZbYh4nxXKJ7Z(gM|94^;a@F_`|H z@g!xbSb*{P32IGmU~7DWT9W4V%#);{o-iG?1pQDAjzvAlG}M3>TR*V%xu_*Qgc`^N z^rwI4XA&*JL)6qb_081hM|Bi{T7nX&fkk2iOhoPSaj4zB0Gr@O)Ic6!Ui9W--S3BL zuPAEi!qBBBt4X3KNI|VtQ`Ci>&eh_LPucMx1nsotcjaQ-uwguJB5sbvs zsCMq7X6Ww*%)g%8x1njcs5J!nXgT5720I|X4xDwU>o23$`X&xTub0d(m66zq@o)dwv~iz}r!qa35+$PN4>T5%r+IqS}4ruBS(j7N#Nq^(0|f9m}Ie+8sTy54zVL zwO1x%LtJ9Zmr;A&K<=P6pHC|@zzAy%)cID(B~BmIgKfoF{1sh#%>wz%6~vaPsq2cmU?8gF zMab_TXF0Me&bQbGqtnd!(WnoN3-z{4L#_2nEQD)N?QcUrJcxzybQ&wJ6IZFIg?CWp zI9gZ7HBseMR70&$U#@PbZ~j>H$86LlU4sR1i*+|@AV*NI-zlUE=Pr)GdM`8o?MSx0 z%)5>G`JoZMit2cvEssStG#%B!TvUfSw)`IIzRjp5+>J%>G#15cSPK8d6&OsXYHyp1 zL{qT`)!|9h4VO?)cE|b*H3RR?{K5Y$YBp>};VY9Mi_Pj6+^1Epaw_Oj*i zNIx#;Z4!-e6>1mnww^;Za2xgB`*k$Cw=8NcyP*c=LVeR`V=-KhYUcpf#cxsPi+5s{ zuqNt(Gq94rIMYcQQ?Uc}B+pR0*_W@9rl=5VCPFa?<1rZP+j3{r6ArazVj$(ksOvVN z26_j3zw;A`I{p)N<1^G=2<&3kJQ7u|jCw8WqL!#XY7dM@buh!07ox6T zWy@P^c@Jt29m5#Bh%S9Xovvoh@}M?N0n`YKq8biCt$7(#hY864oMe8);bQE8pW#G| ze#QL0e;?aWK8)%xq?@rWCQ$CvjrortSww~0j+)~0sI|O}WiT(lYpY=#*2Z+yOf186 zJdApf7z&!nIMjfvqLwlR^$Bl)Ww8;K#3AV}bHQ9H)Ib($1{R}cU?r-d)waCZp3g;f zv>P?mpQHB5S=1U|Mm@-FR6Aa;nW^_hEnP9xo{DvmsDaw32AiR#ye+Ce9W|iAr~!^b z4QMRZz)VcS-57-rF%d(%o9ojsoN_xXjl)qhxe&EmJlD z{}S~CKic|-w%)g=IUk0)zY=OD8d%$+K0rNDn{Xs@oy*B2@uVUfwN^P8f-BJrccNxs zk1c<0{leCtKyAu%sE)7N^AAw%K1R*x6D*HDy^K{cUhjW8NmWkFK~3d;)b9Kn)j(`- zv)SUY3FQvh3Rj{A`a2d!pFXA>X-&pZ>f2!n9D>>-voH!5VMY3PcG(MlL5(zTUvps* z)E)@K`W~zoUZy;_pX02>=KWbVypN~x<^VIWT?2WODEkiLD~X>XA3-O4u;c8-QCJ$Q z4q^UNN!pWWO|$VRuETOTe5hH|rKs~;P@D7sYGB8#7ciLebzFk~U?64>Gxu#oEzMrk zeW$S^em{))*VGky-R#m>)RZ(Q&1n6mrzg88rAV@s2hi)p1_5gfmx_2 zork)91BT&l)Dm1kJ^6hsgnpyVfJ-3lxSSd!8d-g77gUGCF&3wyzSWyi4V^>{^g4Ru z@2G)2L=D7qjOjQGy(rhf08GYUY=xSc-fmg{AtZVqN2At!DW>5@)Du2M-RL>i+!%`L zC=!cdZPfX8s5Kpk>cEBVaEA3VE}>jyoVoru2I~F4MxqfuLcRa_$D64P#^RLAq8hAk zZH`)^cBm(R6}5K;q6Rz<^&r`(`_`Zax&?#q2x_30(WQp&k!Veypf-#51RCOl6OZbk z%0zQRUDVRFwf06eI2v{TT+~b~!ARVKdVsSSinmb%@tI_yVG1vm4b>6w?-n38>B6z?R!s`=ACg9@Xvw)Dv&8?!$1(XI&)f;4bP0ugRud z95sa%P&1H%TAF640d&9;*d3E_BI-$Zpq}(BcEMYy_8Y%pmaL1l7itp^agk^WGf-vZu}IryN_TEJdS$(yr!7@0#O}Dq1sPG&2$S)#15#p$2FHk z9V|pW*?Xvge2DtuZm{Z;6&5|O|vdUJ<$8; zgI~cDmO*Fw;fTtdngvbwdmfIs1A0bUbmCj3UAnQ z;#{){)6j$ZEYuP#LiMu-wWQnTGXG6TPEet>4SLI14z<~mQ8#o(JxM>*8jrzzI2kpt zSs0JmSOE`W0^Y-l81c6Gprv6~%2Tire(xfwLJ~dCJV7VaNY|nUv=dYDII2Ux`TA2U zqsO|~7}e05s3kgOJ&*bzT|v#*6D)#SPqhUV53kS&qfVw1**dhw!8<`;TP8PSc>v>j6v^gbAJU?eJY-$f9Ew4Oo}De8k3%6|;F|NLKx&K`8 zok7j$wPmcoI(S5drqWq%Ix324C<66FwNV3o+1B?!z2}oq1KVWXg=+XPs=Z67nfM*G z#QMuWwd02o80I2TLn){=9Ee)OA=V7k>oW;;VBU7 zUQ~mJZ2d7*gQrj(o_EPZ%m?`jdk#}t@mGV z29}DdZ-_5rCU(ScFa#4enAf#2Mo{jCrEwB!%HOqqj@mOf^#_7zk_S{&#Nr#xW^9HU z=>XJ)V{LgFdQg6T#IUe26n>&I*q%5aXUSxFUT>RE` zYE#&PBZ!OS!%;^G@`r?uE7s{&)%{JhB}&s_0`yV9UVNbU ze}_HM)vC{F2q)X2)_9+7AeVeQvEP=zAonG745Uu~Na-f|&xBrM9gFO>J~)cHHlk}oOhyG<#DW2v!c^PsY8Tc_4#_!!Vyx-)5$*18SLdO!!M`V+aN4*g` zz9Rn*5k%;yiQl09#nnl@|Id$VB-fr7P;bU?E-uK0e~||e`ljpHM!hf5le{r;gm_5w zAaq=D|KtxPT(g0=OH8zN3(0l7h3@`8BxyptNBl~BLGX$?bBW%>3Cd*{#42(fPbt56 z{6-;+x@=qD3(IkR2U{-A`3}S;%HP==$B}=c{>#~m?pSsH82K2yXX}<(pW!pxKxy*s zHh*f>M<#`OUpjx?);;GQNfhVu6Uzy6@cjBPJRaUntKYFHT2C z@mJz!&M(9fsK2gVOdKq7ZeHFiq=!ofGd- zcoUZrEs33!KgI^cNOB#WiI<3e#0S*>N%SRuhtQEqd9ph*KYpQ{L_`vk2pw_Q$fWL{ zF1`Q1kj~-6Qru)u&ZWGacuct%qt$Vk@?~6yrHF>)#dLyW7jcBTPDFF^Zp3Cn$6n$b z^?KC;X={%vIhql5Rr&mQljI_CgSg5KI({^`f9B`r6Sh2-^B2hfBtErudF?<`DaR5W zxn>#GB6N%+qPeC!^>v6LlwD!`s6wPsv60a6IX1HSM_AibJKp4%Y<(b>q`oy#)OP&X zo?C_G>^*Oje`4!Zl|#HtxvaUz<@`=zti4#oQeI1xC;Taga^Vf~BKDepaT@VAbwQl_ z6vOcpbtUi#9-!_xQGom<)G-xT5<%o%?izj%X#ICnxtNMsm`gMz_og8ok=C2kHz$fx z*9UbJ#}+1aJZ#;4^r7x+TRu(hLmT()bq@7Kh*t?OVwB$h&p3Gob?he+$=|i*<&=LU zZ%?ct*LdC~y4dri&JRR1@fGn3p`#GzSKwgWN#xWr>Q^wZ*FV|3?9?yT-YdoY+Q`A&O8JL7k2r7-~}Y&)x2q z(pFUE

5w<%2{h`5{8bE&PUPZOf*X|Ko|ogATrYp}sG9W$I(8pM!oFf=8)eLEIuQ zMO4#0>_2A!$$1qxz9h~Obty*^{}63-;)SCu`FGTpz&^JA2g*Z<|37-#y7QcPib3brAhA1z+U_feT_ zPYkohV~W1ujkz$8!c`)YXirokbkrw2Z9@mGiPVj;c?9`t@&`mZxsJ=^vv4EPjeI8I lLe diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po index c62c2bd3..1da188a2 100644 --- a/locale/de/LC_MESSAGES/django.po +++ b/locale/de/LC_MESSAGES/django.po @@ -26,7 +26,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-27 14:23+0200\n" +"POT-Creation-Date: 2022-08-08 14:39+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -55,7 +55,7 @@ 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/report/eco_account/report.html:16 -#: compensation/utils/quality.py:100 ema/templates/ema/detail/view.html:49 +#: compensation/utils/quality.py:113 ema/templates/ema/detail/view.html:49 #: ema/templates/ema/report/report.html:16 ema/utils/quality.py:26 #: intervention/forms/forms.py:102 #: intervention/templates/intervention/detail/view.html:56 @@ -296,7 +296,7 @@ msgid "Law" msgstr "Gesetz" #: analysis/templates/analysis/reports/includes/old_data/amount.html:17 -#: compensation/templates/compensation/detail/compensation/includes/deadlines.html:28 +#: compensation/templates/compensation/detail/compensation/includes/deadlines.html:33 #: compensation/templates/compensation/detail/eco_account/includes/deadlines.html:28 #: ema/templates/ema/detail/includes/deadlines.html:28 msgid "Type" @@ -375,7 +375,7 @@ msgstr "Kompensation XY; Flur ABC" #: compensation/forms/forms.py:57 compensation/forms/modalForms.py:63 #: compensation/forms/modalForms.py:361 compensation/forms/modalForms.py:469 #: compensation/templates/compensation/detail/compensation/includes/actions.html:35 -#: compensation/templates/compensation/detail/compensation/includes/deadlines.html:34 +#: compensation/templates/compensation/detail/compensation/includes/deadlines.html:39 #: compensation/templates/compensation/detail/compensation/includes/documents.html:34 #: compensation/templates/compensation/detail/eco_account/includes/actions.html:34 #: compensation/templates/compensation/detail/eco_account/includes/deadlines.html:34 @@ -399,7 +399,7 @@ msgstr "Zusätzlicher Kommentar" #: compensation/forms/forms.py:93 #: compensation/templates/compensation/detail/eco_account/view.html:63 #: compensation/templates/compensation/report/eco_account/report.html:20 -#: compensation/utils/quality.py:102 ema/templates/ema/detail/view.html:53 +#: compensation/utils/quality.py:115 ema/templates/ema/detail/view.html:53 #: ema/templates/ema/report/report.html:20 ema/utils/quality.py:28 #: intervention/forms/forms.py:130 #: intervention/templates/intervention/detail/view.html:60 @@ -485,7 +485,7 @@ msgstr "Neue Kompensation" msgid "Edit compensation" msgstr "Bearbeite Kompensation" -#: compensation/forms/forms.py:356 compensation/utils/quality.py:84 +#: compensation/forms/forms.py:356 compensation/utils/quality.py:97 msgid "Available Surface" msgstr "Verfügbare Fläche" @@ -495,7 +495,7 @@ msgstr "Die für Abbuchungen zur Verfügung stehende Menge" #: compensation/forms/forms.py:368 #: compensation/templates/compensation/detail/eco_account/view.html:67 -#: compensation/utils/quality.py:72 +#: compensation/utils/quality.py:85 msgid "Agreement date" msgstr "Vereinbarungsdatum" @@ -597,7 +597,7 @@ msgid "Select the deadline type" msgstr "Fristart wählen" #: compensation/forms/modalForms.py:345 -#: compensation/templates/compensation/detail/compensation/includes/deadlines.html:31 +#: compensation/templates/compensation/detail/compensation/includes/deadlines.html:36 #: compensation/templates/compensation/detail/eco_account/includes/deadlines.html:31 #: ema/templates/ema/detail/includes/deadlines.html:31 #: intervention/forms/modalForms.py:149 @@ -617,7 +617,7 @@ msgid "Insert data for the new deadline" msgstr "Geben Sie die Daten der neuen Frist ein" #: compensation/forms/modalForms.py:389 -#: compensation/templates/compensation/detail/compensation/includes/deadlines.html:59 +#: compensation/templates/compensation/detail/compensation/includes/deadlines.html:64 #: compensation/templates/compensation/detail/eco_account/includes/deadlines.html:57 #: ema/templates/ema/detail/includes/deadlines.html:57 msgid "Edit deadline" @@ -798,7 +798,7 @@ msgid "Amount" msgstr "Menge" #: compensation/templates/compensation/detail/compensation/includes/actions.html:40 -#: compensation/templates/compensation/detail/compensation/includes/deadlines.html:39 +#: compensation/templates/compensation/detail/compensation/includes/deadlines.html:44 #: compensation/templates/compensation/detail/compensation/includes/documents.html:39 #: compensation/templates/compensation/detail/compensation/includes/states-after.html:41 #: compensation/templates/compensation/detail/compensation/includes/states-before.html:41 @@ -882,7 +882,11 @@ msgstr "Termine und Fristen" msgid "Add new deadline" msgstr "Frist/Termin hinzufügen" -#: compensation/templates/compensation/detail/compensation/includes/deadlines.html:62 +#: compensation/templates/compensation/detail/compensation/includes/deadlines.html:25 +msgid "Missing finished deadline " +msgstr "Umsetzungstermin fehlt" + +#: compensation/templates/compensation/detail/compensation/includes/deadlines.html:67 #: compensation/templates/compensation/detail/eco_account/includes/deadlines.html:60 #: ema/templates/ema/detail/includes/deadlines.html:60 msgid "Remove deadline" @@ -928,7 +932,7 @@ msgstr "Dokument löschen" #: compensation/templates/compensation/detail/compensation/includes/states-after.html:8 #: compensation/templates/compensation/detail/eco_account/includes/states-after.html:8 -#: compensation/utils/quality.py:39 +#: compensation/utils/quality.py:42 #: ema/templates/ema/detail/includes/states-after.html:8 msgid "States after" msgstr "Zielzustand" @@ -974,7 +978,7 @@ msgstr "Zustand entfernen" #: compensation/templates/compensation/detail/compensation/includes/states-before.html:8 #: compensation/templates/compensation/detail/eco_account/includes/states-before.html:8 -#: compensation/utils/quality.py:37 +#: compensation/utils/quality.py:40 #: ema/templates/ema/detail/includes/states-before.html:8 msgid "States before" msgstr "Ausgangszustand" @@ -1067,6 +1071,24 @@ msgstr "Zuletzt bearbeitet" msgid "Shared with" msgstr "Freigegeben für" +#: compensation/templates/compensation/detail/compensation/view.html:132 +#: compensation/templates/compensation/detail/eco_account/view.html:110 +#: ema/templates/ema/detail/view.html:96 +#: 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." + +#: compensation/templates/compensation/detail/compensation/view.html:134 +#: compensation/templates/compensation/detail/eco_account/view.html:112 +#: ema/templates/ema/detail/view.html:98 +#: intervention/templates/intervention/detail/view.html:140 +msgid "other users" +msgstr "weitere Nutzer" + #: compensation/templates/compensation/detail/eco_account/includes/controls.html:15 #: ema/templates/ema/detail/includes/controls.html:15 #: intervention/forms/modalForms.py:71 @@ -1166,21 +1188,25 @@ msgstr "Abbuchungen für" msgid "None" msgstr "-" -#: compensation/utils/quality.py:34 +#: compensation/utils/quality.py:37 msgid "States unequal" msgstr "Ungleiche Zustandsflächenmengen" -#: compensation/utils/quality.py:74 intervention/utils/quality.py:84 +#: compensation/utils/quality.py:61 +msgid "Finished deadlines" +msgstr "Umsetzungstermin" + +#: compensation/utils/quality.py:87 intervention/utils/quality.py:84 msgid "Legal data" msgstr "Rechtliche Daten" -#: compensation/utils/quality.py:88 +#: compensation/utils/quality.py:101 msgid "Deductable surface can not be larger than state surface" msgstr "" "Die abbuchbare Fläche darf die Gesamtfläche der Zielzustände nicht " "überschreiten" -#: compensation/utils/quality.py:104 ema/utils/quality.py:30 +#: compensation/utils/quality.py:117 ema/utils/quality.py:30 #: intervention/utils/quality.py:55 msgid "Responsible data" msgstr "Daten zu den verantwortlichen Stellen" @@ -1198,12 +1224,12 @@ msgstr "Kompensation {} bearbeitet" msgid "Edit {}" msgstr "Bearbeite {}" -#: compensation/views/compensation.py:268 compensation/views/eco_account.py:359 +#: compensation/views/compensation.py:269 compensation/views/eco_account.py:359 #: ema/views.py:194 intervention/views.py:542 msgid "Log" msgstr "Log" -#: compensation/views/compensation.py:612 compensation/views/eco_account.py:727 +#: compensation/views/compensation.py:613 compensation/views/eco_account.py:727 #: ema/views.py:558 intervention/views.py:688 msgid "Report {}" msgstr "Bericht {}" @@ -1549,18 +1575,6 @@ msgstr "Eingriffsverursacher" msgid "Exists" 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 msgid "Deductions of eco-accounts" msgstr "Abbuchungen von Ökokonten" @@ -2753,7 +2767,7 @@ msgstr "Benachrichtigungen" msgid "Manage teams" msgstr "" -#: user/templates/user/index.html:61 user/templates/user/team/index.html:18 +#: user/templates/user/index.html:61 user/templates/user/team/index.html:19 #: user/views.py:167 msgid "Teams" msgstr ""