#86 Userlogs Compensation

* adds log details for adding/removing of compensations for intervention
* adds handy restore-deleted function for admin backend for alls BaseObject derivatives
* adds/updates translations
This commit is contained in:
mpeltriaux 2022-02-03 15:29:22 +01:00
parent e5cd5a2312
commit 6c80480d0d
10 changed files with 231 additions and 160 deletions

View File

@ -18,7 +18,7 @@ from compensation.models import Compensation, EcoAccount
from intervention.inputs import GenerateInput
from intervention.models import Intervention, Responsibility, Legal
from konova.forms import BaseForm, SimpleGeomForm
from konova.utils.message_templates import EDITED_GENERAL_DATA
from konova.utils.message_templates import EDITED_GENERAL_DATA, COMPENSATION_ADDED_TEMPLATE
from user.models import UserActionLogEntry
@ -200,35 +200,49 @@ class NewCompensationForm(AbstractCompensationForm, CEFCompensationFormMixin, Co
self.initialize_form_field("identifier", identifier)
self.fields["identifier"].widget.attrs["url"] = reverse_lazy("compensation:new-id")
def __create_comp(self, user, geom_form) -> Compensation:
""" Creates the compensation from form data
Args:
user (User): The performing user
geom_form (SimpleGeomForm): The geometry form
Returns:
comp (Compensation): The compensation object
"""
# Fetch data from cleaned POST values
identifier = self.cleaned_data.get("identifier", None)
title = self.cleaned_data.get("title", None)
intervention = self.cleaned_data.get("intervention", None)
is_cef = self.cleaned_data.get("is_cef", None)
is_coherence_keeping = self.cleaned_data.get("is_coherence_keeping", None)
comment = self.cleaned_data.get("comment", None)
# Create log entry
action = UserActionLogEntry.get_created_action(user)
# Process the geometry form
geometry = geom_form.save(action)
# Finally create main object
comp = Compensation.objects.create(
identifier=identifier,
title=title,
intervention=intervention,
created=action,
is_cef=is_cef,
is_coherence_keeping=is_coherence_keeping,
geometry=geometry,
comment=comment,
)
# Add the log entry to the main objects log list
comp.log.add(action)
return comp
def save(self, user: User, geom_form: SimpleGeomForm):
with transaction.atomic():
# Fetch data from cleaned POST values
identifier = self.cleaned_data.get("identifier", None)
title = self.cleaned_data.get("title", None)
intervention = self.cleaned_data.get("intervention", None)
is_cef = self.cleaned_data.get("is_cef", None)
is_coherence_keeping = self.cleaned_data.get("is_coherence_keeping", None)
comment = self.cleaned_data.get("comment", None)
# Create log entry
action = UserActionLogEntry.get_created_action(user)
# Process the geometry form
geometry = geom_form.save(action)
# Finally create main object
comp = Compensation.objects.create(
identifier=identifier,
title=title,
intervention=intervention,
created=action,
is_cef=is_cef,
is_coherence_keeping=is_coherence_keeping,
geometry=geometry,
comment=comment,
)
# Add the log entry to the main objects log list
comp.log.add(action)
comp = self.__create_comp(user, geom_form)
comp.intervention.mark_as_edited(user, edit_comment=COMPENSATION_ADDED_TEMPLATE.format(comp.identifier))
return comp

View File

@ -20,7 +20,7 @@ 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
from konova.utils.message_templates import DATA_UNSHARED_EXPLANATION
from konova.utils.message_templates import DATA_UNSHARED_EXPLANATION, COMPENSATION_REMOVED_TEMPLATE
from user.models import UserActionLogEntry
@ -235,6 +235,11 @@ class Compensation(AbstractCompensation, CEFMixin, CoherenceMixin):
self.identifier = self.generate_new_identifier()
super().save(*args, **kwargs)
def mark_as_deleted(self, user, send_mail: bool = True):
super().mark_as_deleted(user, send_mail)
if user is not None:
self.intervention.mark_as_edited(user, edit_comment=COMPENSATION_REMOVED_TEMPLATE.format(self.identifier))
def is_shared_with(self, user: User):
""" Access check

View File

@ -18,7 +18,7 @@ from konova.sub_settings.context_settings import TAB_TITLE_IDENTIFIER
from konova.utils.documents import get_document, remove_document
from konova.utils.generators import generate_qr_code
from konova.utils.message_templates import FORM_INVALID, IDENTIFIER_REPLACED, DATA_UNSHARED_EXPLANATION, \
CHECKED_RECORDED_RESET
CHECKED_RECORDED_RESET, COMPENSATION_ADDED_TEMPLATE, COMPENSATION_REMOVED_TEMPLATE
from konova.utils.user_checks import in_group
@ -79,7 +79,7 @@ def new_view(request: HttpRequest, intervention_id: str = None):
comp.identifier
)
)
messages.success(request, _("Compensation {} added").format(comp.identifier))
messages.success(request, COMPENSATION_ADDED_TEMPLATE.format(comp.identifier))
return redirect("compensation:detail", id=comp.id)
else:
messages.error(request, FORM_INVALID, extra_tags="danger",)
@ -256,7 +256,7 @@ def remove_view(request: HttpRequest, id: str):
form = RemoveModalForm(request.POST or None, instance=comp, request=request)
return form.process_request(
request=request,
msg_success=_("Compensation removed"),
msg_success=COMPENSATION_REMOVED_TEMPLATE.format(comp.identifier),
redirect_url=reverse("compensation:index"),
)

View File

@ -52,7 +52,7 @@
<td class="align-middle">{{ comp.title }}</td>
<td>
{% if is_default_member and has_access %}
<button data-form-url="{% url 'compensation:remove' comp.id %}" class="btn btn-default btn-modal float-right" title="{% trans 'Remove compensation' %}">
<button data-form-url="{% url 'intervention:remove-compensation' obj.id comp.id %}" class="btn btn-default btn-modal float-right" title="{% trans 'Remove compensation' %}">
{% fa5_icon 'trash' %}
</button>
{% endif %}

View File

@ -10,7 +10,7 @@ from django.urls import path
from intervention.views import index_view, new_view, detail_view, edit_view, remove_view, new_document_view, share_view, \
create_share_view, remove_revocation_view, new_revocation_view, check_view, log_view, new_deduction_view, \
record_view, remove_document_view, get_document_view, get_revocation_view, new_id_view, report_view, \
remove_deduction_view
remove_deduction_view, remove_compensation_view
app_name = "intervention"
urlpatterns = [
@ -27,6 +27,9 @@ urlpatterns = [
path('<id>/record', record_view, name='record'),
path('<id>/report', report_view, name='report'),
# Compensations
path('<id>/remove/<comp_id>', remove_compensation_view, name='remove-compensation'),
# Documents
path('<id>/document/new/', new_document_view, name='new-doc'),
path('document/<doc_id>', get_document_view, name='get-doc'),

View File

@ -16,7 +16,8 @@ from konova.sub_settings.context_settings import TAB_TITLE_IDENTIFIER
from konova.utils.documents import remove_document, get_document
from konova.utils.generators import generate_qr_code
from konova.utils.message_templates import INTERVENTION_INVALID, FORM_INVALID, IDENTIFIER_REPLACED, \
CHECKED_RECORDED_RESET, DEDUCTION_REMOVED, DEDUCTION_ADDED, REVOCATION_ADDED, REVOCATION_REMOVED
CHECKED_RECORDED_RESET, DEDUCTION_REMOVED, DEDUCTION_ADDED, REVOCATION_ADDED, REVOCATION_REMOVED, \
COMPENSATION_REMOVED_TEMPLATE
from konova.utils.user_checks import in_group
@ -564,6 +565,31 @@ def record_view(request: HttpRequest, id: str):
)
def remove_compensation_view(request:HttpRequest, id: str, comp_id: str):
""" Renders a modal view for removing the compensation
Args:
request (HttpRequest): The incoming request
id (str): The compensation's id
Returns:
"""
intervention = get_object_or_404(Intervention, id=id)
try:
comp = intervention.compensations.get(
id=comp_id
)
except ObjectDoesNotExist:
raise Http404("Unknown compensation")
form = RemoveModalForm(request.POST or None, instance=comp, request=request)
return form.process_request(
request=request,
msg_success=COMPENSATION_REMOVED_TEMPLATE.format(comp.identifier),
redirect_url=reverse("intervention:detail", args=(id,)) + "#related_data",
)
def report_view(request:HttpRequest, id: str):
""" Renders the public report view

View File

@ -8,6 +8,8 @@ Created on: 22.07.21
from django.contrib import admin
from konova.models import Geometry, Deadline, GeometryConflict, Parcel, District
from konova.utils.message_templates import COMPENSATION_REMOVED_TEMPLATE
from user.models import UserAction
class GeometryAdmin(admin.ModelAdmin):
@ -78,6 +80,9 @@ class BaseObjectAdmin(BaseResourceAdmin):
"identifier",
"title",
]
actions = [
"restore_deleted_data"
]
def get_fields(self, request, obj=None):
return super().get_fields(request, obj) + ["deleted"]
@ -87,6 +92,21 @@ class BaseObjectAdmin(BaseResourceAdmin):
"deleted",
]
def restore_deleted_data(self, request, queryset):
queryset = queryset.filter(
deleted__isnull=False
)
for entry in queryset:
entry.deleted.delete()
# Remove delete log entry from related intervention log history
logs = entry.intervention.log.filter(
action=UserAction.EDITED,
comment=COMPENSATION_REMOVED_TEMPLATE.format(entry.identifier)
)
logs.delete()
# Outcommented for a cleaner admin backend on production
#admin.site.register(Geometry, GeometryAdmin)

View File

@ -21,6 +21,10 @@ CHECKED_RECORDED_RESET = _("Status of Checked and Recorded reseted")
# ECO ACCOUNT
CANCEL_ACC_RECORDED_OR_DEDUCTED = _("Action canceled. Eco account is recorded or deductions exist. Only conservation office member can perform this action.")
# COMPENSATION
COMPENSATION_ADDED_TEMPLATE = _("Compensation {} added")
COMPENSATION_REMOVED_TEMPLATE = _("Compensation {} removed")
# DEDUCTIONS
DEDUCTION_ADDED = _("Deduction added")
DEDUCTION_REMOVED = _("Deduction removed")

Binary file not shown.

View File

@ -6,9 +6,9 @@
#: compensation/filters.py:122 compensation/forms/modalForms.py:35
#: compensation/forms/modalForms.py:46 compensation/forms/modalForms.py:62
#: compensation/forms/modalForms.py:256 compensation/forms/modalForms.py:350
#: intervention/forms/forms.py:52 intervention/forms/forms.py:154
#: intervention/forms/forms.py:166 intervention/forms/modalForms.py:123
#: intervention/forms/modalForms.py:136 intervention/forms/modalForms.py:149
#: intervention/forms/forms.py:54 intervention/forms/forms.py:156
#: intervention/forms/forms.py:168 intervention/forms/modalForms.py:124
#: intervention/forms/modalForms.py:137 intervention/forms/modalForms.py:150
#: konova/filters/mixins.py:53 konova/filters/mixins.py:54
#: konova/filters/mixins.py:81 konova/filters/mixins.py:82
#: konova/filters/mixins.py:94 konova/filters/mixins.py:95
@ -26,7 +26,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-02 14:35+0100\n"
"POT-Creation-Date: 2022-02-03 13:37+0100\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"
@ -49,7 +49,7 @@ msgstr "Bis"
#: compensation/templates/compensation/report/eco_account/report.html:16
#: compensation/utils/quality.py:100 ema/templates/ema/detail/view.html:49
#: ema/templates/ema/report/report.html:16 ema/utils/quality.py:26
#: intervention/forms/forms.py:100
#: intervention/forms/forms.py:102
#: intervention/templates/intervention/detail/view.html:56
#: intervention/templates/intervention/report/report.html:37
#: intervention/utils/quality.py:49 konova/filters/mixins.py:395
@ -61,9 +61,9 @@ msgid "Select the responsible office"
msgstr "Verantwortliche Stelle"
#: analysis/forms.py:58 compensation/forms/forms.py:88
#: compensation/forms/forms.py:165 intervention/forms/forms.py:62
#: intervention/forms/forms.py:79 intervention/forms/forms.py:95
#: intervention/forms/forms.py:111 intervention/forms/modalForms.py:45
#: compensation/forms/forms.py:165 intervention/forms/forms.py:64
#: intervention/forms/forms.py:81 intervention/forms/forms.py:97
#: intervention/forms/forms.py:113 intervention/forms/modalForms.py:46
msgid "Click for selection"
msgstr "Auswählen..."
@ -220,7 +220,7 @@ msgstr "Abbuchungen"
#: compensation/templates/compensation/detail/eco_account/includes/states-before.html:36
#: ema/templates/ema/detail/includes/states-after.html:36
#: ema/templates/ema/detail/includes/states-before.html:36
#: intervention/forms/modalForms.py:293
#: intervention/forms/modalForms.py:294
msgid "Surface"
msgstr "Fläche"
@ -270,7 +270,7 @@ msgstr ""
" "
#: analysis/templates/analysis/reports/includes/intervention/laws.html:14
#: intervention/forms/forms.py:67
#: intervention/forms/forms.py:69
#: intervention/templates/intervention/detail/view.html:39
#: intervention/templates/intervention/report/report.html:20
msgid "Law"
@ -284,7 +284,7 @@ msgid "Type"
msgstr "Typ"
#: analysis/templates/analysis/reports/includes/old_data/amount.html:24
#: intervention/forms/modalForms.py:304 intervention/forms/modalForms.py:311
#: intervention/forms/modalForms.py:305 intervention/forms/modalForms.py:312
#: intervention/tables.py:89
#: intervention/templates/intervention/detail/view.html:19
#: konova/templates/konova/includes/quickstart/interventions.html:4
@ -295,7 +295,7 @@ msgstr "Eingriff"
#: analysis/templates/analysis/reports/includes/old_data/amount.html:34
#: compensation/tables.py:226
#: compensation/templates/compensation/detail/eco_account/view.html:19
#: intervention/forms/modalForms.py:277 intervention/forms/modalForms.py:284
#: intervention/forms/modalForms.py:278 intervention/forms/modalForms.py:285
#: konova/templates/konova/includes/quickstart/ecoaccounts.html:4
#: templates/navbars/navbar.html:34
msgid "Eco-account"
@ -314,13 +314,13 @@ msgid "Show only unrecorded"
msgstr "Nur unverzeichnete anzeigen"
#: compensation/forms/forms.py:32 compensation/tables.py:25
#: compensation/tables.py:167 ema/tables.py:28 intervention/forms/forms.py:26
#: compensation/tables.py:167 ema/tables.py:28 intervention/forms/forms.py:28
#: intervention/tables.py:23
#: intervention/templates/intervention/detail/includes/compensations.html:30
msgid "Identifier"
msgstr "Kennung"
#: compensation/forms/forms.py:35 intervention/forms/forms.py:29
#: compensation/forms/forms.py:35 intervention/forms/forms.py:31
#: user/forms.py:126
msgid "Generated automatically"
msgstr "Automatisch generiert"
@ -335,7 +335,7 @@ msgstr "Automatisch generiert"
#: compensation/templates/compensation/report/eco_account/report.html:12
#: ema/tables.py:33 ema/templates/ema/detail/includes/documents.html:28
#: ema/templates/ema/detail/view.html:31
#: ema/templates/ema/report/report.html:12 intervention/forms/forms.py:38
#: ema/templates/ema/report/report.html:12 intervention/forms/forms.py:40
#: intervention/tables.py:28
#: intervention/templates/intervention/detail/includes/compensations.html:33
#: intervention/templates/intervention/detail/includes/documents.html:28
@ -345,7 +345,7 @@ msgstr "Automatisch generiert"
msgid "Title"
msgstr "Bezeichnung"
#: compensation/forms/forms.py:46 intervention/forms/forms.py:40
#: compensation/forms/forms.py:46 intervention/forms/forms.py:42
msgid "An explanatory name"
msgstr "Aussagekräftiger Titel"
@ -364,7 +364,7 @@ msgstr "Kompensation XY; Flur ABC"
#: ema/templates/ema/detail/includes/actions.html:34
#: ema/templates/ema/detail/includes/deadlines.html:34
#: ema/templates/ema/detail/includes/documents.html:31
#: intervention/forms/forms.py:178 intervention/forms/modalForms.py:148
#: intervention/forms/forms.py:180 intervention/forms/modalForms.py:149
#: intervention/templates/intervention/detail/includes/documents.html:31
#: intervention/templates/intervention/detail/includes/payments.html:34
#: intervention/templates/intervention/detail/includes/revocation.html:38
@ -373,7 +373,7 @@ msgid "Comment"
msgstr "Kommentar"
#: compensation/forms/forms.py:59 compensation/forms/modalForms.py:351
#: intervention/forms/forms.py:180
#: intervention/forms/forms.py:182
msgid "Additional comment"
msgstr "Zusätzlicher Kommentar"
@ -382,14 +382,14 @@ msgstr "Zusätzlicher Kommentar"
#: compensation/templates/compensation/report/eco_account/report.html:20
#: compensation/utils/quality.py:102 ema/templates/ema/detail/view.html:53
#: ema/templates/ema/report/report.html:20 ema/utils/quality.py:28
#: intervention/forms/forms.py:128
#: intervention/forms/forms.py:130
#: intervention/templates/intervention/detail/view.html:60
#: intervention/templates/intervention/report/report.html:41
#: intervention/utils/quality.py:42
msgid "Conservation office file number"
msgstr "Aktenzeichen Eintragungsstelle"
#: compensation/forms/forms.py:99 intervention/forms/forms.py:134
#: compensation/forms/forms.py:99 intervention/forms/forms.py:136
msgid "ETS-123/ABC.456"
msgstr ""
@ -401,7 +401,7 @@ msgstr "Maßnahmenträger"
msgid "Who handles the eco-account"
msgstr "Wer für die Herrichtung des Ökokontos verantwortlich ist"
#: compensation/forms/forms.py:112 intervention/forms/forms.py:147
#: compensation/forms/forms.py:112 intervention/forms/forms.py:149
msgid "Company Mustermann"
msgstr "Firma Mustermann"
@ -436,37 +436,37 @@ msgstr "Wählen Sie den Eingriff, für den diese Kompensation bestimmt ist"
msgid "New compensation"
msgstr "Neue Kompensation"
#: compensation/forms/forms.py:241
#: compensation/forms/forms.py:255
msgid "Edit compensation"
msgstr "Bearbeite Kompensation"
#: compensation/forms/forms.py:302 compensation/utils/quality.py:84
#: compensation/forms/forms.py:316 compensation/utils/quality.py:84
msgid "Available Surface"
msgstr "Verfügbare Fläche"
#: compensation/forms/forms.py:305
#: compensation/forms/forms.py:319
msgid "The amount that can be used for deductions"
msgstr "Die für Abbuchungen zur Verfügung stehende Menge"
#: compensation/forms/forms.py:314
#: compensation/forms/forms.py:328
#: compensation/templates/compensation/detail/eco_account/view.html:66
#: compensation/utils/quality.py:72
msgid "Agreement date"
msgstr "Vereinbarungsdatum"
#: compensation/forms/forms.py:316
#: compensation/forms/forms.py:330
msgid "When did the parties agree on this?"
msgstr "Wann wurde dieses Ökokonto offiziell vereinbart?"
#: compensation/forms/forms.py:340 compensation/views/eco_account.py:102
#: compensation/forms/forms.py:354 compensation/views/eco_account.py:102
msgid "New Eco-Account"
msgstr "Neues Ökokonto"
#: compensation/forms/forms.py:349
#: compensation/forms/forms.py:363
msgid "Eco-Account XY; Location ABC"
msgstr "Ökokonto XY; Flur ABC"
#: compensation/forms/forms.py:403
#: compensation/forms/forms.py:417
msgid "Edit Eco-Account"
msgstr "Ökokonto bearbeiten"
@ -484,7 +484,7 @@ msgid "Due on which date"
msgstr "Zahlung wird an diesem Datum erwartet"
#: compensation/forms/modalForms.py:63 compensation/forms/modalForms.py:257
#: intervention/forms/modalForms.py:150 konova/forms.py:375
#: intervention/forms/modalForms.py:151 konova/forms.py:375
msgid "Additional comment, maximum {} letters"
msgstr "Zusätzlicher Kommentar, maximal {} Zeichen"
@ -512,7 +512,7 @@ msgstr "Zusatzbezeichnung"
msgid "Select an additional biotope type"
msgstr "Zusatzbezeichnung wählen"
#: compensation/forms/modalForms.py:154 intervention/forms/modalForms.py:295
#: compensation/forms/modalForms.py:154 intervention/forms/modalForms.py:296
msgid "in m²"
msgstr ""
@ -540,7 +540,7 @@ msgstr "Fristart wählen"
#: compensation/templates/compensation/detail/compensation/includes/deadlines.html:31
#: compensation/templates/compensation/detail/eco_account/includes/deadlines.html:31
#: ema/templates/ema/detail/includes/deadlines.html:31
#: intervention/forms/modalForms.py:122
#: intervention/forms/modalForms.py:123
msgid "Date"
msgstr "Datum"
@ -642,18 +642,18 @@ msgstr ""
msgid "Pieces"
msgstr "Stück"
#: compensation/models/compensation.py:63 konova/utils/message_templates.py:27
#: compensation/models/compensation.py:63 konova/utils/message_templates.py:43
msgid "Added deadline"
msgstr "Frist/Termin hinzugefügt"
#: compensation/models/eco_account.py:57
#: compensation/models/eco_account.py:56
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:64
#: compensation/models/eco_account.py:63
msgid ""
"Deductable surface can not be smaller than the sum of already existing "
"deductions. Please contact the responsible users for the deductions!"
@ -943,14 +943,14 @@ msgstr "Zuletzt bearbeitet"
#: compensation/templates/compensation/detail/compensation/view.html:99
#: compensation/templates/compensation/detail/eco_account/view.html:82
#: ema/templates/ema/detail/view.html:76 intervention/forms/modalForms.py:52
#: ema/templates/ema/detail/view.html:76 intervention/forms/modalForms.py:53
#: intervention/templates/intervention/detail/view.html:116
msgid "Shared with"
msgstr "Freigegeben für"
#: compensation/templates/compensation/detail/eco_account/includes/controls.html:15
#: ema/templates/ema/detail/includes/controls.html:15
#: intervention/forms/modalForms.py:66
#: intervention/forms/modalForms.py:67
#: intervention/templates/intervention/detail/includes/controls.html:15
msgid "Share"
msgstr "Freigabe"
@ -1080,30 +1080,22 @@ msgstr "Daten zu den verantwortlichen Stellen"
msgid "Compensations - Overview"
msgstr "Kompensationen - Übersicht"
#: compensation/views/compensation.py:82
msgid "Compensation {} added"
msgstr "Kompensation {} hinzugefügt"
#: compensation/views/compensation.py:147
msgid "Compensation {} edited"
msgstr "Kompensation {} bearbeitet"
#: compensation/views/compensation.py:157 compensation/views/eco_account.py:160
#: ema/views.py:227 intervention/views.py:310
#: ema/views.py:227 intervention/views.py:311
msgid "Edit {}"
msgstr "Bearbeite {}"
#: compensation/views/compensation.py:236 compensation/views/eco_account.py:316
#: ema/views.py:188 intervention/views.py:486
#: ema/views.py:188 intervention/views.py:487
msgid "Log"
msgstr "Log"
#: compensation/views/compensation.py:259
msgid "Compensation removed"
msgstr "Kompensation entfernt"
#: compensation/views/compensation.py:280 compensation/views/eco_account.py:496
#: ema/views.py:359 intervention/views.py:132
#: ema/views.py:359 intervention/views.py:133
msgid "Document added"
msgstr "Dokument hinzugefügt"
@ -1138,7 +1130,7 @@ msgid "Action removed"
msgstr "Maßnahme entfernt"
#: compensation/views/compensation.py:482 compensation/views/eco_account.py:586
#: ema/views.py:472 intervention/views.py:551
#: ema/views.py:472 intervention/views.py:580
msgid "Report {}"
msgstr "Bericht {}"
@ -1158,52 +1150,36 @@ msgstr "Ökokonto {} bearbeitet"
msgid "Eco-account removed"
msgstr "Ökokonto entfernt"
#: compensation/views/eco_account.py:291
msgid "Deduction removed"
msgstr "Abbuchung entfernt"
#: compensation/views/eco_account.py:337 ema/views.py:269
#: intervention/views.py:529
#: intervention/views.py:558
msgid "{} unrecorded"
msgstr "{} entzeichnet"
#: compensation/views/eco_account.py:337 ema/views.py:269
#: intervention/views.py:529
#: intervention/views.py:558
msgid "{} recorded"
msgstr "{} verzeichnet"
#: compensation/views/eco_account.py:567 intervention/views.py:509
msgid "Deduction added"
msgstr "Abbuchung hinzugefügt"
#: compensation/views/eco_account.py:659 ema/views.py:538
#: intervention/views.py:383
#: intervention/views.py:384
msgid "{} has already been shared with you"
msgstr "{} wurde bereits für Sie freigegeben"
#: compensation/views/eco_account.py:664 ema/views.py:543
#: intervention/views.py:388
#: intervention/views.py:389
msgid "{} has been shared with you"
msgstr "{} ist nun für Sie freigegeben"
#: compensation/views/eco_account.py:671 ema/views.py:550
#: intervention/views.py:395
#: intervention/views.py:396
msgid "Share link invalid"
msgstr "Freigabelink ungültig"
#: compensation/views/eco_account.py:694 ema/views.py:573
#: intervention/views.py:418
#: intervention/views.py:419
msgid "Share settings updated"
msgstr "Freigabe Einstellungen aktualisiert"
#: compensation/views/payment.py:37
msgid "Payment added"
msgstr "Zahlung hinzugefügt"
#: compensation/views/payment.py:58
msgid "Payment removed"
msgstr "Zahlung gelöscht"
#: ema/forms.py:40 ema/views.py:92
msgid "New EMA"
msgstr "Neue EMA hinzufügen"
@ -1248,88 +1224,84 @@ msgstr "EMA {} bearbeitet"
msgid "EMA removed"
msgstr "EMA entfernt"
#: intervention/forms/forms.py:44
#: intervention/forms/forms.py:46
msgid "Construction XY; Location ABC"
msgstr "Bauvorhaben XY; Flur ABC"
#: intervention/forms/forms.py:50
#: intervention/forms/forms.py:52
#: intervention/templates/intervention/detail/view.html:35
#: intervention/templates/intervention/report/report.html:16
#: intervention/utils/quality.py:82
msgid "Process type"
msgstr "Verfahrenstyp"
#: intervention/forms/forms.py:69
#: intervention/forms/forms.py:71
msgid "Multiple selection possible"
msgstr "Mehrfachauswahl möglich"
#: intervention/forms/forms.py:84
#: intervention/forms/forms.py:86
#: intervention/templates/intervention/detail/view.html:48
#: intervention/templates/intervention/report/report.html:29
#: intervention/utils/quality.py:46 konova/filters/mixins.py:363
msgid "Registration office"
msgstr "Zulassungsbehörde"
#: intervention/forms/forms.py:116
#: intervention/forms/forms.py:118
#: intervention/templates/intervention/detail/view.html:52
#: intervention/templates/intervention/report/report.html:33
#: intervention/utils/quality.py:39
msgid "Registration office file number"
msgstr "Aktenzeichen Zulassungsbehörde"
#: intervention/forms/forms.py:122
#: intervention/forms/forms.py:124
msgid "ZB-123/ABC.456"
msgstr ""
#: intervention/forms/forms.py:140
#: intervention/forms/forms.py:142
#: intervention/templates/intervention/detail/view.html:64
#: intervention/templates/intervention/report/report.html:45
#: intervention/utils/quality.py:52
msgid "Intervention handler"
msgstr "Eingriffsverursacher"
#: intervention/forms/forms.py:144
#: intervention/forms/forms.py:146
msgid "Who performs the intervention"
msgstr "Wer führt den Eingriff durch"
#: intervention/forms/forms.py:153
#: intervention/forms/forms.py:155
#: intervention/templates/intervention/detail/view.html:96
#: intervention/templates/intervention/report/report.html:83
#: intervention/utils/quality.py:73
msgid "Registration date"
msgstr "Datum Zulassung bzw. Satzungsbeschluss"
#: intervention/forms/forms.py:165
#: intervention/forms/forms.py:167
#: intervention/templates/intervention/detail/view.html:100
#: intervention/templates/intervention/report/report.html:87
msgid "Binding on"
msgstr "Datum Bestandskraft"
#: intervention/forms/forms.py:191 intervention/views.py:91
#: intervention/forms/forms.py:193 intervention/views.py:92
msgid "New intervention"
msgstr "Neuer Eingriff"
#: intervention/forms/forms.py:269
#: intervention/forms/forms.py:271
msgid "Edit intervention"
msgstr "Eingriff bearbeiten"
#: intervention/forms/forms.py:338
msgid "General data edited"
msgstr "Allgemeine Daten bearbeitet"
#: intervention/forms/modalForms.py:25
#: intervention/forms/modalForms.py:26
msgid "Share link"
msgstr "Freigabelink"
#: intervention/forms/modalForms.py:27
#: intervention/forms/modalForms.py:28
msgid "Send this link to users who you want to have writing access on the data"
msgstr "Andere Nutzer erhalten über diesen Link Zugriff auf die Daten"
#: intervention/forms/modalForms.py:37
#: intervention/forms/modalForms.py:38
msgid "Add user to share with"
msgstr "Nutzer direkt hinzufügen"
#: intervention/forms/modalForms.py:39
#: intervention/forms/modalForms.py:40
msgid ""
"Multiple selection possible - You can only select users which do not already "
"have access. Enter the full username."
@ -1337,46 +1309,46 @@ msgstr ""
"Mehrfachauswahl möglich - Sie können nur Nutzer wählen, für die der Eintrag "
"noch nicht freigegeben wurde. Geben Sie den ganzen Nutzernamen an."
#: intervention/forms/modalForms.py:55
#: intervention/forms/modalForms.py:56
msgid "Remove check to remove access for this user"
msgstr "Wählen Sie die Nutzer ab, die keinen Zugriff mehr haben sollen"
#: intervention/forms/modalForms.py:67
#: intervention/forms/modalForms.py:68
msgid "Share settings for {}"
msgstr "Freigabe Einstellungen für {}"
#: intervention/forms/modalForms.py:124
#: intervention/forms/modalForms.py:125
msgid "Date of revocation"
msgstr "Datum des Widerspruchs"
#: intervention/forms/modalForms.py:135
#: intervention/forms/modalForms.py:136
#: intervention/templates/intervention/detail/includes/revocation.html:35
msgid "Document"
msgstr "Dokument"
#: intervention/forms/modalForms.py:138
#: intervention/forms/modalForms.py:139
msgid "Must be smaller than 15 Mb"
msgstr "Muss kleiner als 15 Mb sein"
#: intervention/forms/modalForms.py:162
#: intervention/forms/modalForms.py:163
#: intervention/templates/intervention/detail/includes/revocation.html:18
msgid "Add revocation"
msgstr "Widerspruch hinzufügen"
#: intervention/forms/modalForms.py:179
#: intervention/forms/modalForms.py:180
msgid "Checked intervention data"
msgstr "Eingriffsdaten geprüft"
#: intervention/forms/modalForms.py:185
#: intervention/forms/modalForms.py:186
msgid "Checked compensations data and payments"
msgstr "Kompensationen und Zahlungen geprüft"
#: intervention/forms/modalForms.py:194
#: intervention/forms/modalForms.py:195
#: intervention/templates/intervention/detail/includes/controls.html:19
msgid "Run check"
msgstr "Prüfung vornehmen"
#: intervention/forms/modalForms.py:195 konova/forms.py:457
#: intervention/forms/modalForms.py:196 konova/forms.py:457
msgid ""
"I, {} {}, confirm that all necessary control steps have been performed by "
"myself."
@ -1384,23 +1356,23 @@ msgstr ""
"Ich, {} {}, bestätige, dass die notwendigen Kontrollschritte durchgeführt "
"wurden:"
#: intervention/forms/modalForms.py:279
#: intervention/forms/modalForms.py:280
msgid "Only recorded accounts can be selected for deductions"
msgstr "Nur verzeichnete Ökokonten können für Abbuchungen verwendet werden."
#: intervention/forms/modalForms.py:306
#: intervention/forms/modalForms.py:307
msgid "Only shared interventions can be selected"
msgstr "Nur freigegebene Eingriffe können gewählt werden"
#: intervention/forms/modalForms.py:319
#: intervention/forms/modalForms.py:320
msgid "New Deduction"
msgstr "Neue Abbuchung"
#: intervention/forms/modalForms.py:320
#: intervention/forms/modalForms.py:321
msgid "Enter the information for a new deduction from a chosen eco-account"
msgstr "Geben Sie die Informationen für eine neue Abbuchung ein."
#: intervention/forms/modalForms.py:348
#: intervention/forms/modalForms.py:349
msgid ""
"Eco-account {} is not recorded yet. You can only deduct from recorded "
"accounts."
@ -1408,7 +1380,7 @@ msgstr ""
"Ökokonto {} ist noch nicht verzeichnet. Abbuchungen können nur von "
"verzeichneten Ökokonten erfolgen."
#: intervention/forms/modalForms.py:361
#: intervention/forms/modalForms.py:362
msgid ""
"The account {} has not enough surface for a deduction of {} m². There are "
"only {} m² left"
@ -1511,39 +1483,31 @@ msgstr ""
"Kein Ausgleich jeglicher Art gefunden (Kompensation, Ersatzzahlung, "
"Abbuchung)"
#: intervention/views.py:48
#: intervention/views.py:49
msgid "Interventions - Overview"
msgstr "Eingriffe - Übersicht"
#: intervention/views.py:81
#: intervention/views.py:82
msgid "Intervention {} added"
msgstr "Eingriff {} hinzugefügt"
#: intervention/views.py:249
#: intervention/views.py:250
msgid "This intervention has {} revocations"
msgstr "Dem Eingriff liegen {} Widersprüche vor"
#: intervention/views.py:298
#: intervention/views.py:299
msgid "Intervention {} edited"
msgstr "Eingriff {} bearbeitet"
#: intervention/views.py:334
#: intervention/views.py:335
msgid "{} removed"
msgstr "{} entfernt"
#: intervention/views.py:356
msgid "Revocation removed"
msgstr "Widerspruch entfernt"
#: intervention/views.py:439
#: intervention/views.py:440
msgid "Check performed"
msgstr "Prüfung durchgeführt"
#: intervention/views.py:461
msgid "Revocation added"
msgstr "Widerspruch hinzugefügt"
#: intervention/views.py:534
#: intervention/views.py:563
msgid "There are errors on this intervention:"
msgstr "Es liegen Fehler in diesem Eingriff vor:"
@ -1891,18 +1855,50 @@ msgstr ""
"vor. Nur Eintragungsstellennutzer können diese Aktion jetzt durchführen."
#: konova/utils/message_templates.py:25
msgid "Compensation {} added"
msgstr "Kompensation {} hinzugefügt"
#: konova/utils/message_templates.py:26
msgid "Compensation {} removed"
msgstr "Kompensation {} entfernt"
#: konova/utils/message_templates.py:29
msgid "Deduction added"
msgstr "Abbuchung hinzugefügt"
#: konova/utils/message_templates.py:30
msgid "Deduction removed"
msgstr "Abbuchung entfernt"
#: konova/utils/message_templates.py:33
msgid "Payment added"
msgstr "Zahlung hinzugefügt"
#: konova/utils/message_templates.py:34
msgid "Payment removed"
msgstr "Zahlung gelöscht"
#: konova/utils/message_templates.py:37
msgid "Revocation added"
msgstr "Widerspruch hinzugefügt"
#: konova/utils/message_templates.py:38
msgid "Revocation removed"
msgstr "Widerspruch entfernt"
#: konova/utils/message_templates.py:41
msgid "Edited general data"
msgstr "Allgemeine Daten bearbeitet"
#: konova/utils/message_templates.py:26
#: konova/utils/message_templates.py:42
msgid "Added compensation state"
msgstr "Zustand hinzugefügt"
#: konova/utils/message_templates.py:28
#: konova/utils/message_templates.py:44
msgid "Added compensation action"
msgstr "Maßnahme hinzufügen"
#: konova/utils/message_templates.py:31
#: konova/utils/message_templates.py:47
msgid "Geometry conflict detected with {}"
msgstr "Geometriekonflikt mit folgenden Einträgen erkannt: {}"
@ -3922,6 +3918,9 @@ msgstr ""
msgid "Unable to connect to qpid with SASL mechanism %s"
msgstr ""
#~ msgid "General data edited"
#~ msgstr "Allgemeine Daten bearbeitet"
#~ msgid "Action type details"
#~ msgstr "Zusatzmerkmale"