Compare commits

...

2 Commits

Author SHA1 Message Date
mipel
5f85f49636 Recording data
* adds dynamic icon for recording and unrecording of data
* adds record view to intervention and eco accounts
* adds quality_check() method for Intervention and EcoAccount class which holds logic for data quality checking
* adds UserAction "unrecorded"
2021-08-10 17:19:42 +02:00
mipel
bd2413d63c EcoAccount detail view
* adds record control button
* adds html markup for invalid withdraws (unrecorded account)
* adds constraint to is_valid() method of NewWithdrawForm for checking whether the selected account for a withdraw is recorded or not
* adds/updates translations
2021-08-10 14:15:42 +02:00
17 changed files with 418 additions and 221 deletions

View File

@ -248,6 +248,10 @@ class EcoAccount(AbstractCompensation):
y,
)
def quality_check(self) -> (bool, dict):
# ToDo
pass
class EcoAccountWithdraw(BaseResource):
"""

View File

@ -12,6 +12,17 @@
</button>
</a>
{% if has_access %}
{% if is_ets_member %}
{% if obj.recorded %}
<button class="btn btn-default btn-modal mr-2" title="{% trans 'Unrecord' %}" data-form-url="{% url 'compensation:acc-record' obj.id %}">
{% fa5_icon 'bookmark' 'far' %}
</button>
{% else %}
<button class="btn btn-default btn-modal mr-2" title="{% trans 'Record' %}" data-form-url="{% url 'compensation:acc-record' obj.id %}">
{% fa5_icon 'bookmark' %}
</button>
{% endif %}
{% endif %}
{% if is_default_member %}
<a href="{% url 'home' %}" class="mr-2">
<button class="btn btn-default" title="{% trans 'Edit' %}">

View File

@ -40,9 +40,12 @@
</thead>
<tbody>
{% for withdraw in obj.withdraws.all %}
<tr>
<tr {% if withdraw.account.deleted %}class="align-middle alert-danger" title="{% trans 'Eco-account deleted! Withdraw invalid!' %}" {% elif not withdraw.account.recorded %}class="align-middle alert-danger" title="{% trans 'Eco-account not recorded! Withdraw invalid!' %}" {% endif %}>
<td class="align-middle">
<a href="{% url 'intervention:open' withdraw.intervention.id %}">
{% if withdraw.account.deleted or not withdraw.account.recorded %}
{% fa5_icon 'exclamation-triangle' %}
{% endif %}
{{ withdraw.intervention.identifier }}
</a>
</td>

View File

@ -24,6 +24,7 @@ urlaptterns_eco_acc = [
path('acc/new/', eco_account_views.new_view, name='acc-new'),
path('acc/<id>', eco_account_views.open_view, name='acc-open'),
path('acc/<id>/log', eco_account_views.log_view, name='acc-log'),
path('acc/<id>/record', eco_account_views.record_view, name='acc-record'),
path('acc/<id>/edit', eco_account_views.edit_view, name='acc-edit'),
path('acc/<id>/remove', eco_account_views.remove_view, name='acc-remove'),
path('acc/<id>/state/new', eco_account_views.state_new_view, name='acc-new-state'),

View File

@ -18,8 +18,8 @@ from compensation.models import EcoAccount
from compensation.tables import EcoAccountTable
from intervention.forms import NewWithdrawForm
from konova.contexts import BaseContext
from konova.decorators import any_group_check, default_group_required
from konova.forms import RemoveModalForm, SimpleGeomForm, NewDocumentForm
from konova.decorators import any_group_check, default_group_required, conservation_office_group_required
from konova.forms import RemoveModalForm, SimpleGeomForm, NewDocumentForm, RecordForm
from konova.settings import DEFAULT_GROUP, ZB_GROUP, ETS_GROUP
from konova.utils.user_checks import in_group
@ -188,6 +188,28 @@ def log_view(request: HttpRequest, id: str):
return render(request, template, context)
@login_required
@conservation_office_group_required
def record_view(request: HttpRequest, id:str):
""" Renders a modal form for recording an eco account
Args:
request (HttpRequest): The incoming request
id (str): The account's id
Returns:
"""
acc = get_object_or_404(EcoAccount, id=id)
form = RecordForm(request.POST or None, instance=acc, user=request.user)
msg_succ = _("{} unrecorded") if acc.recorded else _("{} recorded")
msg_succ = msg_succ.format(acc.identifier)
return form.process_request(
request,
msg_succ
)
@login_required
def state_new_view(request: HttpRequest, id: str):
""" Renders a form for adding new states for an eco account

View File

@ -408,9 +408,13 @@ class RunCheckForm(BaseModalForm):
def is_valid(self):
super_result = super().is_valid()
# Perform check
result, msgs = self.instance.check_validity()
self.errors.update(msgs)
return result & super_result
msgs = self.instance.quality_check()
for msg in msgs:
self.add_error(
"checked_intervention",
msg
)
return super_result and (len(msgs) == 0)
def save(self):
with transaction.atomic():
@ -439,7 +443,7 @@ class NewWithdrawForm(BaseModalForm):
label=_("Eco-account"),
label_suffix="",
help_text=_("Only recorded accounts can be selected for withdraws"),
queryset=EcoAccount.objects.filter(deleted=None, recorded__isnull=False),
queryset=EcoAccount.objects.filter(deleted=None),
widget=autocomplete.ModelSelect2(
url="accounts-autocomplete",
attrs={
@ -506,6 +510,14 @@ class NewWithdrawForm(BaseModalForm):
else:
acc = self.instance
if not acc.recorded:
self.add_error(
"account",
_("Eco-account {} is not recorded yet. You can only withdraw from recorded accounts.").format(acc.identifier)
)
return False
# Calculate valid surface
sum_surface = acc.get_surface()
sum_surface_withdraws = acc.get_surface_withdraws()
rest_surface = sum_surface - sum_surface_withdraws

View File

@ -194,39 +194,62 @@ class Intervention(BaseObject):
self.identifier = new_id
super().save(*args, **kwargs)
def check_validity(self) -> (bool, dict):
""" Validity check
def quality_check(self) -> list:
""" Quality check
Returns:
ret_msgs (list): True if quality acceptable, False otherwise
"""
ret_msgs = []
self._check_quality_responsible_data(ret_msgs)
self._check_quality_legal_data(ret_msgs)
# ToDo: Extend for more!
return ret_msgs
def _check_quality_responsible_data(self, ret_msgs: list):
""" Checks data quality of related ResponsibilityData
Args:
ret_msgs (dict): Holds error messages
Returns:
"""
ret_msgs = {}
missing_str = _("Missing")
not_missing_str = _("Exists")
try:
# Check for file numbers
if not self.responsible.registration_file_number or len(self.responsible.registration_file_number) == 0:
ret_msgs.append(_("Registration office file number missing"))
# Check responsible data
if self.responsible:
if self.responsible.registration_file_number is None or len(self.responsible.registration_file_number) == 0:
ret_msgs["Registration office file number"] = missing_str
if self.responsible.conservation_file_number is None or len(self.responsible.conservation_file_number) == 0:
ret_msgs["Conversation office file number"] = missing_str
else:
ret_msgs["responsible"] = missing_str
if not self.responsible.conservation_file_number or len(self.responsible.conservation_file_number) == 0:
ret_msgs.append(_("Conversation office file number missing"))
except AttributeError:
# responsible data not found
ret_msgs.append(_("Responsible data missing"))
# Check revocation
def _check_quality_legal_data(self, ret_msgs: list):
""" Checks data quality of related LegalData
Args:
ret_msgs (dict): Holds error messages
Returns:
"""
try:
# Check for a revocation
if self.legal.revocation:
ret_msgs["Revocation"] = not_missing_str
ret_msgs.append(_("Revocation exists"))
if self.legal:
if self.legal.registration_date is None:
ret_msgs["Registration date"] = missing_str
if self.legal.binding_date is None:
ret_msgs["Binding on"] = missing_str
else:
ret_msgs["legal"] = missing_str
ret_msgs.append(_("Registration date missing"))
ret_result = len(ret_msgs) == 0
return ret_result, ret_msgs
if self.legal.binding_date is None:
ret_msgs.append(_("Binding on missing"))
except AttributeError:
ret_msgs.append(_("Legal data missing"))
def get_LANIS_link(self) -> str:
""" Generates a link for LANIS depending on the geometry

View File

@ -21,11 +21,15 @@
</button>
{% endif %}
{% if is_ets_member %}
<a href="{% url 'home' %}" class="mr-2">
<button class="btn btn-default" title="{% trans 'Record' %}">
{% if intervention.recorded %}
<button class="btn btn-default btn-modal mr-2" title="{% trans 'Unrecord' %}" data-form-url="{% url 'intervention:record' intervention.id %}">
{% fa5_icon 'bookmark' 'far' %}
</button>
{% else %}
<button class="btn btn-default btn-modal mr-2" title="{% trans 'Record' %}" data-form-url="{% url 'intervention:record' intervention.id %}">
{% fa5_icon 'bookmark' %}
</button>
</a>
{% endif %}
{% endif %}
{% if is_default_member %}
<a href="{% url 'home' %}" class="mr-2">

View File

@ -40,10 +40,10 @@
</thead>
<tbody>
{% for withdraw in intervention.withdraws.all %}
<tr {% if withdraw.account.deleted %}class="align-middle alert-danger" title="{% trans 'Eco-account deleted! Withdraw invalid!' %}" {% endif %}>
<tr {% if withdraw.account.deleted %}class="align-middle alert-danger" title="{% trans 'Eco-account deleted! Withdraw invalid!' %}" {% elif not withdraw.account.recorded %}class="align-middle alert-danger" title="{% trans 'Eco-account not recorded! Withdraw invalid!' %}" {% endif %}>
<td class="align-middle">
<a href="{% url 'compensation:acc-open' withdraw.account.id %}">
{% if withdraw.account.deleted %}
{% if withdraw.account.deleted or not withdraw.account.recorded %}
{% fa5_icon 'exclamation-triangle' %}
{% endif %}
{{ withdraw.account.identifier }}

View File

@ -8,7 +8,8 @@ Created on: 30.11.20
from django.urls import path
from intervention.views import index_view, new_view, open_view, edit_view, remove_view, new_document_view, share_view, \
create_share_view, remove_revocation_view, new_revocation_view, run_check_view, log_view, new_withdraw_view
create_share_view, remove_revocation_view, new_revocation_view, run_check_view, log_view, new_withdraw_view, \
record_view
app_name = "intervention"
urlpatterns = [
@ -22,6 +23,7 @@ urlpatterns = [
path('<id>/share/<token>', share_view, name='share'),
path('<id>/share', create_share_view, name='share-create'),
path('<id>/check', run_check_view, name='run-check'),
path('<id>/record', record_view, name='record'),
# Withdraws
path('<id>/withdraw/new', new_withdraw_view, name='acc-new-withdraw'),

View File

@ -10,9 +10,9 @@ from intervention.models import Intervention, Revocation
from intervention.tables import InterventionTable
from konova.contexts import BaseContext
from konova.decorators import *
from konova.forms import SimpleGeomForm, NewDocumentForm, RemoveModalForm
from konova.forms import SimpleGeomForm, NewDocumentForm, RemoveModalForm, RecordForm
from konova.sub_settings.django_settings import DEFAULT_DATE_FORMAT
from konova.utils.message_templates import FORM_INVALID
from konova.utils.message_templates import FORM_INVALID, INTERVENTION_INVALID
from konova.utils.user_checks import in_group
@ -304,34 +304,11 @@ def run_check_view(request: HttpRequest, id: str):
"""
intervention = get_object_or_404(Intervention, id=id)
form = RunCheckForm(request.POST or None, instance=intervention, user=request.user)
if request.method == "POST":
if form.is_valid():
form.save()
messages.info(
return form.process_request(
request,
_("Check performed")
msg_success=_("Check performed"),
msg_error=INTERVENTION_INVALID
)
else:
messages.error(
request,
_("There has been errors on this intervention:"),
extra_tags="danger"
)
for error_name, error_val in form.errors.items():
messages.error(
request,
_("{}: {}").format(_(error_name), _(error_val)),
extra_tags="danger"
)
return redirect(request.META.get("HTTP_REFERER", "home"))
elif request.method == "GET":
context = {
"form": form,
}
context = BaseContext(request, context).context
return render(request, form.template, context)
else:
raise NotImplementedError
@login_required
@ -413,3 +390,26 @@ def new_withdraw_view(request: HttpRequest, id: str):
request,
msg_success=_("Withdraw added")
)
@login_required
@conservation_office_group_required
def record_view(request: HttpRequest, id: str):
""" Renders a modal form for recording an intervention
Args:
request (HttpRequest): The incoming request
id (str): The intervention's id
Returns:
"""
intervention = get_object_or_404(Intervention, id=id)
form = RecordForm(request.POST or None, instance=intervention, user=request.user)
msg_succ = _("{} unrecorded") if intervention.recorded else _("{} recorded")
msg_succ = msg_succ.format(intervention.identifier)
return form.process_request(
request,
msg_succ,
msg_error=_("There are errors on this intervention:")
)

View File

@ -20,6 +20,8 @@ from django.shortcuts import redirect, render
from django.utils import timezone
from django.utils.translation import gettext_lazy as _
from compensation.models import EcoAccount
from intervention.models import Intervention
from konova.contexts import BaseContext
from konova.models import Document, BaseObject
from konova.utils.message_templates import FORM_INVALID
@ -328,3 +330,71 @@ class NewDocumentForm(BaseModalForm):
self.instance.log.add(edited_action)
return doc
class RecordForm(BaseModalForm):
""" Modal form for recording data
"""
confirm = forms.BooleanField(
label=_("Confirm record"),
label_suffix="",
widget=forms.CheckboxInput(),
required=True,
)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.form_title = _("Record data")
self.form_caption = _("I, {} {}, confirm that all necessary control steps have been performed by myself.").format(self.user.first_name, self.user.last_name)
if self.instance.recorded:
# unrecord!
self.fields["confirm"].label = _("Confirm unrecord")
self.form_title = _("Unrecord data")
self.form_caption = _("I, {} {}, confirm that this data must be unrecorded.").format(self.user.first_name, self.user.last_name)
implemented_cls_logic = {
Intervention,
EcoAccount
}
instance_name = self.instance.__class__
if instance_name not in implemented_cls_logic:
raise NotImplementedError
def is_valid(self):
""" Checks for instance's validity and data quality
Returns:
"""
super_val = super().is_valid()
msgs = self.instance.quality_check()
for msg in msgs:
self.add_error(
"confirm",
msg
)
return super_val and (len(msgs) == 0)
def save(self):
with transaction.atomic():
if self.cleaned_data["confirm"]:
if self.instance.recorded:
# unrecord!
unrecord_action = UserActionLogEntry.objects.create(
user=self.user,
action=UserAction.UNRECORDED
)
# Do not delete the old .recorded attribute, since it shall stay in the .log list!
self.instance.recorded = None
self.instance.log.add(unrecord_action)
else:
record_action = UserActionLogEntry.objects.create(
user=self.user,
action=UserAction.RECORDED
)
self.instance.recorded = record_action
self.instance.log.add(record_action)
self.instance.save()
return self.instance

View File

@ -8,7 +8,6 @@ Created on: 15.12.20
from django.utils.translation import gettext_lazy as _
from konova.settings import DEFAULT_GROUP, ZB_GROUP, ETS_GROUP
from user.enums import UserNotificationEnum
TEST_ORGANISATION_DATA = [
{

View File

@ -9,3 +9,4 @@ from django.utils.translation import gettext_lazy as _
FORM_INVALID = _("There was an error on this form.")
INTERVENTION_INVALID = _("There are errors in this intervention.")

Binary file not shown.

View File

@ -4,7 +4,7 @@
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#: compensation/filters.py:71 compensation/forms.py:42 compensation/forms.py:47
#: compensation/forms.py:60 compensation/forms.py:203 compensation/forms.py:271
#: compensation/forms.py:60 compensation/forms.py:207 compensation/forms.py:275
#: intervention/filters.py:26 intervention/filters.py:40
#: intervention/filters.py:47 intervention/filters.py:48
#: intervention/forms.py:319 intervention/forms.py:331
@ -16,7 +16,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-08-10 12:35+0200\n"
"POT-Creation-Date: 2021-08-10 14:39+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"
@ -30,7 +30,7 @@ msgstr ""
msgid "Show only unrecorded"
msgstr "Nur unverzeichnete anzeigen"
#: compensation/forms.py:41 compensation/forms.py:260
#: compensation/forms.py:41 compensation/forms.py:264
#: compensation/templates/compensation/detail/eco_account/includes/withdraws.html:31
#: intervention/templates/intervention/detail/includes/withdraws.html:31
msgid "Amount"
@ -106,26 +106,26 @@ msgstr "Zustand hinzugefügt"
msgid "Object removed"
msgstr "Objekt entfernt"
#: compensation/forms.py:175
#: compensation/forms.py:179
msgid "Deadline Type"
msgstr "Fristart"
#: compensation/forms.py:178
#: compensation/forms.py:182
msgid "Select the deadline type"
msgstr "Fristart wählen"
#: compensation/forms.py:187
#: compensation/forms.py:191
#: compensation/templates/compensation/detail/compensation/includes/deadlines.html:31
#: compensation/templates/compensation/detail/eco_account/includes/deadlines.html:31
#: intervention/forms.py:318
msgid "Date"
msgstr "Datum"
#: compensation/forms.py:190
#: compensation/forms.py:194
msgid "Select date"
msgstr "Datum wählen"
#: compensation/forms.py:202 compensation/forms.py:270
#: compensation/forms.py:206 compensation/forms.py:274
#: compensation/templates/compensation/detail/compensation/includes/actions.html:34
#: compensation/templates/compensation/detail/compensation/includes/deadlines.html:34
#: compensation/templates/compensation/detail/compensation/includes/documents.html:31
@ -139,76 +139,76 @@ msgstr "Datum wählen"
msgid "Comment"
msgstr "Kommentar"
#: compensation/forms.py:204 compensation/forms.py:272
#: compensation/forms.py:208 compensation/forms.py:276
#: intervention/forms.py:344 konova/forms.py:290
msgid "Additional comment, maximum {} letters"
msgstr "Zusätzlicher Kommentar, maximal {} Zeichen"
#: compensation/forms.py:215
#: compensation/forms.py:219
msgid "New deadline"
msgstr "Neue Frist"
#: compensation/forms.py:216
#: compensation/forms.py:220
msgid "Insert data for the new deadline"
msgstr "Geben Sie die Daten der neuen Frist ein"
#: compensation/forms.py:233
#: compensation/forms.py:237
msgid "Added deadline"
msgstr "Frist/Termin hinzugefügt"
#: compensation/forms.py:242
#: compensation/forms.py:246
msgid "Action Type"
msgstr "Maßnahmentyp"
#: compensation/forms.py:245
#: compensation/forms.py:249
msgid "Select the action type"
msgstr "Maßnahmentyp wählen"
#: compensation/forms.py:248
#: compensation/forms.py:252
msgid "Unit"
msgstr "Einheit"
#: compensation/forms.py:251
#: compensation/forms.py:255
msgid "Select the unit"
msgstr "Einheit wählen"
#: compensation/forms.py:263
#: compensation/forms.py:267
msgid "Insert the amount"
msgstr "Menge eingeben"
#: compensation/forms.py:283
#: compensation/forms.py:287
msgid "New action"
msgstr "Neue Maßnahme"
#: compensation/forms.py:284
#: compensation/forms.py:288
msgid "Insert data for the new action"
msgstr "Geben Sie die Daten der neuen Maßnahme ein"
#: compensation/forms.py:302
#: compensation/forms.py:306
msgid "Added action"
msgstr "Maßnahme hinzugefügt"
#: compensation/models.py:58
#: compensation/models.py:59
msgid "cm"
msgstr ""
#: compensation/models.py:59
#: compensation/models.py:60
msgid "m"
msgstr ""
#: compensation/models.py:60
#: compensation/models.py:61
msgid "km"
msgstr ""
#: compensation/models.py:61
#: compensation/models.py:62
msgid "m²"
msgstr ""
#: compensation/models.py:62
#: compensation/models.py:63
msgid "ha"
msgstr ""
#: compensation/models.py:63
#: compensation/models.py:64
msgid "Pieces"
msgstr "Stück"
@ -222,26 +222,26 @@ msgstr "Kennung"
#: compensation/templates/compensation/detail/compensation/includes/documents.html:28
#: compensation/templates/compensation/detail/compensation/view.html:24
#: compensation/templates/compensation/detail/eco_account/includes/documents.html:28
#: compensation/templates/compensation/detail/eco_account/view.html:24
#: compensation/templates/compensation/detail/eco_account/view.html:31
#: intervention/forms.py:36 intervention/tables.py:28
#: intervention/templates/intervention/detail/includes/compensations.html:33
#: intervention/templates/intervention/detail/includes/documents.html:28
#: intervention/templates/intervention/detail/view.html:24 konova/forms.py:259
#: intervention/templates/intervention/detail/view.html:31 konova/forms.py:259
msgid "Title"
msgstr "Bezeichnung"
#: compensation/tables.py:36
#: compensation/templates/compensation/detail/compensation/view.html:36
#: intervention/tables.py:33
#: intervention/templates/intervention/detail/view.html:56 user/models.py:48
#: intervention/templates/intervention/detail/view.html:63 user/models.py:48
msgid "Checked"
msgstr "Geprüft"
#: compensation/tables.py:42 compensation/tables.py:181
#: compensation/templates/compensation/detail/compensation/view.html:50
#: compensation/templates/compensation/detail/eco_account/view.html:36
#: compensation/templates/compensation/detail/eco_account/view.html:43
#: intervention/tables.py:39
#: intervention/templates/intervention/detail/view.html:70 user/models.py:49
#: intervention/templates/intervention/detail/view.html:77 user/models.py:49
msgid "Recorded"
msgstr "Verzeichnet"
@ -281,9 +281,9 @@ msgstr "Am {} von {} geprüft worden"
#: compensation/tables.py:130
#: compensation/templates/compensation/detail/compensation/view.html:53
#: compensation/templates/compensation/detail/eco_account/view.html:39
#: compensation/templates/compensation/detail/eco_account/view.html:46
#: intervention/tables.py:135
#: intervention/templates/intervention/detail/view.html:73
#: intervention/templates/intervention/detail/view.html:80
msgid "Not recorded yet"
msgstr "Noch nicht verzeichnet"
@ -303,7 +303,7 @@ msgid "Access not granted"
msgstr "Nicht freigegeben - Datensatz nur lesbar"
#: compensation/tables.py:176
#: compensation/templates/compensation/detail/eco_account/view.html:28
#: compensation/templates/compensation/detail/eco_account/view.html:35
#: konova/templates/konova/custom_widgets/progressbar.html:3
msgid "Available"
msgstr "Verfügbar"
@ -313,7 +313,7 @@ msgid "Eco Accounts"
msgstr "Ökokonten"
#: compensation/tables.py:224
#: compensation/templates/compensation/detail/eco_account/view.html:12
#: compensation/templates/compensation/detail/eco_account/view.html:19
#: intervention/forms.py:439 intervention/forms.py:446
#: konova/templates/konova/home.html:88 templates/navbar.html:34
msgid "Eco-account"
@ -384,19 +384,19 @@ msgid "Public report"
msgstr "Öffentlicher Bericht"
#: compensation/templates/compensation/detail/compensation/includes/controls.html:17
#: compensation/templates/compensation/detail/eco_account/includes/controls.html:17
#: compensation/templates/compensation/detail/eco_account/includes/controls.html:28
#: intervention/templates/intervention/detail/includes/controls.html:32
msgid "Edit"
msgstr "Bearbeiten"
#: compensation/templates/compensation/detail/compensation/includes/controls.html:21
#: compensation/templates/compensation/detail/eco_account/includes/controls.html:21
#: compensation/templates/compensation/detail/eco_account/includes/controls.html:32
#: intervention/templates/intervention/detail/includes/controls.html:36
msgid "Show log"
msgstr "Log anzeigen"
#: compensation/templates/compensation/detail/compensation/includes/controls.html:24
#: compensation/templates/compensation/detail/eco_account/includes/controls.html:24
#: compensation/templates/compensation/detail/eco_account/includes/controls.html:35
#: intervention/templates/intervention/detail/includes/controls.html:39
#: venv/lib/python3.7/site-packages/django/forms/formsets.py:391
msgid "Delete"
@ -491,42 +491,45 @@ msgid "compensates intervention"
msgstr "kompensiert Eingriff"
#: compensation/templates/compensation/detail/compensation/view.html:43
#: intervention/templates/intervention/detail/view.html:63
#: intervention/templates/intervention/detail/view.html:70
msgid "Checked on "
msgstr "Geprüft am "
#: compensation/templates/compensation/detail/compensation/view.html:43
#: compensation/templates/compensation/detail/compensation/view.html:57
#: compensation/templates/compensation/detail/eco_account/view.html:43
#: intervention/templates/intervention/detail/view.html:63
#: intervention/templates/intervention/detail/view.html:77
#: compensation/templates/compensation/detail/eco_account/view.html:50
#: intervention/templates/intervention/detail/view.html:70
#: intervention/templates/intervention/detail/view.html:84
msgid "by"
msgstr "von"
#: compensation/templates/compensation/detail/compensation/view.html:57
#: compensation/templates/compensation/detail/eco_account/view.html:43
#: intervention/templates/intervention/detail/view.html:77
#: compensation/templates/compensation/detail/eco_account/view.html:50
#: intervention/templates/intervention/detail/view.html:84
msgid "Recorded on "
msgstr "Verzeichnet am"
#: compensation/templates/compensation/detail/compensation/view.html:64
#: compensation/templates/compensation/detail/eco_account/view.html:50
#: intervention/templates/intervention/detail/view.html:96
#: compensation/templates/compensation/detail/eco_account/view.html:57
#: intervention/templates/intervention/detail/view.html:103
msgid "Last modified"
msgstr "Zuletzt bearbeitet"
#: compensation/templates/compensation/detail/compensation/view.html:72
#: compensation/templates/compensation/detail/eco_account/view.html:58
#: compensation/templates/compensation/detail/eco_account/view.html:65
#: intervention/forms.py:252
#: intervention/templates/intervention/detail/view.html:104
#: intervention/templates/intervention/detail/view.html:111
msgid "Shared with"
msgstr "Freigegeben für"
#: compensation/templates/compensation/detail/compensation/view.html:84
#: compensation/templates/compensation/detail/eco_account/view.html:70
#: intervention/templates/intervention/detail/view.html:116
msgid "No geometry added, yet."
msgstr "Keine Geometrie vorhanden"
#: compensation/templates/compensation/detail/eco_account/includes/controls.html:17
msgid "Unrecord"
msgstr "Entzeichnen"
#: compensation/templates/compensation/detail/eco_account/includes/controls.html:21
#: intervention/templates/intervention/detail/includes/controls.html:25
msgid "Record"
msgstr "Verzeichnen"
#: compensation/templates/compensation/detail/eco_account/includes/withdraws.html:8
#: intervention/templates/intervention/detail/includes/withdraws.html:8
@ -544,61 +547,79 @@ msgstr "Eingriffskennung"
#: compensation/templates/compensation/detail/eco_account/includes/withdraws.html:34
#: intervention/templates/intervention/detail/includes/withdraws.html:34
#: user/models.py:50
#: user/models.py:51
msgid "Created"
msgstr "Erstellt"
#: compensation/templates/compensation/detail/eco_account/includes/withdraws.html:53
#: compensation/templates/compensation/detail/eco_account/includes/withdraws.html:43
#: intervention/templates/intervention/detail/includes/withdraws.html:43
msgid "Eco-account deleted! Withdraw invalid!"
msgstr "Ökokonto gelöscht! Abbuchung ungültig!"
#: compensation/templates/compensation/detail/eco_account/includes/withdraws.html:43
#: intervention/templates/intervention/detail/includes/withdraws.html:43
msgid "Eco-account not recorded! Withdraw invalid!"
msgstr "Ökokonto nicht verzeichnet! Abbuchung ungültig!"
#: compensation/templates/compensation/detail/eco_account/includes/withdraws.html:56
#: intervention/templates/intervention/detail/includes/withdraws.html:56
msgid "Remove Withdraw"
msgstr "Abbuchung entfernen"
#: compensation/views/compensation_views.py:121
#: compensation/views/eco_account_views.py:184 intervention/views.py:391
#: compensation/views/compensation_views.py:122
#: compensation/views/eco_account_views.py:185 intervention/views.py:392
msgid "Log"
msgstr "Log"
#: compensation/views/compensation_views.py:142
#: compensation/views/compensation_views.py:143
msgid "Compensation removed"
msgstr "Kompensation entfernt"
#: compensation/views/compensation_views.py:161
#: compensation/views/eco_account_views.py:261 intervention/views.py:96
#: compensation/views/compensation_views.py:162
#: compensation/views/eco_account_views.py:275 intervention/views.py:96
msgid "Document added"
msgstr "Dokument hinzugefügt"
#: compensation/views/compensation_views.py:180
#: compensation/views/eco_account_views.py:205
#: compensation/views/compensation_views.py:181
#: compensation/views/eco_account_views.py:219
msgid "State added"
msgstr "Zustand hinzugefügt"
#: compensation/views/compensation_views.py:199
#: compensation/views/eco_account_views.py:224
#: compensation/views/compensation_views.py:200
#: compensation/views/eco_account_views.py:238
msgid "Action added"
msgstr "Maßnahme hinzugefügt"
#: compensation/views/compensation_views.py:218
#: compensation/views/eco_account_views.py:243
#: compensation/views/compensation_views.py:219
#: compensation/views/eco_account_views.py:257
msgid "Deadline added"
msgstr "Frist hinzugefügt"
#: compensation/views/compensation_views.py:237
#: compensation/views/compensation_views.py:238
msgid "State removed"
msgstr "Zustand gelöscht"
#: compensation/views/compensation_views.py:256
#: compensation/views/compensation_views.py:257
msgid "Action removed"
msgstr "Maßnahme entfernt"
#: compensation/views/eco_account_views.py:134
#: compensation/views/eco_account_views.py:135
msgid "Eco-account removed"
msgstr "Ökokonto entfernt"
#: compensation/views/eco_account_views.py:161
#: compensation/views/eco_account_views.py:162
msgid "Withdraw removed"
msgstr "Abbuchung entfernt"
#: compensation/views/eco_account_views.py:281 intervention/views.py:413
#: compensation/views/eco_account_views.py:196
msgid "{} unrecorded"
msgstr "{} entzeichnet"
#: compensation/views/eco_account_views.py:196
msgid "{} recorded"
msgstr "{} verzeichnet"
#: compensation/views/eco_account_views.py:295 intervention/views.py:414
msgid "Withdraw added"
msgstr "Abbuchung hinzugefügt"
@ -635,7 +656,7 @@ msgid "Which intervention type is this"
msgstr "Welcher Eingriffstyp"
#: intervention/forms.py:47
#: intervention/templates/intervention/detail/view.html:32
#: intervention/templates/intervention/detail/view.html:39
msgid "Law"
msgstr "Gesetz"
@ -644,7 +665,7 @@ msgid "Based on which law"
msgstr "Basiert auf welchem Recht"
#: intervention/forms.py:53
#: intervention/templates/intervention/detail/view.html:52
#: intervention/templates/intervention/detail/view.html:59
msgid "Intervention handler"
msgstr "Eingriffsverursacher"
@ -744,7 +765,7 @@ msgstr "Kompensationen und Zahlungen geprüft"
msgid "Run check"
msgstr "Prüfung vornehmen"
#: intervention/forms.py:406
#: intervention/forms.py:406 konova/forms.py:347
msgid ""
"I, {} {}, confirm that all necessary control steps have been performed by "
"myself."
@ -758,7 +779,7 @@ msgstr "Nur verzeichnete Ökokonten können für Abbuchungen verwendet werden."
#: intervention/forms.py:460 intervention/forms.py:467
#: intervention/tables.py:92 intervention/tables.py:172
#: intervention/templates/intervention/detail/view.html:12
#: intervention/templates/intervention/detail/view.html:19
#: konova/templates/konova/home.html:11 templates/navbar.html:22
msgid "Intervention"
msgstr "Eingriff"
@ -775,7 +796,13 @@ msgstr "Neue Abbuchung"
msgid "Enter the information for a new withdraw from a chosen eco-account"
msgstr "Geben Sie die Informationen für eine neue Abbuchung ein."
#: intervention/forms.py:517
#: intervention/forms.py:512
msgid ""
"Eco-account {} is not recorded yet. You can only withdraw from recorded "
"accounts."
msgstr ""
#: intervention/forms.py:525
msgid ""
"The account {} has not enough surface for a withdraw of {} m². There are "
"only {} m² left"
@ -783,21 +810,21 @@ msgstr ""
"Das Ökokonto {} hat für eine Abbuchung von {} m² nicht ausreichend "
"Restfläche. Es stehen noch {} m² zur Verfügung."
#: intervention/models.py:203
#: intervention/templates/intervention/detail/view.html:23
#: intervention/templates/intervention/detail/view.html:27
#: intervention/templates/intervention/detail/view.html:31
#: intervention/templates/intervention/detail/view.html:39
#: intervention/templates/intervention/detail/view.html:51
#: intervention/templates/intervention/detail/view.html:83
#: intervention/templates/intervention/detail/view.html:87
#: intervention/templates/intervention/detail/view.html:91
msgid "Missing"
msgstr "Fehlt"
#: intervention/models.py:204
msgid "Exists"
msgstr "Existiert"
#: 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:46
#: intervention/templates/intervention/detail/view.html:58
#: intervention/templates/intervention/detail/view.html:90
#: intervention/templates/intervention/detail/view.html:94
#: intervention/templates/intervention/detail/view.html:98
msgid "missing"
msgstr "fehlt"
#: intervention/models.py:205
msgid "exists"
msgstr "vorhanden"
#: intervention/tables.py:70
msgid "Interventions"
@ -819,10 +846,6 @@ msgstr "Neue Kompensation hinzufügen"
msgid "Remove compensation"
msgstr "Kompensation entfernen"
#: intervention/templates/intervention/detail/includes/controls.html:25
msgid "Record"
msgstr "Verzeichnen"
#: intervention/templates/intervention/detail/includes/payments.html:8
msgid "Payments"
msgstr "Ersatzzahlungen"
@ -845,7 +868,7 @@ msgid "Remove payment"
msgstr "Zahlung entfernen"
#: intervention/templates/intervention/detail/includes/revocation.html:8
#: intervention/templates/intervention/detail/view.html:92
#: intervention/templates/intervention/detail/view.html:99
msgid "Revocation"
msgstr "Widerspruch"
@ -862,35 +885,31 @@ msgstr "Widerspruch entfernen"
msgid "Account Identifier"
msgstr "Ökokonto Kennung"
#: intervention/templates/intervention/detail/includes/withdraws.html:43
msgid "Eco-account deleted! Withdraw invalid!"
msgstr "Ökokonto gelöscht! Abbuchung ungültig!"
#: intervention/templates/intervention/detail/view.html:28
#: intervention/templates/intervention/detail/view.html:35
msgid "Process type"
msgstr "Verfahrenstyp"
#: intervention/templates/intervention/detail/view.html:36
#: intervention/templates/intervention/detail/view.html:43
msgid "Registration office"
msgstr "Zulassungsbehörde"
#: intervention/templates/intervention/detail/view.html:40
#: intervention/templates/intervention/detail/view.html:47
msgid "Registration office file number"
msgstr "Aktenzeichen Zulassungsbehörde"
#: intervention/templates/intervention/detail/view.html:44
#: intervention/templates/intervention/detail/view.html:51
msgid "Conservation office"
msgstr "Naturschutzbehörde"
#: intervention/templates/intervention/detail/view.html:48
#: intervention/templates/intervention/detail/view.html:55
msgid "Conversation office file number"
msgstr "Aktenzeichen Naturschutzbehörde"
#: intervention/templates/intervention/detail/view.html:84
#: intervention/templates/intervention/detail/view.html:91
msgid "Registration date"
msgstr "Datum Zulassung bzw. Satzungsbeschluss"
#: intervention/templates/intervention/detail/view.html:88
#: intervention/templates/intervention/detail/view.html:95
msgid "Binding on"
msgstr "Datum Bestandskraft"
@ -898,7 +917,7 @@ msgstr "Datum Bestandskraft"
msgid "Intervention {} added"
msgstr "Eingriff {} hinzugefügt"
#: intervention/views.py:71 intervention/views.py:171
#: intervention/views.py:71 intervention/views.py:172
msgid "Invalid input"
msgstr "Eingabe fehlerhaft"
@ -906,7 +925,7 @@ msgstr "Eingabe fehlerhaft"
msgid "This intervention has a revocation from {}"
msgstr "Es existiert ein Widerspruch vom {}"
#: intervention/views.py:145
#: intervention/views.py:146
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 "
@ -916,47 +935,47 @@ msgstr ""
"bedeutet, dass Sie nur lesenden Zugriff hierauf haben und weder bearbeiten, "
"noch Prüfungen durchführen oder verzeichnen können."
#: intervention/views.py:168
#: intervention/views.py:169
msgid "{} edited"
msgstr "{} bearbeitet"
#: intervention/views.py:197
#: intervention/views.py:198
msgid "{} removed"
msgstr "{} entfernt"
#: intervention/views.py:218
#: intervention/views.py:219
msgid "Revocation removed"
msgstr "Widerspruch entfernt"
#: intervention/views.py:244
#: intervention/views.py:245
msgid "{} has already been shared with you"
msgstr "{} wurde bereits für Sie freigegeben"
#: intervention/views.py:249
#: intervention/views.py:250
msgid "{} has been shared with you"
msgstr "{} ist nun für Sie freigegeben"
#: intervention/views.py:256
#: intervention/views.py:257
msgid "Share link invalid"
msgstr "Freigabelink ungültig"
#: intervention/views.py:280
#: intervention/views.py:281
msgid "Share settings updated"
msgstr "Freigabe Einstellungen aktualisiert"
#: intervention/views.py:311
#: intervention/views.py:312
msgid "Check performed"
msgstr "Prüfung durchgeführt"
#: intervention/views.py:316
#: intervention/views.py:317
msgid "There has been errors on this intervention:"
msgstr "Es liegen Fehler in diesem Eingriff vor:"
#: intervention/views.py:322
#: intervention/views.py:323
msgid "{}: {}"
msgstr ""
#: intervention/views.py:354
#: intervention/views.py:355
msgid "Revocation added"
msgstr "Widerspruch hinzugefügt"
@ -1018,27 +1037,47 @@ msgstr "Datei"
msgid "Added document"
msgstr "Dokument hinzugefügt"
#: konova/management/commands/setup_data.py:42
#: konova/forms.py:338
msgid "Confirm record"
msgstr "Verzeichnen bestätigen"
#: konova/forms.py:346
msgid "Record data"
msgstr "Daten verzeichnen"
#: konova/forms.py:351
msgid "Confirm unrecord"
msgstr "Entzeichnen bestätigen"
#: konova/forms.py:352
msgid "Unrecord data"
msgstr "Daten entzeichnen"
#: konova/forms.py:353
msgid "I, {} {}, confirm that this data must be unrecorded."
msgstr "Ich, {} {}, bestätige, dass diese Daten wieder entzeichnet werden müssen."
#: konova/management/commands/setup_data.py:41
msgid "On new related data"
msgstr "Wenn neue Daten für mich angelegt werden"
#: konova/management/commands/setup_data.py:43
#: konova/management/commands/setup_data.py:42
msgid "On disabled share link"
msgstr "Wenn ein Freigabelink deaktiviert wird"
#: konova/management/commands/setup_data.py:44
#: konova/management/commands/setup_data.py:43
msgid "On shared access removed"
msgstr "Wenn mir eine Freigabe zu Daten entzogen wird"
#: konova/management/commands/setup_data.py:45
#: konova/management/commands/setup_data.py:44
msgid "On shared data recorded"
msgstr "Wenn meine freigegebenen Daten verzeichnet wurden"
#: konova/management/commands/setup_data.py:46
#: konova/management/commands/setup_data.py:45
msgid "On shared data deleted"
msgstr "Wenn meine freigegebenen Daten gelöscht wurden"
#: konova/management/commands/setup_data.py:47
#: konova/management/commands/setup_data.py:46
msgid "On registered data edited"
msgstr "Wenn meine freigegebenen Daten bearbeitet wurden"
@ -1194,6 +1233,10 @@ msgstr ""
msgid "User"
msgstr "Nutzer"
#: templates/map/geom_form.html:9
msgid "No geometry added, yet."
msgstr "Keine Geometrie vorhanden"
#: templates/modal/modal_form.html:25
msgid "Continue"
msgstr "Weiter"
@ -1266,11 +1309,15 @@ msgstr ""
msgid "User contact data"
msgstr "Kontaktdaten"
#: user/models.py:51
#: user/models.py:50
msgid "Unrecorded"
msgstr "Entzeichnet"
#: user/models.py:52
msgid "Edited"
msgstr "Bearbeitet"
#: user/models.py:52
#: user/models.py:53
msgid "Deleted"
msgstr "Gelöscht"
@ -2542,9 +2589,6 @@ msgstr ""
#~ msgid "Delete eco account"
#~ msgstr "Ökokonto löschen"
#~ msgid "Confirm check on data"
#~ msgstr "Datenprüfung bestätigen"
#~ msgid "Add new EMA"
#~ msgstr "Neue EMA hinzufügen"

View File

@ -47,6 +47,7 @@ class UserAction(models.TextChoices):
"""
CHECKED = "checked", _("Checked")
RECORDED = "recorded", _("Recorded")
UNRECORDED = "unrecorded", _("Unrecorded")
CREATED = "created", _("Created")
EDITED = "edited", _("Edited")
DELETED = "deleted", _("Deleted")