Compare commits
No commits in common. "564ae4d5db2d175631c6d8fcb87900b4ad48acdd" and "345b2664223a36c42c20354d7f9c5747b565846b" have entirely different histories.
564ae4d5db
...
345b266422
@ -9,8 +9,4 @@ Created on: 19.10.21
|
||||
# Defines the date of the legal publishing of the LKompVzVo
|
||||
from django.utils import timezone
|
||||
|
||||
LKOMPVZVO_PUBLISH_DATE = timezone.make_aware(
|
||||
timezone.datetime.fromisoformat(
|
||||
"2018-06-16"
|
||||
)
|
||||
).date()
|
||||
LKOMPVZVO_PUBLISH_DATE = timezone.make_aware(timezone.datetime.fromisoformat("2018-06-16")).date()
|
||||
|
@ -31,6 +31,6 @@
|
||||
{% include 'analysis/reports/includes/intervention/card_intervention.html' %}
|
||||
{% include 'analysis/reports/includes/compensation/card_compensation.html' %}
|
||||
{% include 'analysis/reports/includes/eco_account/card_eco_account.html' %}
|
||||
{% include 'analysis/reports/includes/old_data/card_old_data.html' %}
|
||||
{% include 'analysis/reports/includes/old_data/card_old_interventions.html' %}
|
||||
</div>
|
||||
{% endblock %}
|
@ -10,7 +10,6 @@
|
||||
{% fa5_icon 'leaf' %}
|
||||
{% trans 'Compensations' %}
|
||||
</h5>
|
||||
<span>{% trans 'Binding date after' %} 16.06.2018</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -10,7 +10,6 @@
|
||||
{% fa5_icon 'tree' %}
|
||||
{% trans 'Eco-Accounts' %}
|
||||
</h5>
|
||||
<span>{% trans 'Binding date after' %} 16.06.2018</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -9,7 +9,6 @@
|
||||
{% fa5_icon 'pencil-ruler' %}
|
||||
{% trans 'Interventions' %}
|
||||
</h5>
|
||||
<span>{% trans 'Binding date after' %} 16.06.2018</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
3
analysis/tests.py
Normal file
3
analysis/tests.py
Normal file
@ -0,0 +1,3 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
@ -1,7 +0,0 @@
|
||||
"""
|
||||
Author: Michel Peltriaux
|
||||
Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany
|
||||
Contact: ksp-servicestelle@sgdnord.rlp.de
|
||||
Created on: 15.08.23
|
||||
|
||||
"""
|
@ -1,7 +0,0 @@
|
||||
"""
|
||||
Author: Michel Peltriaux
|
||||
Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany
|
||||
Contact: ksp-servicestelle@sgdnord.rlp.de
|
||||
Created on: 15.08.23
|
||||
|
||||
"""
|
@ -1,47 +0,0 @@
|
||||
"""
|
||||
Author: Michel Peltriaux
|
||||
Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany
|
||||
Contact: ksp-servicestelle@sgdnord.rlp.de
|
||||
Created on: 15.08.23
|
||||
|
||||
"""
|
||||
from datetime import timedelta
|
||||
|
||||
from django.urls import reverse
|
||||
from django.utils.timezone import now
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from analysis.forms import TimespanReportForm
|
||||
from konova.tests.test_views import BaseTestCase
|
||||
|
||||
|
||||
class TimeSpanReportFormTestCase(BaseTestCase):
|
||||
def setUp(self) -> None:
|
||||
super().setUp()
|
||||
eiv = self.create_dummy_intervention()
|
||||
|
||||
def test_init(self):
|
||||
form = TimespanReportForm()
|
||||
self.assertEqual(form.form_title, str(_("Generate report")))
|
||||
self.assertEqual(form.form_caption, str(_("Select a timespan and the desired conservation office") ))
|
||||
self.assertEqual(form.action_url, reverse("analysis:reports"))
|
||||
self.assertFalse(form.show_cancel_btn)
|
||||
self.assertEqual(form.action_btn_label, str(_("Continue")))
|
||||
|
||||
def test_save(self):
|
||||
date_from = now().date() - timedelta(days=365)
|
||||
date_to = now().date()
|
||||
office = self.get_conservation_office_code()
|
||||
data = {
|
||||
"date_from": date_from,
|
||||
"date_to": date_to,
|
||||
"conservation_office": office,
|
||||
}
|
||||
form = TimespanReportForm(data)
|
||||
self.assertTrue(form.is_valid(), msg=f"{form.errors}")
|
||||
|
||||
detail_report_url = form.save()
|
||||
self.assertEqual(
|
||||
detail_report_url,
|
||||
reverse("analysis:report-detail", args=(office.id,)) + f"?df={date_from}&dt={date_to}"
|
||||
)
|
@ -1,98 +0,0 @@
|
||||
"""
|
||||
Author: Michel Peltriaux
|
||||
Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany
|
||||
Contact: ksp-servicestelle@sgdnord.rlp.de
|
||||
Created on: 17.08.23
|
||||
|
||||
"""
|
||||
from datetime import timedelta
|
||||
|
||||
from django.utils.timezone import now
|
||||
|
||||
from analysis.settings import LKOMPVZVO_PUBLISH_DATE
|
||||
from analysis.utils.report import TimespanReport
|
||||
from konova.sub_settings.django_settings import DEFAULT_DATE_FORMAT
|
||||
from konova.tests.test_views import BaseTestCase
|
||||
|
||||
|
||||
class TimeSpanReportTestCase(BaseTestCase):
|
||||
def setUp(self) -> None:
|
||||
super().setUp()
|
||||
|
||||
today = now().date()
|
||||
old_date = LKOMPVZVO_PUBLISH_DATE - timedelta(days=1)
|
||||
|
||||
self.conservation_office = self.get_conservation_office_code()
|
||||
self.eiv_old = self.create_dummy_intervention()
|
||||
self.kom_old = self.create_dummy_compensation(interv=self.eiv_old)
|
||||
self.assertNotEqual(self.compensation.intervention, self.kom_old.intervention)
|
||||
self.eiv = self.compensation.intervention
|
||||
self.oek_old = self.create_dummy_eco_account()
|
||||
|
||||
self.eiv_old.responsible.conservation_office = self.conservation_office
|
||||
self.eiv_old.legal.binding_date = old_date
|
||||
self.eiv_old.legal.registration_date = old_date
|
||||
|
||||
self.eiv.responsible.conservation_office = self.conservation_office
|
||||
self.eiv.legal.binding_date = today
|
||||
self.eiv.legal.registration_date = today
|
||||
|
||||
self.eco_account.responsible.conservation_office = self.conservation_office
|
||||
self.eco_account.legal.registration_date = today
|
||||
self.eco_account.legal.binding_date = today
|
||||
|
||||
self.oek_old.responsible.conservation_office = self.conservation_office
|
||||
self.oek_old.legal.registration_date = old_date
|
||||
self.oek_old.legal.binding_date = old_date
|
||||
|
||||
self.eiv.legal.save()
|
||||
self.eiv.responsible.save()
|
||||
|
||||
self.eiv_old.legal.save()
|
||||
self.eiv_old.responsible.save()
|
||||
|
||||
self.eco_account.legal.save()
|
||||
self.eco_account.responsible.save()
|
||||
|
||||
self.oek_old.legal.save()
|
||||
self.oek_old.responsible.save()
|
||||
|
||||
self.deduction.account = self.eco_account
|
||||
self.deduction.intervention = self.eiv
|
||||
self.deduction.save()
|
||||
|
||||
def test_init(self):
|
||||
date_from = now().date() - timedelta(days=365)
|
||||
date_to = now().date()
|
||||
report = TimespanReport(self.conservation_office.id, date_from, date_to)
|
||||
|
||||
self.assertEqual(report.office_id, self.conservation_office.id)
|
||||
self.assertEqual(report.date_from, date_from)
|
||||
self.assertEqual(report.date_to, date_to)
|
||||
|
||||
self.assertIsNotNone(report.intervention_report)
|
||||
self.assertIsNotNone(report.compensation_report)
|
||||
self.assertIsNotNone(report.eco_account_report)
|
||||
self.assertIsNotNone(report.old_data_report)
|
||||
|
||||
self.assertEqual(report.excel_map["date_from"], date_from.strftime(DEFAULT_DATE_FORMAT))
|
||||
self.assertEqual(report.excel_map["date_to"], date_to.strftime(DEFAULT_DATE_FORMAT))
|
||||
|
||||
self.assertEqual(report.old_data_report.queryset_intervention_count, 1)
|
||||
self.assertEqual(report.old_data_report.queryset_intervention_recorded_count, 0)
|
||||
self.assertEqual(report.old_data_report.queryset_comps_count, 1)
|
||||
self.assertEqual(report.old_data_report.queryset_acc_count, 1)
|
||||
self.assertEqual(report.old_data_report.queryset_acc_recorded_count, 0)
|
||||
|
||||
self.assertEqual(report.intervention_report.queryset_count, 1)
|
||||
self.assertEqual(report.intervention_report.queryset_checked_count, 0)
|
||||
self.assertEqual(report.intervention_report.queryset_recorded_count, 0)
|
||||
|
||||
self.assertEqual(report.compensation_report.queryset_count, 1)
|
||||
self.assertEqual(report.compensation_report.queryset_checked_count, 0)
|
||||
self.assertEqual(report.compensation_report.queryset_recorded_count, 0)
|
||||
|
||||
self.assertEqual(report.eco_account_report.queryset_count, 1)
|
||||
self.assertEqual(report.eco_account_report.queryset_recorded_count, 0)
|
||||
self.assertEqual(report.eco_account_report.queryset_deductions_count, 1)
|
||||
self.assertEqual(report.eco_account_report.queryset_deductions_recorded_count, 0)
|
@ -413,7 +413,6 @@ class TimespanReport:
|
||||
def __init__(self, id: str, date_from: str, date_to: str):
|
||||
# First fetch all eco account for this office
|
||||
self.queryset = EcoAccount.objects.filter(
|
||||
legal__registration_date__gt=LKOMPVZVO_PUBLISH_DATE,
|
||||
responsible__conservation_office__id=id,
|
||||
deleted=None,
|
||||
created__timestamp__date__gte=date_from,
|
||||
@ -517,8 +516,8 @@ class TimespanReport:
|
||||
legal__registration_date__lte=LKOMPVZVO_PUBLISH_DATE,
|
||||
responsible__conservation_office__id=id,
|
||||
deleted=None,
|
||||
created__timestamp__date__gte=date_from,
|
||||
created__timestamp__date__lte=date_to,
|
||||
created__timestamp__gte=date_from,
|
||||
created__timestamp__lte=date_to,
|
||||
)
|
||||
self.queryset_acc_recorded = self.queryset_acc.filter(
|
||||
recorded__isnull=False,
|
||||
|
@ -14,7 +14,7 @@ class APIUserToken(models.Model):
|
||||
valid_until = models.DateField(
|
||||
blank=True,
|
||||
null=True,
|
||||
help_text="Token is only valid until this date. Forever if null/blank.",
|
||||
help_text="Token is only valid until this date",
|
||||
)
|
||||
is_active = models.BooleanField(
|
||||
default=False,
|
||||
@ -25,11 +25,12 @@ class APIUserToken(models.Model):
|
||||
return self.token
|
||||
|
||||
@staticmethod
|
||||
def get_user_from_token(token: str):
|
||||
def get_user_from_token(token: str, username: str):
|
||||
""" Getter for the related user object
|
||||
|
||||
Args:
|
||||
token (str): The used token
|
||||
username (str): The username
|
||||
|
||||
Returns:
|
||||
user (User): Otherwise None
|
||||
@ -38,6 +39,7 @@ class APIUserToken(models.Model):
|
||||
try:
|
||||
token_obj = APIUserToken.objects.get(
|
||||
token=token,
|
||||
user__username=username
|
||||
)
|
||||
if not token_obj.is_active:
|
||||
raise PermissionError("Token unverified")
|
||||
|
@ -1,7 +0,0 @@
|
||||
"""
|
||||
Author: Michel Peltriaux
|
||||
Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany
|
||||
Contact: ksp-servicestelle@sgdnord.rlp.de
|
||||
Created on: 17.08.23
|
||||
|
||||
"""
|
@ -1,71 +0,0 @@
|
||||
"""
|
||||
Author: Michel Peltriaux
|
||||
Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany
|
||||
Contact: ksp-servicestelle@sgdnord.rlp.de
|
||||
Created on: 17.08.23
|
||||
|
||||
"""
|
||||
from datetime import timedelta
|
||||
|
||||
from django.utils.timezone import now
|
||||
|
||||
from api.models import APIUserToken
|
||||
from konova.tests.test_views import BaseTestCase
|
||||
|
||||
|
||||
class APIUserTokenTestCase(BaseTestCase):
|
||||
def setUp(self) -> None:
|
||||
super().setUp()
|
||||
|
||||
self.token = APIUserToken.objects.create()
|
||||
self.superuser.api_token = self.token
|
||||
self.superuser.save()
|
||||
|
||||
def test_str(self):
|
||||
self.assertEqual(str(self.token), self.token.token)
|
||||
|
||||
def test_get_user_from_token(self):
|
||||
a_day = timedelta(days=1)
|
||||
today = now().date()
|
||||
|
||||
self.assertFalse(self.token.is_active)
|
||||
self.assertIsNone(self.token.valid_until)
|
||||
|
||||
try:
|
||||
#Token not existing --> fail
|
||||
token_user = APIUserToken.get_user_from_token(self.token.token[::-1])
|
||||
self.fail("There should not have been any token")
|
||||
except PermissionError:
|
||||
pass
|
||||
|
||||
try:
|
||||
# Token not active --> fail
|
||||
token_user = APIUserToken.get_user_from_token(self.token.token)
|
||||
self.fail("Token is unverified but token user has been fetchable.")
|
||||
except PermissionError:
|
||||
pass
|
||||
self.token.is_active = True
|
||||
self.token.valid_until = today - a_day
|
||||
self.token.save()
|
||||
|
||||
try:
|
||||
# Token valid until yesterday --> fail
|
||||
token_user = APIUserToken.get_user_from_token(self.token.token)
|
||||
self.fail("Token reached end of lifetime but token user has been fetchable.")
|
||||
except PermissionError:
|
||||
pass
|
||||
|
||||
# Token valid until tomorrow --> success
|
||||
self.token.valid_until = today + a_day
|
||||
self.token.save()
|
||||
|
||||
token_user = APIUserToken.get_user_from_token(self.token.token)
|
||||
self.assertEqual(token_user, self.superuser)
|
||||
del token_user
|
||||
|
||||
# Token valid forever --> success
|
||||
self.token.valid_until = None
|
||||
self.token.save()
|
||||
token_user = APIUserToken.get_user_from_token(self.token.token)
|
||||
self.assertEqual(token_user, self.superuser)
|
||||
|
@ -53,13 +53,7 @@ class AbstractAPIView(View):
|
||||
# Fetch the proper user from the given request header token
|
||||
ksp_token = request.headers.get(KSP_TOKEN_HEADER_IDENTIFIER, None)
|
||||
ksp_user = request.headers.get(KSP_USER_HEADER_IDENTIFIER, None)
|
||||
token_user = APIUserToken.get_user_from_token(ksp_token)
|
||||
|
||||
if ksp_user != token_user.username:
|
||||
raise PermissionError(f"Invalid token for {ksp_user}")
|
||||
else:
|
||||
self.user = token_user
|
||||
|
||||
self.user = APIUserToken.get_user_from_token(ksp_token, ksp_user)
|
||||
request.user = self.user
|
||||
if not self.user.is_default_user():
|
||||
raise PermissionError("Default permissions required")
|
||||
|
@ -244,7 +244,6 @@ class CompensationWorkflowTestCase(BaseWorkflowTestCase):
|
||||
self.client_user.post(record_url, post_data)
|
||||
|
||||
# Check that the intervention is still not recorded
|
||||
self.intervention.refresh_from_db()
|
||||
self.assertIsNone(self.intervention.recorded)
|
||||
|
||||
# Now fill out the data for a compensation
|
||||
|
@ -106,17 +106,14 @@ class EcoAccountWorkflowTestCase(BaseWorkflowTestCase):
|
||||
"surface": test_deductable_surface,
|
||||
"conservation_office": test_conservation_office.id
|
||||
}
|
||||
response = self.client_user.post(url, post_data)
|
||||
self.assertEqual(response.status_code, 302, msg=f"{response.content.decode('utf-8')}")
|
||||
self.client_user.post(url, post_data)
|
||||
self.eco_account.refresh_from_db()
|
||||
|
||||
deductions_surface = self.eco_account.get_deductions_surface()
|
||||
|
||||
check_on_elements = {
|
||||
self.eco_account.title: new_title,
|
||||
self.eco_account.identifier: new_identifier,
|
||||
self.eco_account.deductable_surface: test_deductable_surface,
|
||||
self.eco_account.deductable_rest: test_deductable_surface - deductions_surface,
|
||||
self.eco_account.deductable_rest: test_deductable_surface,
|
||||
self.eco_account.comment: new_comment,
|
||||
}
|
||||
|
||||
@ -226,9 +223,7 @@ class EcoAccountWorkflowTestCase(BaseWorkflowTestCase):
|
||||
self.eco_account.refresh_from_db()
|
||||
self.assertEqual(1, self.eco_account.deductions.count())
|
||||
self.assertEqual(1, self.intervention.deductions.count())
|
||||
deduction = self.eco_account.deductions.get(
|
||||
surface=test_surface
|
||||
)
|
||||
deduction = self.eco_account.deductions.first()
|
||||
self.assertEqual(deduction.surface, test_surface)
|
||||
self.assertEqual(self.eco_account.deductable_rest, self.eco_account.deductable_surface - deduction.surface)
|
||||
self.assertEqual(deduction.account, self.eco_account)
|
||||
|
@ -400,13 +400,12 @@ class InterventionWorkflowTestCase(BaseWorkflowTestCase):
|
||||
self.eco_account.share_with_user_list([self.superuser])
|
||||
self.eco_account.save()
|
||||
num_all_deducs = EcoAccountDeduction.objects.count()
|
||||
num_acc_deducs = self.eco_account.deductions.count()
|
||||
|
||||
# Run the request
|
||||
self.client_user.post(new_url, post_data)
|
||||
|
||||
# Expect the deduction to be created, since all constraints are fulfilled
|
||||
self.assertEqual(num_acc_deducs + 1, self.eco_account.deductions.count())
|
||||
self.assertEqual(1, self.eco_account.deductions.count())
|
||||
self.assertEqual(num_all_deducs + 1, EcoAccountDeduction.objects.count())
|
||||
|
||||
# Make sure the deduction contains the expected data
|
||||
|
@ -157,17 +157,14 @@ class BaseTestCase(TestCase):
|
||||
intervention.generate_access_token(make_unique=True)
|
||||
return intervention
|
||||
|
||||
def create_dummy_compensation(self, interv: Intervention=None):
|
||||
def create_dummy_compensation(self):
|
||||
""" Creates a compensation which can be used for tests
|
||||
|
||||
Returns:
|
||||
|
||||
"""
|
||||
if not interv:
|
||||
if self.intervention is None:
|
||||
interv = self.create_dummy_intervention()
|
||||
else:
|
||||
interv = self.intervention
|
||||
if self.intervention is None:
|
||||
self.intervention = self.create_dummy_intervention()
|
||||
# Create dummy data
|
||||
# Create log entry
|
||||
action = UserActionLogEntry.get_created_action(self.superuser)
|
||||
@ -176,7 +173,7 @@ class BaseTestCase(TestCase):
|
||||
compensation = Compensation.objects.create(
|
||||
identifier="TEST",
|
||||
title="Test_title",
|
||||
intervention=interv,
|
||||
intervention=self.intervention,
|
||||
created=action,
|
||||
geometry=geometry,
|
||||
comment="Test",
|
||||
@ -199,11 +196,9 @@ class BaseTestCase(TestCase):
|
||||
handler = self.handler
|
||||
responsible_data.handler = handler
|
||||
responsible_data.save()
|
||||
|
||||
identifier = EcoAccount().generate_new_identifier()
|
||||
# Finally create main object, holding the other objects
|
||||
eco_account = EcoAccount.objects.create(
|
||||
identifier=identifier,
|
||||
identifier="TEST",
|
||||
title="Test_title",
|
||||
deductable_surface=500,
|
||||
legal=lega_data,
|
||||
@ -239,15 +234,10 @@ class BaseTestCase(TestCase):
|
||||
)
|
||||
return ema
|
||||
|
||||
def create_dummy_deduction(self, acc: EcoAccount = None, interv: Intervention = None):
|
||||
if not acc:
|
||||
acc = self.create_dummy_eco_account()
|
||||
if not interv:
|
||||
interv = self.create_dummy_intervention()
|
||||
|
||||
def create_dummy_deduction(self):
|
||||
return EcoAccountDeduction.objects.create(
|
||||
account=acc,
|
||||
intervention=interv,
|
||||
account=self.create_dummy_eco_account(),
|
||||
intervention=self.create_dummy_intervention(),
|
||||
surface=100,
|
||||
)
|
||||
|
||||
@ -280,14 +270,12 @@ class BaseTestCase(TestCase):
|
||||
Returns:
|
||||
|
||||
"""
|
||||
codes = KonovaCode.objects.all()
|
||||
if codes.count() == 0:
|
||||
codes = KonovaCode.objects.bulk_create([
|
||||
KonovaCode(id=1, is_selectable=True, is_archived=False, is_leaf=True, long_name="Test1"),
|
||||
KonovaCode(id=2, is_selectable=True, is_archived=False, is_leaf=True, long_name="Test2"),
|
||||
KonovaCode(id=3, is_selectable=True, is_archived=False, is_leaf=True, long_name="Test3"),
|
||||
KonovaCode(id=4, is_selectable=True, is_archived=False, is_leaf=True, long_name="Test4"),
|
||||
])
|
||||
codes = KonovaCode.objects.bulk_create([
|
||||
KonovaCode(id=1, is_selectable=True, is_archived=False, is_leaf=True, long_name="Test1"),
|
||||
KonovaCode(id=2, is_selectable=True, is_archived=False, is_leaf=True, long_name="Test2"),
|
||||
KonovaCode(id=3, is_selectable=True, is_archived=False, is_leaf=True, long_name="Test3"),
|
||||
KonovaCode(id=4, is_selectable=True, is_archived=False, is_leaf=True, long_name="Test4"),
|
||||
])
|
||||
return codes
|
||||
|
||||
def create_dummy_team(self):
|
||||
|
Binary file not shown.
@ -43,7 +43,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-08-17 10:09+0200\n"
|
||||
"POT-Creation-Date: 2023-07-10 10:16+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -96,16 +96,15 @@ msgstr "Verantwortliche Stelle"
|
||||
msgid "Click for selection"
|
||||
msgstr "Auswählen..."
|
||||
|
||||
#: analysis/forms.py:70 analysis/tests/unit/test_forms.py:25
|
||||
#: analysis/forms.py:70
|
||||
msgid "Generate report"
|
||||
msgstr "Bericht generieren"
|
||||
|
||||
#: analysis/forms.py:71 analysis/tests/unit/test_forms.py:26
|
||||
#: analysis/forms.py:71
|
||||
msgid "Select a timespan and the desired conservation office"
|
||||
msgstr "Wählen Sie die Zeitspanne und die gewünschte Eintragungsstelle"
|
||||
|
||||
#: analysis/forms.py:74 analysis/tests/unit/test_forms.py:29
|
||||
#: konova/forms/modals/base_form.py:30
|
||||
#: analysis/forms.py:74 konova/forms/modals/base_form.py:30
|
||||
msgid "Continue"
|
||||
msgstr "Weiter"
|
||||
|
||||
@ -232,12 +231,6 @@ msgstr "Andere Zulassungsbehörden"
|
||||
msgid "Compensations"
|
||||
msgstr "Kompensationen"
|
||||
|
||||
#: analysis/templates/analysis/reports/includes/compensation/card_compensation.html:13
|
||||
#: analysis/templates/analysis/reports/includes/eco_account/card_eco_account.html:13
|
||||
#: analysis/templates/analysis/reports/includes/intervention/card_intervention.html:12
|
||||
msgid "Binding date after"
|
||||
msgstr "Bestandskraft- bzw. Rechtskraftdatum nach"
|
||||
|
||||
#: analysis/templates/analysis/reports/includes/eco_account/card_eco_account.html:11
|
||||
msgid "Eco-Accounts"
|
||||
msgstr "Ökokonten"
|
||||
@ -352,11 +345,11 @@ msgstr "Eingriff"
|
||||
msgid "Eco-account"
|
||||
msgstr "Ökokonto"
|
||||
|
||||
#: analysis/templates/analysis/reports/includes/old_data/card_old_data.html:11
|
||||
#: analysis/templates/analysis/reports/includes/old_data/card_old_interventions.html:11
|
||||
msgid "Old interventions"
|
||||
msgstr "Altfälle"
|
||||
|
||||
#: analysis/templates/analysis/reports/includes/old_data/card_old_data.html:13
|
||||
#: analysis/templates/analysis/reports/includes/old_data/card_old_interventions.html:13
|
||||
msgid "Binding date before"
|
||||
msgstr "Bestandskraft- bzw. Rechtskraftdatum vor"
|
||||
|
||||
@ -2298,7 +2291,7 @@ msgstr ""
|
||||
"Dieses Datum ist unrealistisch. Geben Sie bitte das korrekte Datum ein "
|
||||
"(>1950)."
|
||||
|
||||
#: konova/views/home.py:75 templates/navbars/navbar.html:16
|
||||
#: konova/views/home.py:74 templates/navbars/navbar.html:16
|
||||
msgid "Home"
|
||||
msgstr "Home"
|
||||
|
||||
@ -2306,13 +2299,13 @@ msgstr "Home"
|
||||
msgid "Log"
|
||||
msgstr "Log"
|
||||
|
||||
#: konova/views/map_proxy.py:70
|
||||
#: konova/views/map_proxy.py:71
|
||||
msgid ""
|
||||
"The external service is currently unavailable.<br>Please try again in a few "
|
||||
"moments..."
|
||||
msgstr ""
|
||||
"Der externe Dienst ist zur Zeit nicht erreichbar.<br>Versuchen Sie es in ein "
|
||||
"paar Sekunden nochmal."
|
||||
"Der externe Dienst ist zur Zeit nicht erreichbar.<br>Versuchen Sie es in ein paar "
|
||||
"Sekunden nochmal."
|
||||
|
||||
#: konova/views/record.py:30
|
||||
msgid "{} unrecorded"
|
||||
|
Loading…
Reference in New Issue
Block a user