From c5534bcd552d67d4e095df8efcdadd9894330f4d Mon Sep 17 00:00:00 2001 From: mpeltriaux Date: Thu, 10 Feb 2022 10:21:18 +0100 Subject: [PATCH] #86 Edit document * adds support for editing of documents * adds buttons for intervention --- compensation/forms/modalForms.py | 6 +- compensation/views/compensation.py | 4 +- compensation/views/eco_account.py | 6 +- ema/forms.py | 4 +- ema/views.py | 4 +- intervention/forms/modalForms.py | 30 +-- .../detail/includes/documents.html | 19 +- intervention/urls.py | 7 +- intervention/views.py | 44 ++- konova/forms.py | 45 +++- konova/utils/documents.py | 2 +- konova/utils/message_templates.py | 1 + locale/de/LC_MESSAGES/django.mo | Bin 37109 -> 37314 bytes locale/de/LC_MESSAGES/django.po | 250 +++++++++--------- 14 files changed, 247 insertions(+), 175 deletions(-) diff --git a/compensation/forms/modalForms.py b/compensation/forms/modalForms.py index a6e7df26..5368077c 100644 --- a/compensation/forms/modalForms.py +++ b/compensation/forms/modalForms.py @@ -18,7 +18,7 @@ from codelist.settings import CODELIST_BIOTOPES_ID, CODELIST_COMPENSATION_ACTION CODELIST_COMPENSATION_ACTION_DETAIL_ID from compensation.models import CompensationDocument, EcoAccountDocument from konova.contexts import BaseContext -from konova.forms import BaseModalForm, NewDocumentForm, RemoveModalForm +from konova.forms import BaseModalForm, NewDocumentModalForm, RemoveModalForm from konova.models import DeadlineType from konova.utils.message_templates import FORM_INVALID, ADDED_COMPENSATION_STATE, ADDED_DEADLINE, \ ADDED_COMPENSATION_ACTION, PAYMENT_EDITED @@ -443,9 +443,9 @@ class NewActionModalForm(BaseModalForm): return action -class NewCompensationDocumentForm(NewDocumentForm): +class NewCompensationDocumentModalForm(NewDocumentModalForm): document_model = CompensationDocument -class NewEcoAccountDocumentForm(NewDocumentForm): +class NewEcoAccountDocumentModalForm(NewDocumentModalForm): document_model = EcoAccountDocument \ No newline at end of file diff --git a/compensation/views/compensation.py b/compensation/views/compensation.py index c4b5c2f5..95f4ac0b 100644 --- a/compensation/views/compensation.py +++ b/compensation/views/compensation.py @@ -6,7 +6,7 @@ from django.utils.translation import gettext_lazy as _ from compensation.forms.forms import NewCompensationForm, EditCompensationForm from compensation.forms.modalForms import NewStateModalForm, NewDeadlineModalForm, NewActionModalForm, \ - NewCompensationDocumentForm, RemoveCompensationActionModalForm, RemoveCompensationStateModalForm + NewCompensationDocumentModalForm, RemoveCompensationActionModalForm, RemoveCompensationStateModalForm from compensation.models import Compensation, CompensationState, CompensationAction, CompensationDocument from compensation.tables import CompensationTable from intervention.models import Intervention @@ -276,7 +276,7 @@ def new_document_view(request: HttpRequest, id: str): """ comp = get_object_or_404(Compensation, id=id) - form = NewCompensationDocumentForm(request.POST or None, request.FILES or None, instance=comp, request=request) + form = NewCompensationDocumentModalForm(request.POST or None, request.FILES or None, instance=comp, request=request) return form.process_request( request, msg_success=DOCUMENT_ADDED, diff --git a/compensation/views/eco_account.py b/compensation/views/eco_account.py index 08e01a61..d433d551 100644 --- a/compensation/views/eco_account.py +++ b/compensation/views/eco_account.py @@ -16,7 +16,7 @@ from django.shortcuts import render, get_object_or_404, redirect from compensation.forms.forms import NewEcoAccountForm, EditEcoAccountForm from compensation.forms.modalForms import NewStateModalForm, NewActionModalForm, NewDeadlineModalForm, \ - NewEcoAccountDocumentForm, RemoveCompensationActionModalForm, RemoveCompensationStateModalForm + NewEcoAccountDocumentModalForm, RemoveCompensationActionModalForm, RemoveCompensationStateModalForm from compensation.models import EcoAccount, EcoAccountDocument, CompensationState, CompensationAction from compensation.tables import EcoAccountTable from intervention.forms.modalForms import NewDeductionModalForm, ShareModalForm, RemoveEcoAccountDeductionModalForm, \ @@ -24,7 +24,7 @@ from intervention.forms.modalForms import NewDeductionModalForm, ShareModalForm, from konova.contexts import BaseContext from konova.decorators import any_group_check, default_group_required, conservation_office_group_required, \ shared_access_required -from konova.forms import RemoveModalForm, SimpleGeomForm, NewDocumentForm, RecordModalForm, RemoveDeadlineModalForm +from konova.forms import RemoveModalForm, SimpleGeomForm, NewDocumentModalForm, RecordModalForm, RemoveDeadlineModalForm from konova.models import Deadline from konova.settings import DEFAULT_GROUP, ZB_GROUP, ETS_GROUP from konova.sub_settings.context_settings import TAB_TITLE_IDENTIFIER @@ -524,7 +524,7 @@ def new_document_view(request: HttpRequest, id: str): """ acc = get_object_or_404(EcoAccount, id=id) - form = NewEcoAccountDocumentForm(request.POST or None, request.FILES or None, instance=acc, request=request) + form = NewEcoAccountDocumentModalForm(request.POST or None, request.FILES or None, instance=acc, request=request) return form.process_request( request, msg_success=DOCUMENT_ADDED, diff --git a/ema/forms.py b/ema/forms.py index 5dc3bcfb..2f193605 100644 --- a/ema/forms.py +++ b/ema/forms.py @@ -15,7 +15,7 @@ from django.utils.translation import gettext_lazy as _ from compensation.forms.forms import AbstractCompensationForm, CompensationResponsibleFormMixin from ema.models import Ema, EmaDocument from intervention.models import Responsibility -from konova.forms import SimpleGeomForm, NewDocumentForm +from konova.forms import SimpleGeomForm, NewDocumentModalForm from user.models import UserActionLogEntry @@ -150,5 +150,5 @@ class EditEmaForm(NewEmaForm): return self.instance -class NewEmaDocumentForm(NewDocumentForm): +class NewEmaDocumentModalForm(NewDocumentModalForm): document_model = EmaDocument \ No newline at end of file diff --git a/ema/views.py b/ema/views.py index 900dde7c..99c80be3 100644 --- a/ema/views.py +++ b/ema/views.py @@ -9,7 +9,7 @@ from django.utils.translation import gettext_lazy as _ from compensation.forms.modalForms import NewStateModalForm, NewActionModalForm, NewDeadlineModalForm, \ RemoveCompensationActionModalForm, RemoveCompensationStateModalForm from compensation.models import CompensationAction, CompensationState -from ema.forms import NewEmaForm, EditEmaForm, NewEmaDocumentForm +from ema.forms import NewEmaForm, EditEmaForm, NewEmaDocumentModalForm from ema.tables import EmaTable from intervention.forms.modalForms import ShareModalForm from konova.contexts import BaseContext @@ -356,7 +356,7 @@ def document_new_view(request: HttpRequest, id: str): """ ema = get_object_or_404(Ema, id=id) - form = NewEmaDocumentForm(request.POST or None, request.FILES or None, instance=ema, request=request) + form = NewEmaDocumentModalForm(request.POST or None, request.FILES or None, instance=ema, request=request) return form.process_request( request, msg_success=DOCUMENT_ADDED, diff --git a/intervention/forms/modalForms.py b/intervention/forms/modalForms.py index 8039b3ae..a8fa98de 100644 --- a/intervention/forms/modalForms.py +++ b/intervention/forms/modalForms.py @@ -19,7 +19,7 @@ from django.utils.translation import gettext_lazy as _ from compensation.models import EcoAccount, EcoAccountDeduction from intervention.inputs import TextToClipboardInput from intervention.models import Intervention, InterventionDocument, RevocationDocument -from konova.forms import BaseModalForm, NewDocumentForm, RemoveModalForm +from konova.forms import BaseModalForm, NewDocumentModalForm, RemoveModalForm from konova.utils.general import format_german_float from konova.utils.user_checks import is_default_group_only @@ -170,32 +170,6 @@ class NewRevocationModalForm(BaseModalForm): "enctype": "multipart/form-data", # important for file upload } - def is_valid(self): - super_valid = super().is_valid() - - _file = self.cleaned_data.get("file", None) - - if isinstance(_file, FieldFile): - # FieldFile declares that no new file has been uploaded and we do not need to check on the file again - return super_valid - - mime_type_valid = self.document_model.is_mime_type_valid(_file) - if not mime_type_valid: - self.add_error( - "file", - FILE_TYPE_UNSUPPORTED - ) - - file_size_valid = self.document_model.is_file_size_valid(_file) - if not file_size_valid: - self.add_error( - "file", - FILE_SIZE_TOO_LARGE - ) - - file_valid = mime_type_valid and file_size_valid - return super_valid and file_valid - def save(self): revocation = self.instance.add_revocation(self) self.instance.mark_as_edited(self.user, self.request, edit_comment=REVOCATION_ADDED) @@ -543,5 +517,5 @@ class RemoveEcoAccountDeductionModalForm(RemoveModalForm): self.deduction.delete() -class NewInterventionDocumentForm(NewDocumentForm): +class NewInterventionDocumentModalForm(NewDocumentModalForm): document_model = InterventionDocument diff --git a/intervention/templates/intervention/detail/includes/documents.html b/intervention/templates/intervention/detail/includes/documents.html index f536f154..93309f5c 100644 --- a/intervention/templates/intervention/detail/includes/documents.html +++ b/intervention/templates/intervention/detail/includes/documents.html @@ -27,7 +27,10 @@ {% trans 'Title' %} - + + {% trans 'Created on' %} + + {% trans 'Comment' %} {% if is_default_member and has_access %} @@ -43,18 +46,26 @@ {% for doc in obj.documents.all %} - + {{ doc.title }} + +
+ {{ doc.date_of_creation }} +
+
{{ doc.comment }}
- + {% if is_default_member and has_access %} - + {% endif %} diff --git a/intervention/urls.py b/intervention/urls.py index 45985587..2a5e6d38 100644 --- a/intervention/urls.py +++ b/intervention/urls.py @@ -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_compensation_view, edit_deduction_view, edit_revocation_view + remove_deduction_view, remove_compensation_view, edit_deduction_view, edit_revocation_view, edit_document_view app_name = "intervention" urlpatterns = [ @@ -32,8 +32,9 @@ urlpatterns = [ # Documents path('/document/new/', new_document_view, name='new-doc'), - path('document/', get_document_view, name='get-doc'), - path('document//remove/', remove_document_view, name='remove-doc'), + path('/document/', get_document_view, name='get-doc'), + path('/document//remove/', remove_document_view, name='remove-doc'), + path('/document//edit/', edit_document_view, name='edit-doc'), # Deductions path('/deduction/new', new_deduction_view, name='new-deduction'), diff --git a/intervention/views.py b/intervention/views.py index 90447c91..2945c337 100644 --- a/intervention/views.py +++ b/intervention/views.py @@ -6,19 +6,19 @@ from django.shortcuts import render from intervention.forms.forms import NewInterventionForm, EditInterventionForm from intervention.forms.modalForms import ShareModalForm, NewRevocationModalForm, \ - CheckModalForm, NewDeductionModalForm, NewInterventionDocumentForm, RemoveEcoAccountDeductionModalForm, \ + CheckModalForm, NewDeductionModalForm, NewInterventionDocumentModalForm, RemoveEcoAccountDeductionModalForm, \ RemoveRevocationModalForm, EditEcoAccountDeductionModalForm, EditRevocationModalForm from intervention.models import Intervention, Revocation, InterventionDocument, RevocationDocument from intervention.tables import InterventionTable from konova.contexts import BaseContext from konova.decorators import * -from konova.forms import SimpleGeomForm, RemoveModalForm, RecordModalForm +from konova.forms import SimpleGeomForm, RemoveModalForm, RecordModalForm, EditDocumentModalForm 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, \ - COMPENSATION_REMOVED_TEMPLATE, DOCUMENT_ADDED, DEDUCTION_EDITED, REVOCATION_EDITED + COMPENSATION_REMOVED_TEMPLATE, DOCUMENT_ADDED, DEDUCTION_EDITED, REVOCATION_EDITED, DOCUMENT_EDITED from konova.utils.user_checks import in_group @@ -129,7 +129,7 @@ def new_document_view(request: HttpRequest, id: str): """ intervention = get_object_or_404(Intervention, id=id) - form = NewInterventionDocumentForm(request.POST or None, request.FILES or None, instance=intervention, request=request) + form = NewInterventionDocumentModalForm(request.POST or None, request.FILES or None, instance=intervention, request=request) return form.process_request( request, msg_success=DOCUMENT_ADDED, @@ -164,18 +164,21 @@ def get_revocation_view(request: HttpRequest, doc_id: str): @login_required @default_group_required -def get_document_view(request: HttpRequest, doc_id: str): +@shared_access_required(Intervention, "id") +def get_document_view(request: HttpRequest, id: str, doc_id: str): """ Returns the document as downloadable file Wraps the generic document fetcher function from konova.utils. Args: request (HttpRequest): The incoming request + id (str): The intervention id doc_id (str): The document id Returns: """ + intervention = get_object_or_404(Intervention, id=id) doc = get_object_or_404(InterventionDocument, id=doc_id) user = request.user instance = doc.instance @@ -191,18 +194,21 @@ def get_document_view(request: HttpRequest, doc_id: str): @login_required @default_group_required -def remove_document_view(request: HttpRequest, doc_id: str): +@shared_access_required(Intervention, "id") +def remove_document_view(request: HttpRequest, id: str, doc_id: str): """ Removes the document from the database and file system Wraps the generic functionality from konova.utils. Args: request (HttpRequest): The incoming request + id (str): The intervention id doc_id (str): The document id Returns: """ + intervention = get_object_or_404(Intervention, id=id) doc = get_object_or_404(InterventionDocument, id=doc_id) return remove_document( request, @@ -210,6 +216,32 @@ def remove_document_view(request: HttpRequest, doc_id: str): ) +@login_required +@default_group_required +@shared_access_required(Intervention, "id") +def edit_document_view(request: HttpRequest, id: str, doc_id: str): + """ Removes the document from the database and file system + + Wraps the generic functionality from konova.utils. + + Args: + request (HttpRequest): The incoming request + id (str): The intervention id + doc_id (str): The document id + + Returns: + + """ + intervention = get_object_or_404(Intervention, id=id) + doc = get_object_or_404(InterventionDocument, id=doc_id) + form = EditDocumentModalForm(request.POST or None, request.FILES or None, instance=intervention, document=doc, request=request) + return form.process_request( + request, + DOCUMENT_EDITED, + redirect_url=reverse("intervention:detail", args=(intervention.id,)) + "#related_data" + ) + + @login_required @any_group_check def detail_view(request: HttpRequest, id: str): diff --git a/konova/forms.py b/konova/forms.py index a842e411..57562f71 100644 --- a/konova/forms.py +++ b/konova/forms.py @@ -12,6 +12,8 @@ from bootstrap_modal_forms.forms import BSModalForm from bootstrap_modal_forms.utils import is_ajax from django import forms from django.contrib import messages +from django.db.models.fields.files import FieldFile + from user.models import User from django.contrib.gis.forms import OSMWidget, MultiPolygonField from django.contrib.gis.geos import MultiPolygon @@ -21,10 +23,10 @@ from django.shortcuts import render from django.utils.translation import gettext_lazy as _ from konova.contexts import BaseContext -from konova.models import BaseObject, Geometry, RecordableObjectMixin +from konova.models import BaseObject, Geometry, RecordableObjectMixin, AbstractDocument from konova.settings import DEFAULT_SRID from konova.tasks import celery_update_parcels -from konova.utils.message_templates import FORM_INVALID, FILE_TYPE_UNSUPPORTED, FILE_SIZE_TOO_LARGE +from konova.utils.message_templates import FORM_INVALID, FILE_TYPE_UNSUPPORTED, FILE_SIZE_TOO_LARGE, DOCUMENT_EDITED from user.models import UserActionLogEntry @@ -348,7 +350,7 @@ class RemoveDeadlineModalForm(RemoveModalForm): self.instance.remove_deadline(self) -class NewDocumentForm(BaseModalForm): +class NewDocumentModalForm(BaseModalForm): """ Modal form for new documents """ @@ -420,6 +422,10 @@ class NewDocumentForm(BaseModalForm): _file = self.cleaned_data.get("file", None) + if _file is None or isinstance(_file, FieldFile): + # FieldFile declares that no new file has been uploaded and we do not need to check on the file again + return super_valid + mime_type_valid = self.document_model.is_mime_type_valid(_file) if not mime_type_valid: self.add_error( @@ -458,6 +464,39 @@ class NewDocumentForm(BaseModalForm): return doc +class EditDocumentModalForm(NewDocumentModalForm): + document = None + document_model = AbstractDocument + + def __init__(self, *args, **kwargs): + self.document = kwargs.pop("document", None) + super().__init__(*args, **kwargs) + form_data = { + "title": self.document.title, + "comment": self.document.comment, + "creation_date": str(self.document.date_of_creation), + "file": self.document.file, + } + self.load_initial_data(form_data) + + + def save(self): + with transaction.atomic(): + document = self.document + file = self.cleaned_data.get("file", None) + + document.title = self.cleaned_data.get("title", None) + document.comment = self.cleaned_data.get("comment", None) + document.date_of_creation = self.cleaned_data.get("creation_date", None) + if not isinstance(file, FieldFile): + document.replace_file(file) + document.save() + + self.instance.mark_as_edited(self.user, self.request, edit_comment=DOCUMENT_EDITED) + + return document + + class RecordModalForm(BaseModalForm): """ Modal form for recording data diff --git a/konova/utils/documents.py b/konova/utils/documents.py index 63a7d328..f9b15160 100644 --- a/konova/utils/documents.py +++ b/konova/utils/documents.py @@ -50,5 +50,5 @@ def remove_document(request: HttpRequest, doc: AbstractDocument): form = RemoveModalForm(request.POST or None, instance=doc, request=request) return form.process_request( request=request, - msg_success=DOCUMENT_REMOVED_TEMPLATE.format(title) + msg_success=DOCUMENT_REMOVED_TEMPLATE.format(title), ) \ No newline at end of file diff --git a/konova/utils/message_templates.py b/konova/utils/message_templates.py index 2196dd9c..c7a2be00 100644 --- a/konova/utils/message_templates.py +++ b/konova/utils/message_templates.py @@ -65,6 +65,7 @@ REVOCATION_REMOVED = _("Revocation removed") # DOCUMENTS DOCUMENT_REMOVED_TEMPLATE = _("Document '{}' deleted") DOCUMENT_ADDED = _("Document added") +DOCUMENT_EDITED = _("Document edited") # Edited EDITED_GENERAL_DATA = _("Edited general data") diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo index 86cf2739bfdda76a4b610efe974b54aee72f0ad0..f2e51b0088fba3200fe8ff206ddd3043ff1e8a06 100644 GIT binary patch delta 10906 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

hSy;z79n2|b7KOAVQbV%bwNGX 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 diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po index 67ae2338..488b3d4c 100644 --- a/locale/de/LC_MESSAGES/django.po +++ b/locale/de/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ #: compensation/forms/modalForms.py:46 compensation/forms/modalForms.py:62 #: compensation/forms/modalForms.py:332 compensation/forms/modalForms.py:425 #: 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 +#: intervention/forms/forms.py:168 intervention/forms/modalForms.py:127 +#: intervention/forms/modalForms.py:140 intervention/forms/modalForms.py:153 #: 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 @@ -18,15 +18,15 @@ #: konova/filters/mixins.py:270 konova/filters/mixins.py:315 #: konova/filters/mixins.py:353 konova/filters/mixins.py:354 #: konova/filters/mixins.py:385 konova/filters/mixins.py:386 -#: konova/forms.py:141 konova/forms.py:242 konova/forms.py:313 -#: konova/forms.py:357 konova/forms.py:367 konova/forms.py:380 -#: konova/forms.py:392 konova/forms.py:410 user/forms.py:42 +#: konova/forms.py:143 konova/forms.py:244 konova/forms.py:315 +#: konova/forms.py:359 konova/forms.py:369 konova/forms.py:382 +#: konova/forms.py:394 konova/forms.py:412 user/forms.py:42 #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-02-09 12:52+0100\n" +"POT-Creation-Date: 2022-02-10 10:17+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -63,7 +63,7 @@ msgstr "Verantwortliche Stelle" #: analysis/forms.py:58 compensation/forms/forms.py:88 #: 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 +#: intervention/forms/forms.py:113 intervention/forms/modalForms.py:49 msgid "Click for selection" msgstr "Auswählen..." @@ -75,7 +75,7 @@ msgstr "Bericht generieren" msgid "Select a timespan and the desired conservation office" msgstr "Wählen Sie die Zeitspanne und die gewünschte Eintragungsstelle" -#: analysis/forms.py:69 konova/forms.py:189 +#: analysis/forms.py:69 konova/forms.py:191 msgid "Continue" msgstr "Weiter" @@ -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:311 +#: intervention/forms/modalForms.py:338 msgid "Surface" msgstr "Fläche" @@ -283,8 +283,8 @@ msgid "Type" msgstr "Typ" #: analysis/templates/analysis/reports/includes/old_data/amount.html:24 -#: compensation/tables.py:89 intervention/forms/modalForms.py:322 -#: intervention/forms/modalForms.py:329 intervention/tables.py:88 +#: compensation/tables.py:89 intervention/forms/modalForms.py:349 +#: intervention/forms/modalForms.py:356 intervention/tables.py:88 #: intervention/templates/intervention/detail/view.html:19 #: konova/templates/konova/includes/quickstart/interventions.html:4 #: templates/navbars/navbar.html:22 @@ -294,7 +294,7 @@ msgstr "Eingriff" #: analysis/templates/analysis/reports/includes/old_data/amount.html:34 #: compensation/tables.py:266 #: compensation/templates/compensation/detail/eco_account/view.html:19 -#: intervention/forms/modalForms.py:295 intervention/forms/modalForms.py:302 +#: intervention/forms/modalForms.py:322 intervention/forms/modalForms.py:329 #: konova/templates/konova/includes/quickstart/ecoaccounts.html:4 #: templates/navbars/navbar.html:34 msgid "Eco-account" @@ -340,7 +340,7 @@ msgstr "Automatisch generiert" #: intervention/templates/intervention/detail/includes/documents.html:28 #: intervention/templates/intervention/detail/view.html:31 #: intervention/templates/intervention/report/report.html:12 -#: konova/forms.py:356 +#: konova/forms.py:358 msgid "Title" msgstr "Bezeichnung" @@ -363,11 +363,11 @@ 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:180 intervention/forms/modalForms.py:149 -#: intervention/templates/intervention/detail/includes/documents.html:31 +#: intervention/forms/forms.py:180 intervention/forms/modalForms.py:152 +#: intervention/templates/intervention/detail/includes/documents.html:34 #: intervention/templates/intervention/detail/includes/payments.html:34 #: intervention/templates/intervention/detail/includes/revocation.html:38 -#: konova/forms.py:391 konova/templates/konova/includes/comment_card.html:16 +#: konova/forms.py:393 konova/templates/konova/includes/comment_card.html:16 msgid "Comment" msgstr "Kommentar" @@ -483,7 +483,7 @@ msgid "Due on which date" msgstr "Zahlung wird an diesem Datum erwartet" #: compensation/forms/modalForms.py:63 compensation/forms/modalForms.py:333 -#: intervention/forms/modalForms.py:151 konova/forms.py:393 +#: intervention/forms/modalForms.py:154 konova/forms.py:395 msgid "Additional comment, maximum {} letters" msgstr "Zusätzlicher Kommentar, maximal {} Zeichen" @@ -511,7 +511,7 @@ msgstr "Zusatzbezeichnung" msgid "Select an additional biotope type" msgstr "Zusatzbezeichnung wählen" -#: compensation/forms/modalForms.py:196 intervention/forms/modalForms.py:313 +#: compensation/forms/modalForms.py:196 intervention/forms/modalForms.py:340 msgid "in m²" msgstr "" @@ -523,7 +523,7 @@ msgstr "Neuer Zustand" msgid "Insert data for the new state" msgstr "Geben Sie die Daten des neuen Zustandes ein" -#: compensation/forms/modalForms.py:215 konova/forms.py:191 +#: compensation/forms/modalForms.py:215 konova/forms.py:193 msgid "Object removed" msgstr "Objekt entfernt" @@ -539,7 +539,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:123 +#: intervention/forms/modalForms.py:126 msgid "Date" msgstr "Datum" @@ -582,7 +582,7 @@ msgstr "Maßnahmentyp wählen" #: ema/templates/ema/detail/includes/states-before.html:40 #: intervention/templates/intervention/detail/includes/compensations.html:38 #: intervention/templates/intervention/detail/includes/deductions.html:39 -#: intervention/templates/intervention/detail/includes/documents.html:36 +#: intervention/templates/intervention/detail/includes/documents.html:39 #: intervention/templates/intervention/detail/includes/payments.html:39 #: intervention/templates/intervention/detail/includes/revocation.html:43 #: templates/log.html:10 @@ -821,14 +821,14 @@ msgstr "Dokumente" #: compensation/templates/compensation/detail/eco_account/includes/documents.html:14 #: ema/templates/ema/detail/includes/documents.html:14 #: intervention/templates/intervention/detail/includes/documents.html:14 -#: konova/forms.py:409 +#: konova/forms.py:411 msgid "Add new document" msgstr "Neues Dokument hinzufügen" #: compensation/templates/compensation/detail/compensation/includes/documents.html:57 #: compensation/templates/compensation/detail/eco_account/includes/documents.html:55 #: ema/templates/ema/detail/includes/documents.html:55 -#: intervention/templates/intervention/detail/includes/documents.html:57 +#: intervention/templates/intervention/detail/includes/documents.html:68 msgid "Remove document" msgstr "Dokument löschen" @@ -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:53 +#: ema/templates/ema/detail/view.html:76 intervention/forms/modalForms.py:56 #: 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:67 +#: intervention/forms/modalForms.py:70 #: intervention/templates/intervention/detail/includes/controls.html:15 msgid "Share" msgstr "Freigabe" @@ -992,6 +992,11 @@ msgid "Recorded on" msgstr "Verzeichnet am" #: compensation/templates/compensation/detail/eco_account/includes/deductions.html:65 +#: intervention/templates/intervention/detail/includes/deductions.html:60 +msgid "Edit Deduction" +msgstr "Abbuchung bearbeiten" + +#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:68 #: intervention/templates/intervention/detail/includes/deductions.html:63 msgid "Remove Deduction" msgstr "Abbuchung entfernen" @@ -1080,22 +1085,22 @@ msgstr "Daten zu den verantwortlichen Stellen" msgid "Compensations - Overview" msgstr "Kompensationen - Übersicht" -#: compensation/views/compensation.py:149 konova/utils/message_templates.py:27 +#: compensation/views/compensation.py:149 konova/utils/message_templates.py:31 msgid "Compensation {} edited" msgstr "Kompensation {} bearbeitet" #: compensation/views/compensation.py:159 compensation/views/eco_account.py:163 -#: ema/views.py:230 intervention/views.py:305 +#: ema/views.py:230 intervention/views.py:337 msgid "Edit {}" msgstr "Bearbeite {}" #: compensation/views/compensation.py:238 compensation/views/eco_account.py:347 -#: ema/views.py:191 intervention/views.py:483 +#: ema/views.py:191 intervention/views.py:541 msgid "Log" msgstr "Log" #: compensation/views/compensation.py:487 compensation/views/eco_account.py:620 -#: ema/views.py:477 intervention/views.py:629 +#: ema/views.py:477 intervention/views.py:687 msgid "Report {}" msgstr "Bericht {}" @@ -1116,32 +1121,32 @@ msgid "Eco-account removed" msgstr "Ökokonto entfernt" #: compensation/views/eco_account.py:368 ema/views.py:272 -#: intervention/views.py:582 +#: intervention/views.py:640 msgid "{} unrecorded" msgstr "{} entzeichnet" #: compensation/views/eco_account.py:368 ema/views.py:272 -#: intervention/views.py:582 +#: intervention/views.py:640 msgid "{} recorded" msgstr "{} verzeichnet" #: compensation/views/eco_account.py:693 ema/views.py:543 -#: intervention/views.py:380 +#: intervention/views.py:438 msgid "{} has already been shared with you" msgstr "{} wurde bereits für Sie freigegeben" #: compensation/views/eco_account.py:698 ema/views.py:548 -#: intervention/views.py:385 +#: intervention/views.py:443 msgid "{} has been shared with you" msgstr "{} ist nun für Sie freigegeben" #: compensation/views/eco_account.py:705 ema/views.py:555 -#: intervention/views.py:392 +#: intervention/views.py:450 msgid "Share link invalid" msgstr "Freigabelink ungültig" #: compensation/views/eco_account.py:728 ema/views.py:578 -#: intervention/views.py:415 +#: intervention/views.py:473 msgid "Share settings updated" msgstr "Freigabe Einstellungen aktualisiert" @@ -1254,19 +1259,19 @@ msgstr "Neuer Eingriff" msgid "Edit intervention" msgstr "Eingriff bearbeiten" -#: intervention/forms/modalForms.py:26 +#: intervention/forms/modalForms.py:29 msgid "Share link" msgstr "Freigabelink" -#: intervention/forms/modalForms.py:28 +#: intervention/forms/modalForms.py:31 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:38 +#: intervention/forms/modalForms.py:41 msgid "Add user to share with" msgstr "Nutzer direkt hinzufügen" -#: intervention/forms/modalForms.py:40 +#: intervention/forms/modalForms.py:43 msgid "" "Multiple selection possible - You can only select users which do not already " "have access. Enter the full username." @@ -1274,46 +1279,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:56 +#: intervention/forms/modalForms.py:59 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:68 +#: intervention/forms/modalForms.py:71 msgid "Share settings for {}" msgstr "Freigabe Einstellungen für {}" -#: intervention/forms/modalForms.py:125 +#: intervention/forms/modalForms.py:128 msgid "Date of revocation" msgstr "Datum des Widerspruchs" -#: intervention/forms/modalForms.py:136 +#: intervention/forms/modalForms.py:139 #: intervention/templates/intervention/detail/includes/revocation.html:35 msgid "Document" msgstr "Dokument" -#: intervention/forms/modalForms.py:139 +#: intervention/forms/modalForms.py:142 msgid "Must be smaller than 15 Mb" msgstr "Muss kleiner als 15 Mb sein" -#: intervention/forms/modalForms.py:163 +#: intervention/forms/modalForms.py:167 #: intervention/templates/intervention/detail/includes/revocation.html:18 msgid "Add revocation" msgstr "Widerspruch hinzufügen" -#: intervention/forms/modalForms.py:197 +#: intervention/forms/modalForms.py:224 msgid "Checked intervention data" msgstr "Eingriffsdaten geprüft" -#: intervention/forms/modalForms.py:203 +#: intervention/forms/modalForms.py:230 msgid "Checked compensations data and payments" msgstr "Kompensationen und Zahlungen geprüft" -#: intervention/forms/modalForms.py:212 +#: intervention/forms/modalForms.py:239 #: intervention/templates/intervention/detail/includes/controls.html:19 msgid "Run check" msgstr "Prüfung vornehmen" -#: intervention/forms/modalForms.py:213 konova/forms.py:475 +#: intervention/forms/modalForms.py:240 konova/forms.py:514 msgid "" "I, {} {}, confirm that all necessary control steps have been performed by " "myself." @@ -1321,23 +1326,23 @@ msgstr "" "Ich, {} {}, bestätige, dass die notwendigen Kontrollschritte durchgeführt " "wurden:" -#: intervention/forms/modalForms.py:297 +#: intervention/forms/modalForms.py:324 msgid "Only recorded accounts can be selected for deductions" msgstr "Nur verzeichnete Ökokonten können für Abbuchungen verwendet werden." -#: intervention/forms/modalForms.py:324 +#: intervention/forms/modalForms.py:351 msgid "Only shared interventions can be selected" msgstr "Nur freigegebene Eingriffe können gewählt werden" -#: intervention/forms/modalForms.py:337 +#: intervention/forms/modalForms.py:364 msgid "New Deduction" msgstr "Neue Abbuchung" -#: intervention/forms/modalForms.py:338 +#: intervention/forms/modalForms.py:365 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:381 +#: intervention/forms/modalForms.py:408 msgid "" "Eco-account {} is not recorded yet. You can only deduct from recorded " "accounts." @@ -1345,7 +1350,7 @@ msgstr "" "Ökokonto {} ist noch nicht verzeichnet. Abbuchungen können nur von " "verzeichneten Ökokonten erfolgen." -#: intervention/forms/modalForms.py:391 +#: intervention/forms/modalForms.py:418 msgid "" "The account {} has not enough surface for a deduction of {} m². There are " "only {} m² left" @@ -1373,9 +1378,14 @@ msgstr "Ökokonto gelöscht! Abbuchung ungültig!" msgid "Eco-account not recorded! Deduction invalid!" msgstr "Ökokonto nicht verzeichnet! Abbuchung ungültig!" -#: intervention/templates/intervention/detail/includes/deductions.html:60 -msgid "Edit Deduction" -msgstr "Abbuchung bearbeiten" +#: intervention/templates/intervention/detail/includes/documents.html:31 +#: konova/forms.py:368 +msgid "Created on" +msgstr "Erstellt" + +#: intervention/templates/intervention/detail/includes/documents.html:65 +msgid "Edit document" +msgstr "Dokument bearbeitet" #: intervention/templates/intervention/detail/includes/payments.html:8 #: intervention/templates/intervention/report/report.html:73 @@ -1414,6 +1424,10 @@ msgid "Revocation" msgstr "Widerspruch" #: intervention/templates/intervention/detail/includes/revocation.html:69 +msgid "Edit revocation" +msgstr "Widerspruch bearbeiten" + +#: intervention/templates/intervention/detail/includes/revocation.html:72 msgid "Remove revocation" msgstr "Widerspruch entfernen" @@ -1456,19 +1470,19 @@ msgstr "Eingriffe - Übersicht" msgid "Intervention {} added" msgstr "Eingriff {} hinzugefügt" -#: intervention/views.py:293 +#: intervention/views.py:325 msgid "Intervention {} edited" msgstr "Eingriff {} bearbeitet" -#: intervention/views.py:329 +#: intervention/views.py:361 msgid "{} removed" msgstr "{} entfernt" -#: intervention/views.py:436 +#: intervention/views.py:494 msgid "Check performed" msgstr "Prüfung durchgeführt" -#: intervention/views.py:587 +#: intervention/views.py:645 msgid "There are errors on this intervention:" msgstr "Es liegen Fehler in diesem Eingriff vor:" @@ -1552,81 +1566,69 @@ msgstr "Nach Zulassungsbehörde suchen" msgid "Search for conservation office" msgstr "Nch Eintragungsstelle suchen" -#: konova/forms.py:37 templates/form/collapsable/form.html:62 +#: konova/forms.py:39 templates/form/collapsable/form.html:62 msgid "Save" msgstr "Speichern" -#: konova/forms.py:69 +#: konova/forms.py:71 msgid "Not editable" msgstr "Nicht editierbar" -#: konova/forms.py:140 konova/forms.py:312 +#: konova/forms.py:142 konova/forms.py:314 msgid "Confirm" msgstr "Bestätige" -#: konova/forms.py:152 konova/forms.py:321 +#: konova/forms.py:154 konova/forms.py:323 msgid "Remove" msgstr "Löschen" -#: konova/forms.py:154 +#: konova/forms.py:156 msgid "You are about to remove {} {}" msgstr "Sie sind dabei {} {} zu löschen" -#: konova/forms.py:241 konova/utils/quality.py:44 konova/utils/quality.py:46 +#: konova/forms.py:243 konova/utils/quality.py:44 konova/utils/quality.py:46 #: templates/form/collapsable/form.html:45 msgid "Geometry" msgstr "Geometrie" -#: konova/forms.py:322 +#: konova/forms.py:324 msgid "Are you sure?" msgstr "Sind Sie sicher?" -#: konova/forms.py:366 -msgid "Created on" -msgstr "Erstellt" - -#: konova/forms.py:368 +#: konova/forms.py:370 msgid "When has this file been created? Important for photos." msgstr "Wann wurde diese Datei erstellt oder das Foto aufgenommen?" -#: konova/forms.py:379 +#: konova/forms.py:381 #: venv/lib/python3.7/site-packages/django/db/models/fields/files.py:231 msgid "File" msgstr "Datei" -#: konova/forms.py:381 +#: konova/forms.py:383 msgid "Allowed formats: pdf, jpg, png. Max size 15 MB." msgstr "Formate: pdf, jpg, png. Maximal 15 MB." -#: konova/forms.py:427 -msgid "Unsupported file type" -msgstr "Dateiformat nicht unterstützt" - -#: konova/forms.py:434 -msgid "File too large" -msgstr "Datei zu groß" - -#: konova/forms.py:443 +#: konova/forms.py:449 msgid "Added document" msgstr "Dokument hinzugefügt" -#: konova/forms.py:466 +#: konova/forms.py:505 msgid "Confirm record" msgstr "Verzeichnen bestätigen" -#: konova/forms.py:474 +#: konova/forms.py:513 msgid "Record data" msgstr "Daten verzeichnen" -#: konova/forms.py:481 +#: konova/forms.py:520 msgid "Confirm unrecord" msgstr "Entzeichnen bestätigen" -#: konova/forms.py:482 +#: konova/forms.py:521 msgid "Unrecord data" msgstr "Daten entzeichnen" -#: konova/forms.py:483 +#: konova/forms.py:522 msgid "I, {} {}, confirm that this data must be unrecorded." msgstr "" "Ich, {} {}, bestätige, dass diese Daten wieder entzeichnet werden müssen." @@ -1800,6 +1802,14 @@ msgid "Status of Checked and Recorded reseted" msgstr "'Geprüft'/'Verzeichnet' wurde zurückgesetzt" #: konova/utils/message_templates.py:22 +msgid "Unsupported file type" +msgstr "Dateiformat nicht unterstützt" + +#: konova/utils/message_templates.py:23 +msgid "File too large" +msgstr "Datei zu groß" + +#: konova/utils/message_templates.py:26 msgid "" "Action canceled. Eco account is recorded or deductions exist. Only " "conservation office member can perform this action." @@ -1807,115 +1817,119 @@ msgstr "" "Aktion abgebrochen. Ökokonto ist bereits verzeichnet oder Abbuchungen liegen " "vor. Nur Eintragungsstellennutzer können diese Aktion jetzt durchführen." -#: konova/utils/message_templates.py:25 +#: konova/utils/message_templates.py:29 msgid "Compensation {} added" msgstr "Kompensation {} hinzugefügt" -#: konova/utils/message_templates.py:26 +#: konova/utils/message_templates.py:30 msgid "Compensation {} removed" msgstr "Kompensation {} entfernt" -#: konova/utils/message_templates.py:28 +#: konova/utils/message_templates.py:32 msgid "Added compensation action" msgstr "Maßnahme hinzugefügt" -#: konova/utils/message_templates.py:29 +#: konova/utils/message_templates.py:33 msgid "Added compensation state" msgstr "Zustand hinzugefügt" -#: konova/utils/message_templates.py:32 +#: konova/utils/message_templates.py:36 msgid "State removed" msgstr "Zustand gelöscht" -#: konova/utils/message_templates.py:33 +#: konova/utils/message_templates.py:37 msgid "State edited" msgstr "Zustand bearbeitet" -#: konova/utils/message_templates.py:34 +#: konova/utils/message_templates.py:38 msgid "State added" msgstr "Zustand hinzugefügt" -#: konova/utils/message_templates.py:37 +#: konova/utils/message_templates.py:41 msgid "Action added" msgstr "Maßnahme hinzugefügt" -#: konova/utils/message_templates.py:38 +#: konova/utils/message_templates.py:42 msgid "Action edited" msgstr "Maßnahme bearbeitet" -#: konova/utils/message_templates.py:39 +#: konova/utils/message_templates.py:43 msgid "Action removed" msgstr "Maßnahme entfernt" -#: konova/utils/message_templates.py:42 +#: konova/utils/message_templates.py:46 msgid "Deduction added" msgstr "Abbuchung hinzugefügt" -#: konova/utils/message_templates.py:43 +#: konova/utils/message_templates.py:47 msgid "Deduction edited" msgstr "Abbuchung bearbeitet" -#: konova/utils/message_templates.py:44 +#: konova/utils/message_templates.py:48 msgid "Deduction removed" msgstr "Abbuchung entfernt" -#: konova/utils/message_templates.py:47 +#: konova/utils/message_templates.py:51 msgid "Deadline added" msgstr "Frist/Termin hinzugefügt" -#: konova/utils/message_templates.py:48 +#: konova/utils/message_templates.py:52 msgid "Deadline edited" msgstr "Frist/Termin bearbeitet" -#: konova/utils/message_templates.py:49 +#: konova/utils/message_templates.py:53 msgid "Deadline removed" msgstr "Frist/Termin gelöscht" -#: konova/utils/message_templates.py:52 +#: konova/utils/message_templates.py:56 msgid "Payment added" msgstr "Zahlung hinzugefügt" -#: konova/utils/message_templates.py:53 +#: konova/utils/message_templates.py:57 msgid "Payment edited" msgstr "Zahlung bearbeitet" -#: konova/utils/message_templates.py:54 +#: konova/utils/message_templates.py:58 msgid "Payment removed" msgstr "Zahlung gelöscht" -#: konova/utils/message_templates.py:57 +#: konova/utils/message_templates.py:61 msgid "Revocation added" msgstr "Widerspruch hinzugefügt" -#: konova/utils/message_templates.py:58 +#: konova/utils/message_templates.py:62 msgid "Revocation edited" msgstr "Widerspruch bearbeitet" -#: konova/utils/message_templates.py:59 +#: konova/utils/message_templates.py:63 msgid "Revocation removed" msgstr "Widerspruch entfernt" -#: konova/utils/message_templates.py:62 +#: konova/utils/message_templates.py:66 msgid "Document '{}' deleted" msgstr "Dokument '{}' gelöscht" -#: konova/utils/message_templates.py:63 +#: konova/utils/message_templates.py:67 msgid "Document added" msgstr "Dokument hinzugefügt" -#: konova/utils/message_templates.py:66 +#: konova/utils/message_templates.py:68 +msgid "Document edited" +msgstr "Dokument bearbeitet" + +#: konova/utils/message_templates.py:71 msgid "Edited general data" msgstr "Allgemeine Daten bearbeitet" -#: konova/utils/message_templates.py:67 +#: konova/utils/message_templates.py:72 msgid "Added deadline" msgstr "Frist/Termin hinzugefügt" -#: konova/utils/message_templates.py:70 +#: konova/utils/message_templates.py:75 msgid "Geometry conflict detected with {}" msgstr "Geometriekonflikt mit folgenden Einträgen erkannt: {}" -#: konova/utils/message_templates.py:73 +#: konova/utils/message_templates.py:78 msgid "This intervention has {} revocations" msgstr "Dem Eingriff liegen {} Widersprüche vor"