diff --git a/compensation/forms/eco_account.py b/compensation/forms/eco_account.py
index 6bc12618..360dd343 100644
--- a/compensation/forms/eco_account.py
+++ b/compensation/forms/eco_account.py
@@ -14,6 +14,7 @@ from compensation.forms.mixins import CompensationResponsibleFormMixin, PikCompe
from compensation.models import EcoAccount
from intervention.models import Handler, Responsibility, Legal
from konova.forms import SimpleGeomForm
+from konova.forms.modals import RemoveModalForm
from user.models import User, UserActionLogEntry
@@ -127,6 +128,8 @@ class NewEcoAccountForm(AbstractCompensationForm, CompensationResponsibleFormMix
# Add the log entry to the main objects log list
acc.log.add(action)
+
+ acc.update_deductable_rest()
return acc
@@ -209,4 +212,19 @@ class EditEcoAccountForm(NewEcoAccountForm):
# Add the log entry to the main objects log list
self.instance.log.add(action)
+
+ self.instance.update_deductable_rest()
return self.instance
+
+
+class RemoveEcoAccountModalForm(RemoveModalForm):
+
+ def is_valid(self):
+ super_valid = super().is_valid()
+ has_deductions = self.instance.deductions.exists()
+ if has_deductions:
+ self.add_error(
+ "confirm",
+ _("The account can not be removed, since there are still deductions.")
+ )
+ return super_valid and not has_deductions
diff --git a/compensation/templates/compensation/detail/compensation/includes/actions.html b/compensation/templates/compensation/detail/compensation/includes/actions.html
index 87f49141..3fa4769b 100644
--- a/compensation/templates/compensation/detail/compensation/includes/actions.html
+++ b/compensation/templates/compensation/detail/compensation/includes/actions.html
@@ -74,6 +74,10 @@
{% endif %}
+ {% empty %}
+
+ {% trans 'Missing' %}
+
{% endfor %}
diff --git a/compensation/templates/compensation/detail/compensation/includes/states-after.html b/compensation/templates/compensation/detail/compensation/includes/states-after.html
index 7faa0f1e..9c02978b 100644
--- a/compensation/templates/compensation/detail/compensation/includes/states-after.html
+++ b/compensation/templates/compensation/detail/compensation/includes/states-after.html
@@ -68,6 +68,10 @@
{% endif %}
+ {% empty %}
+
+ {% trans 'Missing' %}
+
{% endfor %}
diff --git a/compensation/templates/compensation/detail/compensation/includes/states-before.html b/compensation/templates/compensation/detail/compensation/includes/states-before.html
index 23faed43..95917389 100644
--- a/compensation/templates/compensation/detail/compensation/includes/states-before.html
+++ b/compensation/templates/compensation/detail/compensation/includes/states-before.html
@@ -68,6 +68,10 @@
{% endif %}
+ {% empty %}
+
+ {% trans 'Missing' %}
+
{% endfor %}
diff --git a/compensation/templates/compensation/detail/eco_account/includes/actions.html b/compensation/templates/compensation/detail/eco_account/includes/actions.html
index 8ae7c8fd..7a986535 100644
--- a/compensation/templates/compensation/detail/eco_account/includes/actions.html
+++ b/compensation/templates/compensation/detail/eco_account/includes/actions.html
@@ -73,6 +73,10 @@
{% endif %}
+ {% empty %}
+
+ {% trans 'Missing' %}
+
{% endfor %}
diff --git a/compensation/templates/compensation/detail/eco_account/includes/states-after.html b/compensation/templates/compensation/detail/eco_account/includes/states-after.html
index 4fce2f0f..05a05e31 100644
--- a/compensation/templates/compensation/detail/eco_account/includes/states-after.html
+++ b/compensation/templates/compensation/detail/eco_account/includes/states-after.html
@@ -68,6 +68,10 @@
{% endif %}
+ {% empty %}
+
+ {% trans 'Missing' %}
+
{% endfor %}
diff --git a/compensation/templates/compensation/detail/eco_account/includes/states-before.html b/compensation/templates/compensation/detail/eco_account/includes/states-before.html
index 1c6311cb..10b3f63b 100644
--- a/compensation/templates/compensation/detail/eco_account/includes/states-before.html
+++ b/compensation/templates/compensation/detail/eco_account/includes/states-before.html
@@ -68,6 +68,10 @@
{% endif %}
+ {% empty %}
+
+ {% trans 'Missing' %}
+
{% endfor %}
diff --git a/compensation/tests/ecoaccount/test_workflow.py b/compensation/tests/ecoaccount/test_workflow.py
index c7efb05a..ef65edaa 100644
--- a/compensation/tests/ecoaccount/test_workflow.py
+++ b/compensation/tests/ecoaccount/test_workflow.py
@@ -47,7 +47,7 @@ class EcoAccountWorkflowTestCase(BaseWorkflowTestCase):
"identifier": test_id,
"title": test_title,
"geom": geom_json,
- "deductable_surface": test_deductable_surface,
+ "surface": test_deductable_surface,
"conservation_office": test_conservation_office.id
}
self.client_user.post(new_url, post_data)
@@ -61,6 +61,8 @@ class EcoAccountWorkflowTestCase(BaseWorkflowTestCase):
self.assertEqual(acc.identifier, test_id)
self.assertEqual(acc.title, test_title)
+ self.assertEqual(acc.deductable_surface, test_deductable_surface)
+ self.assertEqual(acc.deductable_rest, test_deductable_surface)
self.assert_equal_geometries(acc.geometry.geom, test_geom)
self.assertEqual(acc.log.count(), 1)
@@ -84,7 +86,7 @@ class EcoAccountWorkflowTestCase(BaseWorkflowTestCase):
new_comment = self.create_dummy_string()
new_geometry = MultiPolygon(srid=4326) # Create an empty geometry
test_conservation_office = self.get_conservation_office_code()
- test_deductable_surface = 10005
+ test_deductable_surface = self.eco_account.deductable_surface + 100
check_on_elements = {
self.eco_account.title: new_title,
@@ -110,6 +112,7 @@ class EcoAccountWorkflowTestCase(BaseWorkflowTestCase):
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,
self.eco_account.comment: new_comment,
}
@@ -194,14 +197,14 @@ class EcoAccountWorkflowTestCase(BaseWorkflowTestCase):
# Perform request --> expect to fail
self.client_user.post(deduct_url, post_data)
- # Expect that no deduction has been created
+ # Expect that no deduction has been created since the eco account is not recorded, yet
self.assertEqual(0, self.eco_account.deductions.count())
self.assertEqual(0, self.intervention.deductions.count())
self.assertEqual(pre_deduction_acc_log_count, 0)
self.assertEqual(pre_deduction_int_log_count, 0)
# Now mock the eco account as it would be recorded (with invalid data)
- # Make sure the deductible surface is high enough for the request
+ # Make sure the deductible surface is valid for the request
self.eco_account.set_recorded(self.superuser)
self.eco_account.refresh_from_db()
self.eco_account.deductable_surface = test_surface + 1.00
@@ -216,10 +219,12 @@ class EcoAccountWorkflowTestCase(BaseWorkflowTestCase):
self.client_user.post(deduct_url, post_data)
# Expect that the deduction has been created
+ 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.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)
self.assertEqual(deduction.intervention, self.intervention)
@@ -262,6 +267,7 @@ class EcoAccountWorkflowTestCase(BaseWorkflowTestCase):
self.eco_account.refresh_from_db()
deduction.refresh_from_db()
+ self.assertEqual(self.eco_account.deductable_rest, self.eco_account.deductable_surface - deduction.surface)
self.assertEqual(num_deductions_intervention, self.intervention.deductions.count())
self.assertEqual(num_deductions_account, self.eco_account.deductions.count())
self.assertEqual(deduction.surface, test_surface)
@@ -275,6 +281,7 @@ class EcoAccountWorkflowTestCase(BaseWorkflowTestCase):
def test_remove_deduction(self):
intervention = self.deduction.intervention
account = self.deduction.account
+ deducted_surface = self.deduction.surface
# Prepare url and form data to be posted
new_url = reverse("compensation:acc:remove-deduction", args=(account.id, self.deduction.id))
@@ -287,6 +294,7 @@ class EcoAccountWorkflowTestCase(BaseWorkflowTestCase):
pre_edit_intervention_log_count = intervention.log.count()
pre_edit_account_log_count = account.log.count()
+ pre_edit_account_rest = account.deductable_rest
num_deductions_intervention = intervention.deductions.count()
num_deductions_account = account.deductions.count()
@@ -297,6 +305,7 @@ class EcoAccountWorkflowTestCase(BaseWorkflowTestCase):
self.assertEqual(num_deductions_intervention - 1, intervention.deductions.count())
self.assertEqual(num_deductions_account - 1, account.deductions.count())
+ self.assertEqual(account.deductable_rest, pre_edit_account_rest + deducted_surface)
# Expect logs to be set
self.assertEqual(pre_edit_intervention_log_count + 1, intervention.log.count())
diff --git a/compensation/views/eco_account/eco_account.py b/compensation/views/eco_account/eco_account.py
index 1d259b95..1070dfe3 100644
--- a/compensation/views/eco_account/eco_account.py
+++ b/compensation/views/eco_account/eco_account.py
@@ -13,13 +13,12 @@ from django.shortcuts import get_object_or_404, redirect, render
from django.urls import reverse
from django.utils.translation import gettext_lazy as _
-from compensation.forms.eco_account import EditEcoAccountForm, NewEcoAccountForm
+from compensation.forms.eco_account import EditEcoAccountForm, NewEcoAccountForm, RemoveEcoAccountModalForm
from compensation.models import EcoAccount
from compensation.tables.eco_account import EcoAccountTable
from konova.contexts import BaseContext
from konova.decorators import shared_access_required, default_group_required, any_group_check, login_required_modal
from konova.forms import SimpleGeomForm
-from konova.forms.modals import RemoveModalForm
from konova.settings import ETS_GROUP, DEFAULT_GROUP, ZB_GROUP
from konova.sub_settings.context_settings import TAB_TITLE_IDENTIFIER
from konova.utils.message_templates import CANCEL_ACC_RECORDED_OR_DEDUCTED, RECORDED_BLOCKS_EDIT, FORM_INVALID, \
@@ -260,7 +259,7 @@ def remove_view(request: HttpRequest, id: str):
messages.info(request, CANCEL_ACC_RECORDED_OR_DEDUCTED)
return redirect("compensation:acc:detail", id=id)
- form = RemoveModalForm(request.POST or None, instance=acc, request=request)
+ form = RemoveEcoAccountModalForm(request.POST or None, instance=acc, request=request)
return form.process_request(
request=request,
msg_success=_("Eco-account removed"),
diff --git a/ema/templates/ema/detail/includes/actions.html b/ema/templates/ema/detail/includes/actions.html
index 0c352c11..91110701 100644
--- a/ema/templates/ema/detail/includes/actions.html
+++ b/ema/templates/ema/detail/includes/actions.html
@@ -71,6 +71,10 @@
{% endif %}
+ {% empty %}
+
+ {% trans 'Missing' %}
+
{% endfor %}
diff --git a/ema/templates/ema/detail/includes/states-after.html b/ema/templates/ema/detail/includes/states-after.html
index 56e87be1..78cbee0a 100644
--- a/ema/templates/ema/detail/includes/states-after.html
+++ b/ema/templates/ema/detail/includes/states-after.html
@@ -66,6 +66,10 @@
{% endif %}
+ {% empty %}
+
+ {% trans 'Missing' %}
+
{% endfor %}
diff --git a/ema/templates/ema/detail/includes/states-before.html b/ema/templates/ema/detail/includes/states-before.html
index 2fd7c359..fb29024a 100644
--- a/ema/templates/ema/detail/includes/states-before.html
+++ b/ema/templates/ema/detail/includes/states-before.html
@@ -66,6 +66,10 @@
{% endif %}
+ {% empty %}
+
+ {% trans 'Missing' %}
+
{% endfor %}
diff --git a/intervention/forms/modals/deduction.py b/intervention/forms/modals/deduction.py
index 130ef2f8..8e12a442 100644
--- a/intervention/forms/modals/deduction.py
+++ b/intervention/forms/modals/deduction.py
@@ -163,6 +163,10 @@ class NewEcoAccountDeductionModalForm(BaseModalForm):
self.cleaned_data["account"].mark_as_edited(self.user, edit_comment=DEDUCTION_ADDED)
return deduction
+ def check_for_recorded_instance(self):
+ # Ignore super() implementation
+ return
+
class EditEcoAccountDeductionModalForm(NewEcoAccountDeductionModalForm):
deduction = None
@@ -231,6 +235,16 @@ class EditEcoAccountDeductionModalForm(NewEcoAccountDeductionModalForm):
old_account.send_notification_mail_on_deduction_change(data_changes)
return deduction
+ def check_for_recorded_instance(self):
+ """
+ Extension to super class base method
+
+ Returns:
+
+ """
+ if self.deduction.intervention.is_recorded:
+ self.block_form()
+
class RemoveEcoAccountDeductionModalForm(RemoveModalForm):
""" Removing modal form for EcoAccountDeduction
@@ -249,4 +263,8 @@ class RemoveEcoAccountDeductionModalForm(RemoveModalForm):
with transaction.atomic():
self.deduction.intervention.mark_as_edited(self.user, edit_comment=DEDUCTION_REMOVED)
self.deduction.account.mark_as_edited(self.user, edit_comment=DEDUCTION_REMOVED)
- self.deduction.delete()
\ No newline at end of file
+ self.deduction.delete()
+
+ def check_for_recorded_instance(self):
+ if self.deduction.intervention.is_recorded:
+ self.block_form()
diff --git a/konova/forms/base_form.py b/konova/forms/base_form.py
index fb69999c..6b71c213 100644
--- a/konova/forms/base_form.py
+++ b/konova/forms/base_form.py
@@ -134,24 +134,21 @@ class BaseForm(forms.Form):
Returns:
"""
- from intervention.forms.modals.deduction import NewEcoAccountDeductionModalForm, EditEcoAccountDeductionModalForm, \
- RemoveEcoAccountDeductionModalForm
- from konova.forms.modals.resubmission_form import ResubmissionModalForm
is_none = self.instance is None
is_other_data_type = not isinstance(self.instance, BaseObject)
- is_deduction_form_from_account = isinstance(
- self,
- (
- NewEcoAccountDeductionModalForm,
- ResubmissionModalForm,
- EditEcoAccountDeductionModalForm,
- RemoveEcoAccountDeductionModalForm,
- )
- ) and isinstance(self.instance, EcoAccount)
- if is_none or is_other_data_type or is_deduction_form_from_account:
+ if is_none or is_other_data_type:
# Do nothing
return
if self.instance.is_recorded:
- self.template = "form/recorded_no_edit.html"
+ self.block_form()
+
+ def block_form(self):
+ """
+ Overwrites template, providing no actions
+
+ Returns:
+
+ """
+ self.template = "form/recorded_no_edit.html"
\ No newline at end of file
diff --git a/konova/forms/modals/resubmission_form.py b/konova/forms/modals/resubmission_form.py
index d1d846f6..97a52dcb 100644
--- a/konova/forms/modals/resubmission_form.py
+++ b/konova/forms/modals/resubmission_form.py
@@ -83,3 +83,6 @@ class ResubmissionModalForm(BaseModalForm):
self.instance.resubmissions.add(self.resubmission)
return self.resubmission
+ def check_for_recorded_instance(self):
+ # Ignore logic in super() implementation
+ return
diff --git a/konova/tests/test_views.py b/konova/tests/test_views.py
index 32ab5986..84a4238b 100644
--- a/konova/tests/test_views.py
+++ b/konova/tests/test_views.py
@@ -187,6 +187,7 @@ class BaseTestCase(TestCase):
eco_account = EcoAccount.objects.create(
identifier="TEST",
title="Test_title",
+ deductable_surface=500,
legal=lega_data,
responsible=responsible_data,
created=action,
diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo
index fadbaa83..9f50fc49 100644
Binary files a/locale/de/LC_MESSAGES/django.mo and b/locale/de/LC_MESSAGES/django.mo differ
diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po
index 27f98ffc..9e41e2b3 100644
--- a/locale/de/LC_MESSAGES/django.po
+++ b/locale/de/LC_MESSAGES/django.po
@@ -43,7 +43,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-08-25 10:57+0200\n"
+"POT-Creation-Date: 2022-10-11 16:39+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -446,37 +446,41 @@ msgstr "Neue Kompensation"
msgid "Edit compensation"
msgstr "Bearbeite Kompensation"
-#: compensation/forms/eco_account.py:29 compensation/utils/quality.py:95
+#: compensation/forms/eco_account.py:30 compensation/utils/quality.py:95
msgid "Available Surface"
msgstr "Verfügbare Fläche"
-#: compensation/forms/eco_account.py:32
+#: compensation/forms/eco_account.py:33
msgid "The amount that can be used for deductions"
msgstr "Die für Abbuchungen zur Verfügung stehende Menge"
-#: compensation/forms/eco_account.py:41
+#: compensation/forms/eco_account.py:42
#: compensation/templates/compensation/detail/eco_account/view.html:67
#: compensation/utils/quality.py:83
msgid "Agreement date"
msgstr "Vereinbarungsdatum"
-#: compensation/forms/eco_account.py:43
+#: compensation/forms/eco_account.py:44
msgid "When did the parties agree on this?"
msgstr "Wann wurde dieses Ökokonto offiziell vereinbart?"
-#: compensation/forms/eco_account.py:69
+#: compensation/forms/eco_account.py:70
#: compensation/views/eco_account/eco_account.py:94
msgid "New Eco-Account"
msgstr "Neues Ökokonto"
-#: compensation/forms/eco_account.py:78
+#: compensation/forms/eco_account.py:79
msgid "Eco-Account XY; Location ABC"
msgstr "Ökokonto XY; Flur ABC"
-#: compensation/forms/eco_account.py:140
+#: compensation/forms/eco_account.py:141
msgid "Edit Eco-Account"
msgstr "Ökokonto bearbeiten"
+#: compensation/forms/eco_account.py:224
+msgid "The account can not be removed, since there are still deductions."
+msgstr "Das Ökokonto kann nicht entfernt werden, da hierzu noch Abbuchungen vorliegen."
+
#: compensation/forms/mixins.py:37
#: compensation/templates/compensation/detail/eco_account/view.html:63
#: compensation/templates/compensation/report/eco_account/report.html:20
@@ -734,14 +738,14 @@ msgstr ""
msgid "Pieces"
msgstr "Stück"
-#: compensation/models/eco_account.py:56
+#: compensation/models/eco_account.py:62
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/eco_account.py:63
+#: compensation/models/eco_account.py:69
msgid ""
"Deductable surface can not be smaller than the sum of already existing "
"deductions. Please contact the responsible users for the deductions!"
@@ -781,19 +785,19 @@ msgid "Not recorded yet"
msgstr "Noch nicht verzeichnet"
#: compensation/tables/compensation.py:166
-#: compensation/tables/eco_account.py:150 ema/tables.py:133
+#: compensation/tables/eco_account.py:153 ema/tables.py:133
#: intervention/tables.py:164
msgid "Recorded on {} by {}"
msgstr "Am {} von {} verzeichnet worden"
#: compensation/tables/compensation.py:186
-#: compensation/tables/eco_account.py:172 ema/tables.py:154
+#: compensation/tables/eco_account.py:175 ema/tables.py:154
#: intervention/tables.py:185
msgid "Full access granted"
msgstr "Für Sie freigegeben - Datensatz kann bearbeitet werden"
#: compensation/tables/compensation.py:186
-#: compensation/tables/eco_account.py:172 ema/tables.py:154
+#: compensation/tables/eco_account.py:175 ema/tables.py:154
#: intervention/tables.py:185
msgid "Access not granted"
msgstr "Nicht freigegeben - Datensatz nur lesbar"
@@ -808,7 +812,7 @@ msgstr "Verfügbar"
msgid "Eco Accounts"
msgstr "Ökokonten"
-#: compensation/tables/eco_account.py:147
+#: compensation/tables/eco_account.py:150
msgid "Not recorded yet. Can not be used for deductions, yet."
msgstr ""
"Noch nicht verzeichnet. Kann noch nicht für Abbuchungen genutzt werden."
@@ -876,6 +880,34 @@ msgstr "Keine Zusatzmerkmale"
msgid "Remove action"
msgstr "Maßnahme entfernen"
+#: compensation/templates/compensation/detail/compensation/includes/actions.html:79
+#: compensation/templates/compensation/detail/compensation/includes/states-after.html:73
+#: compensation/templates/compensation/detail/compensation/includes/states-before.html:73
+#: compensation/templates/compensation/detail/eco_account/includes/actions.html:78
+#: compensation/templates/compensation/detail/eco_account/includes/states-after.html:73
+#: compensation/templates/compensation/detail/eco_account/includes/states-before.html:73
+#: compensation/templates/compensation/detail/eco_account/view.html:58
+#: compensation/templates/compensation/detail/eco_account/view.html:62
+#: compensation/templates/compensation/detail/eco_account/view.html:66
+#: compensation/templates/compensation/detail/eco_account/view.html:70
+#: ema/templates/ema/detail/includes/actions.html:76
+#: ema/templates/ema/detail/includes/states-after.html:71
+#: ema/templates/ema/detail/includes/states-before.html:71
+#: ema/templates/ema/detail/view.html:48 ema/templates/ema/detail/view.html:52
+#: ema/templates/ema/detail/view.html:56
+#: intervention/templates/intervention/detail/view.html:30
+#: intervention/templates/intervention/detail/view.html:34
+#: intervention/templates/intervention/detail/view.html:38
+#: intervention/templates/intervention/detail/view.html:47
+#: intervention/templates/intervention/detail/view.html:51
+#: intervention/templates/intervention/detail/view.html:55
+#: intervention/templates/intervention/detail/view.html:59
+#: intervention/templates/intervention/detail/view.html:63
+#: intervention/templates/intervention/detail/view.html:100
+#: intervention/templates/intervention/detail/view.html:104
+msgid "Missing"
+msgstr "Fehlend"
+
#: compensation/templates/compensation/detail/compensation/includes/controls.html:5
#: compensation/templates/compensation/detail/eco_account/includes/controls.html:5
#: ema/templates/ema/detail/includes/controls.html:5
@@ -1186,7 +1218,7 @@ msgid "Recorded on"
msgstr "Verzeichnet am"
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:65
-#: intervention/forms/modals/deduction.py:173
+#: intervention/forms/modals/deduction.py:177
#: intervention/templates/intervention/detail/includes/deductions.html:60
msgid "Edit Deduction"
msgstr "Abbuchung bearbeiten"
@@ -1200,25 +1232,6 @@ msgstr "Abbuchung entfernen"
msgid "No surface deductable"
msgstr "Keine Flächenmenge für Abbuchungen eingegeben. Bitte bearbeiten."
-#: compensation/templates/compensation/detail/eco_account/view.html:58
-#: compensation/templates/compensation/detail/eco_account/view.html:62
-#: compensation/templates/compensation/detail/eco_account/view.html:66
-#: compensation/templates/compensation/detail/eco_account/view.html:70
-#: ema/templates/ema/detail/view.html:48 ema/templates/ema/detail/view.html:52
-#: ema/templates/ema/detail/view.html:56
-#: intervention/templates/intervention/detail/view.html:30
-#: intervention/templates/intervention/detail/view.html:34
-#: intervention/templates/intervention/detail/view.html:38
-#: intervention/templates/intervention/detail/view.html:47
-#: intervention/templates/intervention/detail/view.html:51
-#: intervention/templates/intervention/detail/view.html:55
-#: intervention/templates/intervention/detail/view.html:59
-#: intervention/templates/intervention/detail/view.html:63
-#: intervention/templates/intervention/detail/view.html:100
-#: intervention/templates/intervention/detail/view.html:104
-msgid "Missing"
-msgstr "fehlt"
-
#: compensation/templates/compensation/detail/eco_account/view.html:71
#: ema/templates/ema/detail/view.html:57
msgid "Action handler"
@@ -1297,7 +1310,7 @@ msgstr "Ökokonto {} hinzugefügt"
msgid "Eco-Account {} edited"
msgstr "Ökokonto {} bearbeitet"
-#: compensation/views/eco_account/eco_account.py:263
+#: compensation/views/eco_account/eco_account.py:265
msgid "Eco-account removed"
msgstr "Ökokonto entfernt"
@@ -1341,7 +1354,7 @@ msgstr "EMA {} hinzugefügt"
msgid "EMA {} edited"
msgstr "EMA {} bearbeitet"
-#: ema/views/ema.py:234
+#: ema/views/ema.py:235
msgid "EMA removed"
msgstr "EMA entfernt"
@@ -1639,19 +1652,19 @@ msgstr "Eingriff {} hinzugefügt"
msgid "Intervention {} edited"
msgstr "Eingriff {} bearbeitet"
-#: intervention/views/intervention.py:249
+#: intervention/views/intervention.py:250
msgid "{} removed"
msgstr "{} entfernt"
-#: konova/decorators.py:33
+#: konova/decorators.py:30
msgid "You need to be staff to perform this action!"
msgstr "Hierfür müssen Sie Mitarbeiter sein!"
-#: konova/decorators.py:48
+#: konova/decorators.py:45
msgid "You need to be administrator to perform this action!"
msgstr "Hierfür müssen Sie Administrator sein!"
-#: konova/decorators.py:66
+#: konova/decorators.py:63
msgid ""
"+++ Attention: You are not part of any group. You won't be able to create, "
"edit or do anything. Please contact an administrator. +++"
@@ -2210,7 +2223,7 @@ msgstr "{} wurde erfolgreich vom Nutzer {} geprüft! {}"
#: konova/utils/quality.py:32
msgid "missing"
-msgstr "fehlt"
+msgstr "fehlend"
#: konova/views/home.py:78 templates/navbars/navbar.html:16
msgid "Home"
@@ -2663,7 +2676,9 @@ msgstr "Keine Geometrie vorhanden"
#: templates/modal/modal_session_timed_out.html:3
msgid "Your session has timed out. Please reload the page to login."
-msgstr "Ihre Sitzung ist aufgrund von Inaktivität abgelaufen. Laden Sie die Seite erneut, um sich wieder einzuloggen."
+msgstr ""
+"Ihre Sitzung ist aufgrund von Inaktivität abgelaufen. Laden Sie die Seite "
+"erneut, um sich wieder einzuloggen."
#: templates/navbars/navbar.html:4
msgid "Kompensationsverzeichnis Service Portal"
@@ -2902,7 +2917,7 @@ msgid "Manage teams"
msgstr ""
#: user/templates/user/index.html:61 user/templates/user/team/index.html:19
-#: user/views.py:169
+#: user/views.py:171
msgid "Teams"
msgstr ""
@@ -2974,23 +2989,23 @@ msgstr "Neuer Token generiert. Administratoren sind informiert."
msgid "User API token"
msgstr "API Nutzer Token"
-#: user/views.py:180
+#: user/views.py:183
msgid "New team added"
msgstr "Neues Team hinzugefügt"
-#: user/views.py:194
+#: user/views.py:198
msgid "Team edited"
msgstr "Team bearbeitet"
-#: user/views.py:208
+#: user/views.py:213
msgid "Team removed"
msgstr "Team gelöscht"
-#: user/views.py:222
+#: user/views.py:228
msgid "You are not a member of this team"
msgstr "Sie sind kein Mitglied dieses Teams"
-#: user/views.py:229
+#: user/views.py:235
msgid "Left Team"
msgstr "Team verlassen"