From 9cfb400bade51d27b002ee343de22df5faf24260 Mon Sep 17 00:00:00 2001 From: mipel Date: Mon, 4 Oct 2021 09:55:59 +0200 Subject: [PATCH] #7 New Form * adds NewCompensationForm content and functionality * renames CODELIST_COMPENSATION_COMBINATION_ID into CODELIST_COMPENSATION_FUNDING_ID for more clarity * reorganizes compensation forms into compensation/forms/forms.py and forms/modalForms.py * adds new compensation html template in compensation/templates/compensation/new * adds new default message template in message_templates.py: IDENTIFIER_REPLACED * adds/updates translations --- .../management/commands/update_codelist.py | 4 +- codelist/settings.py | 2 +- compensation/comp_urls.py | 1 + compensation/forms/forms.py | 136 ++++++++ .../{forms.py => forms/modalForms.py} | 47 +-- compensation/models.py | 4 +- .../templates/compensation/new/view.html | 16 + compensation/views/compensation_views.py | 64 +++- compensation/views/eco_account_views.py | 2 +- compensation/views/payment_views.py | 2 +- ema/views.py | 2 +- intervention/views.py | 6 +- konova/autocompletes.py | 23 +- konova/urls.py | 6 +- konova/utils/message_templates.py | 1 + locale/de/LC_MESSAGES/django.mo | Bin 20700 -> 21161 bytes locale/de/LC_MESSAGES/django.po | 299 ++++++++++-------- 17 files changed, 441 insertions(+), 174 deletions(-) create mode 100644 compensation/forms/forms.py rename compensation/{forms.py => forms/modalForms.py} (92%) create mode 100644 compensation/templates/compensation/new/view.html diff --git a/codelist/management/commands/update_codelist.py b/codelist/management/commands/update_codelist.py index cd9abe1c..c6205f04 100644 --- a/codelist/management/commands/update_codelist.py +++ b/codelist/management/commands/update_codelist.py @@ -13,7 +13,7 @@ from codelist.models import KonovaCode, KonovaCodeList from codelist.settings import CODELIST_INTERVENTION_HANDLER_ID, CODELIST_CONSERVATION_OFFICE_ID, \ CODELIST_REGISTRATION_OFFICE_ID, CODELIST_BIOTOPES_ID, CODELIST_LAW_ID, CODELIST_COMPENSATION_HANDLER_ID, \ CODELIST_COMPENSATION_ACTION_ID, CODELIST_COMPENSATION_ACTION_CLASS_ID, CODELIST_COMPENSATION_ADDITIONAL_TYPE_ID, \ - CODELIST_COMPENSATION_COMBINATION_ID, CODELIST_BASE_URL, CODELIST_PROCESS_TYPE_ID + CODELIST_COMPENSATION_FUNDING_ID, CODELIST_BASE_URL, CODELIST_PROCESS_TYPE_ID bool_map = { "true": True, @@ -35,7 +35,7 @@ class Command(BaseCommand): CODELIST_COMPENSATION_ACTION_ID, CODELIST_COMPENSATION_ACTION_CLASS_ID, CODELIST_COMPENSATION_ADDITIONAL_TYPE_ID, - CODELIST_COMPENSATION_COMBINATION_ID, + CODELIST_COMPENSATION_FUNDING_ID, CODELIST_PROCESS_TYPE_ID, ] self._write_warning("Fetching codes...") diff --git a/codelist/settings.py b/codelist/settings.py index e2548b41..15c523ac 100644 --- a/codelist/settings.py +++ b/codelist/settings.py @@ -21,4 +21,4 @@ CODELIST_COMPENSATION_HANDLER_ID = 1052 # CLEingreifer CODELIST_COMPENSATION_ACTION_ID = 1026 # CLMassnahmedetail CODELIST_COMPENSATION_ACTION_CLASS_ID = 1034 # CLMassnahmeklasse CODELIST_COMPENSATION_ADDITIONAL_TYPE_ID = 1028 # CLMassnahmetyp, CEF and stuff -CODELIST_COMPENSATION_COMBINATION_ID = 1049 # CLKombimassnahme +CODELIST_COMPENSATION_FUNDING_ID = 1049 # CLKombimassnahme diff --git a/compensation/comp_urls.py b/compensation/comp_urls.py index 84979d89..064570f9 100644 --- a/compensation/comp_urls.py +++ b/compensation/comp_urls.py @@ -12,6 +12,7 @@ urlpatterns = [ # Main compensation path("", index_view, name="index"), path('new', new_view, name='new'), + path('new/id', new_id_view, name='new-id'), path('', open_view, name='open'), path('/log', log_view, name='log'), path('/edit', edit_view, name='edit'), diff --git a/compensation/forms/forms.py b/compensation/forms/forms.py new file mode 100644 index 00000000..6f868bd2 --- /dev/null +++ b/compensation/forms/forms.py @@ -0,0 +1,136 @@ +""" +Author: Michel Peltriaux +Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany +Contact: michel.peltriaux@sgdnord.rlp.de +Created on: 04.12.20 + +""" +from dal import autocomplete +from django.contrib.auth.models import User +from django.db import transaction +from django.urls import reverse_lazy, reverse +from django.utils.translation import gettext_lazy as _ +from django import forms + +from codelist.models import KonovaCode +from codelist.settings import CODELIST_COMPENSATION_FUNDING_ID +from compensation.models import Compensation +from intervention.inputs import GenerateInput +from intervention.models import Intervention +from konova.forms import BaseForm, SimpleGeomForm +from user.models import UserActionLogEntry, UserAction + + +class NewCompensationForm(BaseForm): + identifier = forms.CharField( + label=_("Identifier"), + label_suffix="", + max_length=255, + help_text=_("Generated automatically"), + widget=GenerateInput( + attrs={ + "class": "form-control", + "url": reverse_lazy("compensation:new-id"), + } + ) + ) + title = forms.CharField( + label=_("Title"), + label_suffix="", + help_text=_("An explanatory name"), + max_length=255, + widget=forms.TextInput( + attrs={ + "placeholder": _("Compensation XY; Location ABC"), + "class": "form-control", + } + ) + ) + intervention = forms.ModelChoiceField( + label=_("compensates intervention"), + label_suffix="", + help_text=_("Select the intervention for which this compensation compensates"), + queryset=Intervention.objects.filter( + deleted=None, + ), + widget=autocomplete.ModelSelect2( + url="interventions-autocomplete", + attrs={ + "data-placeholder": _("Intervention"), + "data-minimum-input-length": 3, + } + ), + ) + fundings = forms.ModelMultipleChoiceField( + label=_("Fundings"), + label_suffix="", + required=False, + help_text=_("Select fundings for this compensation"), + queryset=KonovaCode.objects.filter( + is_archived=False, + is_leaf=True, + code_lists__in=[CODELIST_COMPENSATION_FUNDING_ID], + ), + widget=autocomplete.ModelSelect2Multiple( + url="codes-compensation-funding-autocomplete", + attrs={ + "data-placeholder": _("Funding by..."), + } + ), + ) + comment = forms.CharField( + label_suffix="", + label=_("Comment"), + required=False, + help_text=_("Additional comment"), + widget=forms.Textarea( + attrs={ + "rows": 5, + "class": "form-control" + } + ) + ) + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.form_title = _("New compensation") + self.action_url = reverse("compensation:new") + self.cancel_redirect = reverse("compensation:index") + + tmp = Compensation() + identifier = tmp._generate_new_identifier() + self.initialize_form_field("identifier", identifier) + + 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) + fundings = self.cleaned_data.get("fundings", None) + intervention = self.cleaned_data.get("intervention", None) + comment = self.cleaned_data.get("comment", None) + + # Create log entry + action = UserActionLogEntry.objects.create( + user=user, + action=UserAction.CREATED, + ) + # 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, + geometry=geometry, + comment=comment, + ) + comp.fundings.set(fundings) + + # Add the log entry to the main objects log list + comp.log.add(action) + return comp + + diff --git a/compensation/forms.py b/compensation/forms/modalForms.py similarity index 92% rename from compensation/forms.py rename to compensation/forms/modalForms.py index cd13480a..1ae0ad05 100644 --- a/compensation/forms.py +++ b/compensation/forms/modalForms.py @@ -2,7 +2,7 @@ Author: Michel Peltriaux Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany Contact: michel.peltriaux@sgdnord.rlp.de -Created on: 04.12.20 +Created on: 04.10.21 """ from bootstrap_modal_forms.utils import is_ajax @@ -12,34 +12,22 @@ from django.contrib import messages from django.db import transaction from django.http import HttpRequest, HttpResponseRedirect from django.shortcuts import render -from django.utils.translation import gettext_lazy as _ -from django.utils.translation import pgettext_lazy as _con +from django.utils.translation import pgettext_lazy as _con, gettext_lazy as _ from codelist.models import KonovaCode from codelist.settings import CODELIST_BIOTOPES_ID, CODELIST_COMPENSATION_ACTION_ID -from compensation.models import Payment, CompensationState, CompensationAction, UnitChoices +from compensation.models import Payment, CompensationState, UnitChoices, CompensationAction from konova.contexts import BaseContext -from konova.forms import BaseForm, BaseModalForm -from konova.models import Deadline, DeadlineType +from konova.forms import BaseModalForm +from konova.models import DeadlineType, Deadline from konova.utils.message_templates import FORM_INVALID from user.models import UserActionLogEntry, UserAction -class NewCompensationForm(BaseForm): - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - def save(self): - with transaction.atomic(): - user_action = UserActionLogEntry.objects.create( - user=self.user, - action=UserAction.CREATED - ) - # Save action to log - - class NewPaymentForm(BaseModalForm): + """ Form handling payment related input + + """ amount = forms.DecimalField( min_value=0.00, decimal_places=2, @@ -135,6 +123,12 @@ class NewPaymentForm(BaseModalForm): class NewStateModalForm(BaseModalForm): + """ Form handling state related input + + Compensation states refer to 'before' and 'after' states of a compensated surface. Basically it means: + What has been on this area before changes/compensations have been applied and what will be the result ('after')? + + """ biotope_type = forms.ModelChoiceField( label=_("Biotope Type"), label_suffix="", @@ -243,6 +237,9 @@ class NewStateModalForm(BaseModalForm): class NewDeadlineModalForm(BaseModalForm): + """ Form handling deadline related input + + """ type = forms.ChoiceField( label=_("Deadline Type"), label_suffix="", @@ -314,6 +311,13 @@ class NewDeadlineModalForm(BaseModalForm): class NewActionModalForm(BaseModalForm): + """ Form handling action related input + + Compensation actions are the actions performed on the area, which shall be compensated. Actions will change the + surface of the area, the biotopes, and have an environmental impact. With actions the before-after states can change + (not in the process logic in Konova, but in the real world). + + """ action_type = forms.ModelChoiceField( label=_("Action Type"), label_suffix="", @@ -398,5 +402,4 @@ class NewActionModalForm(BaseModalForm): self.instance.save() self.instance.log.add(edited_action) self.instance.actions.add(comp_action) - return comp_action - + return comp_action \ No newline at end of file diff --git a/compensation/models.py b/compensation/models.py index 4ab3f952..d18548cc 100644 --- a/compensation/models.py +++ b/compensation/models.py @@ -16,7 +16,7 @@ from django.utils.translation import gettext_lazy as _ from codelist.models import KonovaCode from codelist.settings import CODELIST_COMPENSATION_ACTION_ID, CODELIST_BIOTOPES_ID, \ - CODELIST_COMPENSATION_COMBINATION_ID + CODELIST_COMPENSATION_FUNDING_ID from intervention.models import Intervention, ResponsibilityData from konova.models import BaseObject, BaseResource, Geometry, UuidModel, AbstractDocument, \ generate_document_file_upload_path @@ -144,7 +144,7 @@ class AbstractCompensation(BaseObject): null=True, blank=True, limit_choices_to={ - "code_lists__in": [CODELIST_COMPENSATION_COMBINATION_ID], + "code_lists__in": [CODELIST_COMPENSATION_FUNDING_ID], "is_selectable": True, "is_archived": False, }, diff --git a/compensation/templates/compensation/new/view.html b/compensation/templates/compensation/new/view.html new file mode 100644 index 00000000..ccd43fe9 --- /dev/null +++ b/compensation/templates/compensation/new/view.html @@ -0,0 +1,16 @@ +{% extends 'base.html' %} +{% load i18n l10n %} + +{% block head %} + {% comment %} + dal documentation (django-autocomplete-light) states using form.media for adding needed scripts. + This does not work properly with modal forms, as the scripts are not loaded properly inside the modal. + Therefore the script linkages from form.media have been extracted and put inside dal/scripts.html to ensure + these scripts are loaded when needed. + {% endcomment %} + {% include 'dal/scripts.html' %} +{% endblock %} + +{% block body %} + {% include 'form/main_data_collapse_form.html' %} +{% endblock %} \ No newline at end of file diff --git a/compensation/views/compensation_views.py b/compensation/views/compensation_views.py index 08091075..126527bc 100644 --- a/compensation/views/compensation_views.py +++ b/compensation/views/compensation_views.py @@ -1,16 +1,18 @@ from django.contrib.auth.decorators import login_required from django.db.models import Sum -from django.http import HttpRequest +from django.http import HttpRequest, JsonResponse from django.shortcuts import render, get_object_or_404 from django.utils.translation import gettext_lazy as _ -from compensation.forms import NewStateModalForm, NewDeadlineModalForm, NewActionModalForm +from compensation.forms.forms import NewCompensationForm +from compensation.forms.modalForms import NewStateModalForm, NewDeadlineModalForm, NewActionModalForm from compensation.models import Compensation, CompensationState, CompensationAction, CompensationDocument from compensation.tables import CompensationTable from konova.contexts import BaseContext from konova.decorators import * from konova.forms import RemoveModalForm, SimpleGeomForm, NewDocumentForm from konova.utils.documents import get_document, remove_document +from konova.utils.message_templates import FORM_INVALID, IDENTIFIER_REPLACED from konova.utils.user_checks import in_group @@ -45,8 +47,62 @@ def index_view(request: HttpRequest): @login_required @default_group_required def new_view(request: HttpRequest): - # ToDo - pass + """ + Renders a view for a new compensation creation + + Args: + request (HttpRequest): The incoming request + + Returns: + + """ + template = "compensation/new/view.html" + data_form = NewCompensationForm(request.POST or None) + geom_form = SimpleGeomForm(request.POST or None, read_only=False) + if request.method == "POST": + if data_form.is_valid() and geom_form.is_valid(): + generated_identifier = data_form.cleaned_data.get("identifier", None) + comp = data_form.save(request.user, geom_form) + if generated_identifier != comp.identifier: + messages.info( + request, + IDENTIFIER_REPLACED.format( + generated_identifier, + comp.identifier + ) + ) + messages.success(request, _("Compensation {} added").format(comp.identifier)) + return redirect("compensation:open", id=comp.id) + else: + messages.error(request, FORM_INVALID) + else: + # For clarification: nothing in this case + pass + context = { + "form": data_form, + "geom_form": geom_form, + "url": reverse("compensation:new-id") + } + context = BaseContext(request, context).context + return render(request, template, context) + + +@login_required +def new_id_view(request: HttpRequest): + """ JSON endpoint + + Provides fetching of free identifiers for e.g. AJAX calls + + """ + tmp = Compensation() + identifier = tmp._generate_new_identifier() + while Compensation.objects.filter(identifier=identifier).exists(): + identifier = tmp._generate_new_identifier() + return JsonResponse( + data={ + "identifier": identifier + } + ) @login_required diff --git a/compensation/views/eco_account_views.py b/compensation/views/eco_account_views.py index 9b008ba3..fb6dcb6c 100644 --- a/compensation/views/eco_account_views.py +++ b/compensation/views/eco_account_views.py @@ -13,7 +13,7 @@ from django.core.exceptions import ObjectDoesNotExist from django.http import HttpRequest, Http404 from django.shortcuts import render, get_object_or_404 -from compensation.forms import NewStateModalForm, NewActionModalForm, NewDeadlineModalForm +from compensation.forms.modalForms import NewStateModalForm, NewActionModalForm, NewDeadlineModalForm from compensation.models import EcoAccount, EcoAccountDocument from compensation.tables import EcoAccountTable from intervention.forms.modalForms import NewDeductionModalForm diff --git a/compensation/views/payment_views.py b/compensation/views/payment_views.py index a5dc7678..8c819fdd 100644 --- a/compensation/views/payment_views.py +++ b/compensation/views/payment_views.py @@ -10,7 +10,7 @@ from django.contrib.auth.decorators import login_required from django.http import HttpRequest from django.shortcuts import get_object_or_404 -from compensation.forms import NewPaymentForm +from compensation.forms.modalForms import NewPaymentForm from compensation.models import Payment from intervention.models import Intervention from konova.decorators import default_group_required diff --git a/ema/views.py b/ema/views.py index 30520ca8..914c4129 100644 --- a/ema/views.py +++ b/ema/views.py @@ -6,7 +6,7 @@ from django.urls import reverse from django.utils.translation import gettext_lazy as _ import compensation -from compensation.forms import NewStateModalForm, NewActionModalForm, NewDeadlineModalForm +from compensation.forms.modalForms import NewStateModalForm, NewActionModalForm, NewDeadlineModalForm from ema.tables import EmaTable from konova.contexts import BaseContext from konova.decorators import conservation_office_group_required diff --git a/intervention/views.py b/intervention/views.py index b7caceb8..588b7773 100644 --- a/intervention/views.py +++ b/intervention/views.py @@ -13,7 +13,7 @@ from konova.decorators import * from konova.forms import SimpleGeomForm, NewDocumentForm, RemoveModalForm, RecordModalForm from konova.sub_settings.django_settings import DEFAULT_DATE_FORMAT from konova.utils.documents import remove_document, get_document -from konova.utils.message_templates import INTERVENTION_INVALID, FORM_INVALID +from konova.utils.message_templates import INTERVENTION_INVALID, FORM_INVALID, IDENTIFIER_REPLACED from konova.utils.user_checks import in_group @@ -68,13 +68,13 @@ def new_view(request: HttpRequest): if generated_identifier != intervention.identifier: messages.info( request, - _("The identifier '{}' had to be changed to '{}' since another entry has been added in the meanwhile, which uses this identifier").format( + IDENTIFIER_REPLACED.format( generated_identifier, intervention.identifier ) ) messages.success(request, _("Intervention {} added").format(intervention.identifier)) - return redirect("intervention:index") + return redirect("intervention:open", id=intervention.id) else: messages.error(request, FORM_INVALID) else: diff --git a/konova/autocompletes.py b/konova/autocompletes.py index 196f78df..7acdca99 100644 --- a/konova/autocompletes.py +++ b/konova/autocompletes.py @@ -10,7 +10,8 @@ from django.db.models import Q from codelist.models import KonovaCode from codelist.settings import CODELIST_COMPENSATION_ACTION_ID, CODELIST_BIOTOPES_ID, CODELIST_LAW_ID, \ - CODELIST_REGISTRATION_OFFICE_ID, CODELIST_CONSERVATION_OFFICE_ID, CODELIST_PROCESS_TYPE_ID + CODELIST_REGISTRATION_OFFICE_ID, CODELIST_CONSERVATION_OFFICE_ID, CODELIST_PROCESS_TYPE_ID, \ + CODELIST_COMPENSATION_FUNDING_ID from compensation.models import EcoAccount from intervention.models import Intervention from organisation.models import Organisation @@ -45,12 +46,18 @@ class NonOfficialOrganisationAutocomplete(Select2QuerySetView): class EcoAccountAutocomplete(Select2QuerySetView): + """ Autocomplete for ecoAccount entries + + Only returns entries that are accessible for the requesting user and already are recorded + + """ def get_queryset(self): if self.request.user.is_anonymous: return EcoAccount.objects.none() qs = EcoAccount.objects.filter( deleted=None, recorded__isnull=False, + users__in=[self.request.user], ) if self.q: qs = qs.filter( @@ -63,6 +70,11 @@ class EcoAccountAutocomplete(Select2QuerySetView): class InterventionAutocomplete(Select2QuerySetView): + """ Autocomplete for intervention entries + + Only returns entries that are accessible for the requesting user + + """ def get_queryset(self): if self.request.user.is_anonymous: return Intervention.objects.none() @@ -128,6 +140,15 @@ class CompensationActionCodeAutocomplete(KonovaCodeAutocomplete): super().__init__(*args, **kwargs) +class CompensationFundingCodeAutocomplete(KonovaCodeAutocomplete): + """ + Due to limitations of the django dal package, we need to subclass for each code list + """ + def __init__(self, *args, **kwargs): + self.c = CODELIST_COMPENSATION_FUNDING_ID + super().__init__(*args, **kwargs) + + class BiotopeCodeAutocomplete(KonovaCodeAutocomplete): """ Due to limitations of the django dal package, we need to subclass for each code list diff --git a/konova/urls.py b/konova/urls.py index 46b48e54..0c2bef21 100644 --- a/konova/urls.py +++ b/konova/urls.py @@ -19,7 +19,8 @@ from django.urls import path, include from konova.autocompletes import OrganisationAutocomplete, NonOfficialOrganisationAutocomplete, EcoAccountAutocomplete, \ InterventionAutocomplete, CompensationActionCodeAutocomplete, BiotopeCodeAutocomplete, LawCodeAutocomplete, \ - RegistrationOfficeCodeAutocomplete, ConservationOfficeCodeAutocomplete, ProcessTypeCodeAutocomplete + RegistrationOfficeCodeAutocomplete, ConservationOfficeCodeAutocomplete, ProcessTypeCodeAutocomplete, \ + CompensationFundingCodeAutocomplete from konova.settings import SSO_SERVER, SSO_PUBLIC_KEY, SSO_PRIVATE_KEY, DEBUG from konova.sso.sso import KonovaSSOClient from konova.views import logout_view, home_view, remove_deadline_view @@ -46,7 +47,8 @@ urlpatterns = [ path("atcmplt/orgs/other", NonOfficialOrganisationAutocomplete.as_view(), name="other-orgs-autocomplete"), path("atcmplt/eco-accounts", EcoAccountAutocomplete.as_view(), name="accounts-autocomplete"), path("atcmplt/interventions", InterventionAutocomplete.as_view(), name="interventions-autocomplete"), - path("atcmplt/codes/compensation-action", CompensationActionCodeAutocomplete.as_view(), name="codes-compensation-action-autocomplete"), + path("atcmplt/codes/comp/action", CompensationActionCodeAutocomplete.as_view(), name="codes-compensation-action-autocomplete"), + path("atcmplt/codes/comp/funding", CompensationFundingCodeAutocomplete.as_view(), name="codes-compensation-funding-autocomplete"), path("atcmplt/codes/biotope", BiotopeCodeAutocomplete.as_view(), name="codes-biotope-autocomplete"), path("atcmplt/codes/law", LawCodeAutocomplete.as_view(), name="codes-law-autocomplete"), path("atcmplt/codes/prc-type", ProcessTypeCodeAutocomplete.as_view(), name="codes-process-type-autocomplete"), diff --git a/konova/utils/message_templates.py b/konova/utils/message_templates.py index 109d7c83..8cc28004 100644 --- a/konova/utils/message_templates.py +++ b/konova/utils/message_templates.py @@ -10,3 +10,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.") +IDENTIFIER_REPLACED = _("The identifier '{}' had to be changed to '{}' since another entry has been added in the meanwhile, which uses this identifier") diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo index 792ec772246b425b4b96568d2fa01e9fdc65d0ff..ba68874c28964ee05be11c58683726561c876db0 100644 GIT binary patch delta 6748 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 ah1+%GAg&4S3a_WM)a&w8c-Phq3;7S`z5HMR delta 6385 zcmYk=30PKD9>?+XvV$NBhzQ0afvBjskce8~8iFaMR_Z}4>i&hOj@P0F+HC8) zt%os$_S2{dT|`az7ffb+Y_u%|i{e0=4p2Q1`uK>qk%% z{RZ{i6;x(^MP<}C*110tZ;Z zi%R`P)aw+U4QgT=QHOAwr_TN#px{HpQB-P= zqdKTV9g=IP4*Zjy2P04^OhRR11nT~&s0__T9ljN)0XLvBwFR}c2T`y47Z}C(=Bm9R zn3JXnBw{*t!&W#2H9)zoSD-)jPth08*!s8VnK&vl*N|_H2~Tkrl7`B37V2>4pxcka z5DHr12vi3}wqA_-eLm`e=P>|Rq3&OYTJdJonK^)3*-6w&uV5T{u?ps5THspjkLtIs z75lHf_=yG$>}qXH8w^Et&<(W(1FfS`seKGJ;1j5cl%hYrg#4W{uc7*V7lW_{)z6o< z{W9wL>#fN@+iOA?Rj0EP24Y{-nHYqg45218!a5lnP@j+5+fvllZA49=8hhYr)WDIc z#`MEv48TdKtt)m@&R1~v0!?CD}~tfgMuk!;|Q zPW)xW8^~wg>|u5(Sc{F(k9S%Ni$e92fRTFt+f&fq_q9Jfh?+dUqYwem{TN{-p~ zI;#)qQF|Qfz6{g^hN2GTER4ib)a$tso8W$Q>r{VEL5Jsi)B~oA^BP8>4qIZZ5{gt6-Ak^8|Z#`l?h05^PUC6%<*L4~qu|DuCPz-9J3AR1MO+g)Gqf$B?mBL5u z4f=gB^#%AM)}lI?+08jKi&2MaowWj$nM&(k+x{VHp*5(Cd}n`m-=LtB`FD3x9)`Z0 z?hMol@9g0`kc+x+ENXy>*a~MNFM?TzI>aZi5HFzaA8@C$pa<|a>Jw3K)pN-2ZnKgC zSu^WV9iKtX@B%7j*HN#F>n_i^G@+=y?1$R>p|)O#dTu7FpGBxGTZ!stE$T3D!27TQ zbM^k;pr9LbvN&*6h-@e2iKq#rqTZe!sIzh}YKtC4O=KP_GmES* zTPx9z@y$UB+MA=O!*d?Brm;#SJ(7Gt#CSOA|)7u%TWDp zK`o%tx*y%zqhl15;xqP#I$Qq@HK1QF=a7b>XT_*P+QZiKQ7ayYcVh`^#RsgXP-C9yMh#M!6`ZNV(8Mx|UgDT6_% ztqn(QQ4A{6X&8%l_a*;&?+aTtb^TG=jCW{#qsKW*!mQ7Qfv z!=A-+WH5m6d%K2{2YVu zJZeHeB7Y9dHPq|XaiBASL6|~)3i5R~YcLriM^&#t)#=omA%# zFWDdO!E?l9LWfFkhOXg+i~DaQc6eGi(bgukY5SCF{Xx6+%Algdt!>h!^P}s6*1v#A zBeoKI30*gd2Z#oAdI#nb>j^LFgHa!;`YV_=odaEOJ9s|B|DyafaWC;5ahw=I{6efI zUM1Y~`DX*6>sJR8O@}=w^Xhv(tG3xgAirIrq>t01giiQbVmk3UF_V}@%p>{|7m40P zB+u=^MyTr}!td7oe~N}eLI+BxUDrfH|1na3EuygBR!*Q7vCr0Hx$i++ZjN#Gxiyr3 zBC3d!LX!jO~eu( z5{bmWiGjrT#84uP_=NaO`>$)agXiBy{5#s#tFg5$r(!drfM{deZsi#&Z`g+Ac#w#( zSx|HME#+0zUnbn=^$S-+`(tOyONqY`*NKtDSHu`Xe>&^0u@sIGHwbT@onU|X&3YfU zwPkUL=uX^D+)wELDRVjN-%cry*rg_}NTQVZhN!a`#9g*N0QFV-2hoA} zFL8!w>#b|te;a(%6i83O@K9EAWg7^(g}!A4u@P0Ju`l>kwNL!R6_PV)=Gciv z562fxnml8ARZ3E{tLnbw-+jxbrsh@MObrPsOUi6gb$@2QU)AocJG>hADVkI`cHH>* mg7Fh3j-NVVY(bf;SCcC5UWu-%jNUc=W$p4Zt2X7`^!-0(gpTw8 diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po index fb50ced8..b04a57bd 100644 --- a/locale/de/LC_MESSAGES/django.po +++ b/locale/de/LC_MESSAGES/django.po @@ -3,22 +3,23 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # -#: compensation/filters.py:71 compensation/forms.py:47 compensation/forms.py:57 -#: compensation/forms.py:73 compensation/forms.py:276 compensation/forms.py:363 +#: compensation/filters.py:71 compensation/forms/modalForms.py:35 +#: compensation/forms/modalForms.py:45 compensation/forms/modalForms.py:61 +#: compensation/forms/modalForms.py:273 compensation/forms/modalForms.py:367 #: intervention/filters.py:26 intervention/filters.py:40 #: intervention/filters.py:47 intervention/filters.py:48 #: intervention/forms/forms.py:53 intervention/forms/forms.py:151 #: intervention/forms/forms.py:163 intervention/forms/modalForms.py:107 #: intervention/forms/modalForms.py:120 intervention/forms/modalForms.py:133 -#: konova/forms.py:140 konova/forms.py:244 konova/forms.py:294 -#: konova/forms.py:321 konova/forms.py:331 konova/forms.py:344 -#: konova/forms.py:356 konova/forms.py:377 user/forms.py:38 +#: konova/forms.py:140 konova/forms.py:244 konova/forms.py:293 +#: konova/forms.py:320 konova/forms.py:330 konova/forms.py:343 +#: konova/forms.py:355 konova/forms.py:376 user/forms.py:38 #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-09-27 13:56+0200\n" +"POT-Creation-Date: 2021-10-04 09:54+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -32,20 +33,70 @@ msgstr "" msgid "Show only unrecorded" msgstr "Nur unverzeichnete anzeigen" -#: compensation/forms.py:48 -msgid "in Euro" -msgstr "in Euro" +#: compensation/forms/forms.py:26 compensation/tables.py:25 +#: compensation/tables.py:167 ema/tables.py:28 intervention/forms/forms.py:27 +#: intervention/tables.py:23 +#: intervention/templates/intervention/detail/includes/compensations.html:30 +msgid "Identifier" +msgstr "Kennung" -#: compensation/forms.py:56 -#: intervention/templates/intervention/detail/includes/payments.html:31 -msgid "Due on" -msgstr "Fällig am" +#: compensation/forms/forms.py:29 intervention/forms/forms.py:30 +msgid "Generated automatically" +msgstr "Automatisch generiert" -#: compensation/forms.py:59 -msgid "Due on which date" -msgstr "Zahlung wird an diesem Datum erwartet" +#: compensation/forms/forms.py:38 compensation/tables.py:30 +#: compensation/tables.py:172 +#: compensation/templates/compensation/detail/compensation/includes/documents.html:28 +#: compensation/templates/compensation/detail/compensation/view.html:31 +#: compensation/templates/compensation/detail/eco_account/includes/documents.html:28 +#: compensation/templates/compensation/detail/eco_account/view.html:31 +#: ema/tables.py:33 ema/templates/ema/detail/includes/documents.html:28 +#: ema/templates/ema/detail/view.html:24 intervention/forms/forms.py:39 +#: 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:31 konova/forms.py:319 +msgid "Title" +msgstr "Bezeichnung" -#: compensation/forms.py:72 compensation/forms.py:275 compensation/forms.py:362 +#: compensation/forms/forms.py:40 intervention/forms/forms.py:41 +msgid "An explanatory name" +msgstr "Aussagekräftiger Titel" + +#: compensation/forms/forms.py:44 +msgid "Compensation XY; Location ABC" +msgstr "Kompensation XY; Flur ABC" + +#: compensation/forms/forms.py:50 +#: compensation/templates/compensation/detail/compensation/view.html:35 +msgid "compensates intervention" +msgstr "kompensiert Eingriff" + +#: compensation/forms/forms.py:52 +msgid "Select the intervention for which this compensation compensates" +msgstr "Wählen Sie den Eingriff, für den diese Kompensation bestimmt ist" + +#: compensation/forms/forms.py:59 intervention/forms/modalForms.py:284 +#: intervention/forms/modalForms.py:291 intervention/tables.py:88 +#: intervention/templates/intervention/detail/view.html:19 +#: konova/templates/konova/home.html:11 templates/navbar.html:22 +msgid "Intervention" +msgstr "Eingriff" + +#: compensation/forms/forms.py:65 +msgid "Fundings" +msgstr "" + +#: compensation/forms/forms.py:68 +msgid "Select fundings for this compensation" +msgstr "Wählen Sie ggf. Fördermittelprojekte" + +#: compensation/forms/forms.py:77 +msgid "Funding by..." +msgstr "Gefördert mit..." + +#: compensation/forms/forms.py:83 compensation/forms/modalForms.py:60 +#: compensation/forms/modalForms.py:272 compensation/forms/modalForms.py:366 #: 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 @@ -56,43 +107,66 @@ msgstr "Zahlung wird an diesem Datum erwartet" #: ema/templates/ema/detail/includes/deadlines.html:34 #: ema/templates/ema/detail/includes/documents.html:31 #: intervention/forms/forms.py:175 intervention/forms/modalForms.py:132 +#: intervention/templates/intervention/detail/includes/comment.html:10 #: intervention/templates/intervention/detail/includes/documents.html:31 #: intervention/templates/intervention/detail/includes/payments.html:34 #: intervention/templates/intervention/detail/includes/revocation.html:38 -#: konova/forms.py:355 +#: konova/forms.py:354 msgid "Comment" msgstr "Kommentar" -#: compensation/forms.py:74 compensation/forms.py:277 compensation/forms.py:364 -#: intervention/forms/modalForms.py:134 konova/forms.py:357 +#: compensation/forms/forms.py:85 intervention/forms/forms.py:177 +msgid "Additional comment" +msgstr "Zusätzlicher Kommentar" + +#: compensation/forms/forms.py:96 +msgid "New compensation" +msgstr "Neue Kompensation" + +#: compensation/forms/modalForms.py:36 +msgid "in Euro" +msgstr "in Euro" + +#: compensation/forms/modalForms.py:44 +#: intervention/templates/intervention/detail/includes/payments.html:31 +msgid "Due on" +msgstr "Fällig am" + +#: compensation/forms/modalForms.py:47 +msgid "Due on which date" +msgstr "Zahlung wird an diesem Datum erwartet" + +#: compensation/forms/modalForms.py:62 compensation/forms/modalForms.py:274 +#: compensation/forms/modalForms.py:368 intervention/forms/modalForms.py:134 +#: konova/forms.py:356 msgid "Additional comment, maximum {} letters" msgstr "Zusätzlicher Kommentar, maximal {} Zeichen" -#: compensation/forms.py:86 +#: compensation/forms/modalForms.py:74 msgid "Payment" msgstr "Zahlung" -#: compensation/forms.py:87 +#: compensation/forms/modalForms.py:75 msgid "Add a payment for intervention '{}'" msgstr "Neue Ersatzzahlung zu Eingriff '{}' hinzufügen" -#: compensation/forms.py:108 +#: compensation/forms/modalForms.py:96 msgid "If there is no date you can enter, please explain why." msgstr "Falls Sie kein Datum angeben können, erklären Sie bitte weshalb." -#: compensation/forms.py:122 +#: compensation/forms/modalForms.py:110 msgid "Added payment" msgstr "Zahlung hinzufügen" -#: compensation/forms.py:139 compensation/forms.py:151 +#: compensation/forms/modalForms.py:133 compensation/forms/modalForms.py:145 msgid "Biotope Type" msgstr "Biotoptyp" -#: compensation/forms.py:142 +#: compensation/forms/modalForms.py:136 msgid "Select the biotope type" msgstr "Biotoptyp wählen" -#: compensation/forms.py:158 +#: compensation/forms/modalForms.py:152 #: compensation/templates/compensation/detail/compensation/includes/states-after.html:36 #: compensation/templates/compensation/detail/compensation/includes/states-before.html:36 #: compensation/templates/compensation/detail/eco_account/includes/states-after.html:36 @@ -103,35 +177,35 @@ msgstr "Biotoptyp wählen" msgid "Surface" msgstr "Fläche" -#: compensation/forms.py:161 intervention/forms/modalForms.py:276 +#: compensation/forms/modalForms.py:155 intervention/forms/modalForms.py:276 msgid "in m²" msgstr "" -#: compensation/forms.py:171 +#: compensation/forms/modalForms.py:165 msgid "New state" msgstr "Neuer Zustand" -#: compensation/forms.py:172 +#: compensation/forms/modalForms.py:166 msgid "Insert data for the new state" msgstr "Geben Sie die Daten des neuen Zustandes ein" -#: compensation/forms.py:180 +#: compensation/forms/modalForms.py:174 msgid "Added state" msgstr "Zustand hinzugefügt" -#: compensation/forms.py:196 konova/forms.py:193 +#: compensation/forms/modalForms.py:190 konova/forms.py:193 msgid "Object removed" msgstr "Objekt entfernt" -#: compensation/forms.py:247 +#: compensation/forms/modalForms.py:244 msgid "Deadline Type" msgstr "Fristart" -#: compensation/forms.py:250 +#: compensation/forms/modalForms.py:247 msgid "Select the deadline type" msgstr "Fristart wählen" -#: compensation/forms.py:259 +#: compensation/forms/modalForms.py:256 #: 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 @@ -139,31 +213,31 @@ msgstr "Fristart wählen" msgid "Date" msgstr "Datum" -#: compensation/forms.py:262 +#: compensation/forms/modalForms.py:259 msgid "Select date" msgstr "Datum wählen" -#: compensation/forms.py:289 +#: compensation/forms/modalForms.py:286 msgid "New deadline" msgstr "Neue Frist" -#: compensation/forms.py:290 +#: compensation/forms/modalForms.py:287 msgid "Insert data for the new deadline" msgstr "Geben Sie die Daten der neuen Frist ein" -#: compensation/forms.py:307 +#: compensation/forms/modalForms.py:304 msgid "Added deadline" msgstr "Frist/Termin hinzugefügt" -#: compensation/forms.py:318 +#: compensation/forms/modalForms.py:322 msgid "Action Type" msgstr "Maßnahmentyp" -#: compensation/forms.py:321 +#: compensation/forms/modalForms.py:325 msgid "Select the action type" msgstr "Maßnahmentyp wählen" -#: compensation/forms.py:330 +#: compensation/forms/modalForms.py:334 #: compensation/templates/compensation/detail/compensation/includes/actions.html:37 #: compensation/templates/compensation/detail/compensation/includes/deadlines.html:37 #: compensation/templates/compensation/detail/compensation/includes/documents.html:34 @@ -189,33 +263,33 @@ msgstr "Maßnahmentyp wählen" msgid "Action" msgstr "Aktionen" -#: compensation/forms.py:335 +#: compensation/forms/modalForms.py:339 msgid "Unit" msgstr "Einheit" -#: compensation/forms.py:338 +#: compensation/forms/modalForms.py:342 msgid "Select the unit" msgstr "Einheit wählen" -#: compensation/forms.py:347 +#: compensation/forms/modalForms.py:351 #: compensation/templates/compensation/detail/eco_account/includes/deductions.html:34 #: intervention/templates/intervention/detail/includes/deductions.html:31 msgid "Amount" msgstr "Menge" -#: compensation/forms.py:350 +#: compensation/forms/modalForms.py:354 msgid "Insert the amount" msgstr "Menge eingeben" -#: compensation/forms.py:375 +#: compensation/forms/modalForms.py:379 msgid "New action" msgstr "Neue Maßnahme" -#: compensation/forms.py:376 +#: compensation/forms/modalForms.py:380 msgid "Insert data for the new action" msgstr "Geben Sie die Daten der neuen Maßnahme ein" -#: compensation/forms.py:395 +#: compensation/forms/modalForms.py:399 msgid "Added action" msgstr "Maßnahme hinzugefügt" @@ -258,26 +332,6 @@ msgstr "" "Es wurde bereits mehr Fläche abgebucht, als Sie nun als abbuchbar einstellen " "wollen. Kontaktieren Sie die für die Abbuchungen verantwortlichen Nutzer!" -#: compensation/tables.py:25 compensation/tables.py:167 ema/tables.py:28 -#: intervention/forms/forms.py:27 intervention/tables.py:23 -#: intervention/templates/intervention/detail/includes/compensations.html:30 -msgid "Identifier" -msgstr "Kennung" - -#: compensation/tables.py:30 compensation/tables.py:172 -#: compensation/templates/compensation/detail/compensation/includes/documents.html:28 -#: compensation/templates/compensation/detail/compensation/view.html:31 -#: compensation/templates/compensation/detail/eco_account/includes/documents.html:28 -#: compensation/templates/compensation/detail/eco_account/view.html:31 -#: ema/tables.py:33 ema/templates/ema/detail/includes/documents.html:28 -#: ema/templates/ema/detail/view.html:24 intervention/forms/forms.py:39 -#: 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:31 konova/forms.py:320 -msgid "Title" -msgstr "Bezeichnung" - #: compensation/tables.py:35 #: compensation/templates/compensation/detail/compensation/view.html:43 #: intervention/tables.py:33 @@ -478,7 +532,7 @@ 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:376 +#: konova/forms.py:375 msgid "Add new document" msgstr "Neues Dokument hinzufügen" @@ -543,10 +597,6 @@ msgstr "Neuen Ausgangszustand hinzufügen" msgid "Missing surfaces according to states after: " msgstr "Fehlende Flächenmengen laut Zielzustand: " -#: compensation/templates/compensation/detail/compensation/view.html:35 -msgid "compensates intervention" -msgstr "kompensiert Eingriff" - #: compensation/templates/compensation/detail/compensation/view.html:50 #: intervention/templates/intervention/detail/view.html:75 msgid "Checked on " @@ -666,42 +716,46 @@ msgstr "Eingriffsverursacher" msgid "None" msgstr "" -#: compensation/views/compensation_views.py:123 +#: compensation/views/compensation_views.py:74 +msgid "Compensation {} added" +msgstr "Kompensation {} hinzugefügt" + +#: compensation/views/compensation_views.py:179 #: compensation/views/eco_account_views.py:190 ema/views.py:128 #: intervention/views.py:428 msgid "Log" msgstr "Log" -#: compensation/views/compensation_views.py:144 +#: compensation/views/compensation_views.py:200 msgid "Compensation removed" msgstr "Kompensation entfernt" -#: compensation/views/compensation_views.py:163 +#: compensation/views/compensation_views.py:219 #: compensation/views/eco_account_views.py:289 ema/views.py:250 #: intervention/views.py:124 msgid "Document added" msgstr "Dokument hinzugefügt" -#: compensation/views/compensation_views.py:219 +#: compensation/views/compensation_views.py:275 #: compensation/views/eco_account_views.py:233 ema/views.py:194 msgid "State added" msgstr "Zustand hinzugefügt" -#: compensation/views/compensation_views.py:238 +#: compensation/views/compensation_views.py:294 #: compensation/views/eco_account_views.py:252 ema/views.py:213 msgid "Action added" msgstr "Maßnahme hinzugefügt" -#: compensation/views/compensation_views.py:257 +#: compensation/views/compensation_views.py:313 #: compensation/views/eco_account_views.py:271 ema/views.py:232 msgid "Deadline added" msgstr "Frist/Termin hinzugefügt" -#: compensation/views/compensation_views.py:276 +#: compensation/views/compensation_views.py:332 msgid "State removed" msgstr "Zustand gelöscht" -#: compensation/views/compensation_views.py:295 +#: compensation/views/compensation_views.py:351 msgid "Action removed" msgstr "Maßnahme entfernt" @@ -775,14 +829,6 @@ msgstr "Gemarkung" msgid "Search for district" msgstr "Nach Gemarkung suchen" -#: intervention/forms/forms.py:30 -msgid "Generated automatically" -msgstr "Automatisch generiert" - -#: intervention/forms/forms.py:41 -msgid "An explanatory name" -msgstr "Aussagekräftiger Titel" - #: intervention/forms/forms.py:45 msgid "Construction XY; Location ABC" msgstr "Bauvorhaben XY; Flur ABC" @@ -837,10 +883,6 @@ msgstr "Datum Zulassung bzw. Satzungsbeschluss" msgid "Binding on" msgstr "Datum Bestandskraft" -#: intervention/forms/forms.py:177 -msgid "Additional comment" -msgstr "Zusätzlicher Kommentar" - #: intervention/forms/forms.py:188 msgid "New intervention" msgstr "Neuer Eingriff" @@ -879,7 +921,7 @@ msgstr "Datum des Widerspruchs" msgid "Document" msgstr "Dokument" -#: intervention/forms/modalForms.py:122 konova/forms.py:345 +#: intervention/forms/modalForms.py:122 konova/forms.py:344 msgid "Must be smaller than 15 Mb" msgstr "Muss kleiner als 15 Mb sein" @@ -901,7 +943,7 @@ msgstr "Kompensationen und Zahlungen geprüft" msgid "Run check" msgstr "Prüfung vornehmen" -#: intervention/forms/modalForms.py:201 konova/forms.py:430 +#: intervention/forms/modalForms.py:201 konova/forms.py:429 msgid "" "I, {} {}, confirm that all necessary control steps have been performed by " "myself." @@ -913,13 +955,6 @@ msgstr "" msgid "Only recorded accounts can be selected for deductions" msgstr "Nur verzeichnete Ökokonten können für Abbuchungen verwendet werden." -#: intervention/forms/modalForms.py:284 intervention/forms/modalForms.py:291 -#: intervention/tables.py:88 -#: intervention/templates/intervention/detail/view.html:19 -#: konova/templates/konova/home.html:11 templates/navbar.html:22 -msgid "Intervention" -msgstr "Eingriff" - #: intervention/forms/modalForms.py:286 msgid "Only shared interventions can be selected" msgstr "Nur freigegebene Eingriffe können gewählt werden" @@ -1045,22 +1080,10 @@ msgstr "Widerspruch entfernen" msgid "Exists" msgstr "vorhanden" -#: intervention/views.py:71 -msgid "" -"The identifier '{}' had to be changed to '{}' since another entry has been " -"added in the meanwhile, which uses this identifier" -msgstr "" -"Die Kennung '{}' musste zu '{}' geändert werden, da ein anderer Eintrag in " -"der Zwischenzeit angelegt wurde, welcher diese Kennung nun bereits verwendet" - #: intervention/views.py:76 msgid "Intervention {} added" msgstr "Eingriff {} hinzugefügt" -#: intervention/views.py:79 intervention/views.py:258 -msgid "Invalid input" -msgstr "Eingabe fehlerhaft" - #: intervention/views.py:212 msgid "This intervention has a revocation from {}" msgstr "Es existiert ein Widerspruch vom {}" @@ -1140,11 +1163,11 @@ msgstr "Hierfür müssen Sie einer anderen Nutzergruppe angehören!" msgid "Not editable" msgstr "Nicht editierbar" -#: konova/forms.py:139 konova/forms.py:293 +#: konova/forms.py:139 konova/forms.py:292 msgid "Confirm" msgstr "Bestätige" -#: konova/forms.py:151 konova/forms.py:302 +#: konova/forms.py:151 konova/forms.py:301 msgid "Remove" msgstr "Löschen" @@ -1152,48 +1175,48 @@ msgstr "Löschen" msgid "You are about to remove {} {}" msgstr "Sie sind dabei {} {} zu löschen" -#: konova/forms.py:243 templates/form/main_data_collapse_form.html:47 +#: konova/forms.py:243 templates/form/main_data_collapse_form.html:45 msgid "Geometry" msgstr "Geometrie" -#: konova/forms.py:303 +#: konova/forms.py:302 msgid "Are you sure?" msgstr "Sind Sie sicher?" -#: konova/forms.py:330 +#: konova/forms.py:329 msgid "Created on" msgstr "Erstellt" -#: konova/forms.py:332 +#: konova/forms.py:331 msgid "When has this file been created? Important for photos." msgstr "Wann wurde diese Datei erstellt oder das Foto aufgenommen?" -#: konova/forms.py:343 +#: konova/forms.py:342 #: venv/lib/python3.7/site-packages/django/db/models/fields/files.py:231 msgid "File" msgstr "Datei" -#: konova/forms.py:407 +#: konova/forms.py:406 msgid "Added document" msgstr "Dokument hinzugefügt" -#: konova/forms.py:421 +#: konova/forms.py:420 msgid "Confirm record" msgstr "Verzeichnen bestätigen" -#: konova/forms.py:429 +#: konova/forms.py:428 msgid "Record data" msgstr "Daten verzeichnen" -#: konova/forms.py:436 +#: konova/forms.py:435 msgid "Confirm unrecord" msgstr "Entzeichnen bestätigen" -#: konova/forms.py:437 +#: konova/forms.py:436 msgid "Unrecord data" msgstr "Daten entzeichnen" -#: konova/forms.py:438 +#: konova/forms.py:437 msgid "I, {} {}, confirm that this data must be unrecorded." msgstr "" "Ich, {} {}, bestätige, dass diese Daten wieder entzeichnet werden müssen." @@ -1286,6 +1309,14 @@ msgstr "Es gab einen Fehler im Formular." msgid "There are errors in this intervention." msgstr "Es liegen Fehler in diesem Eingriff vor:" +#: konova/utils/message_templates.py:13 +msgid "" +"The identifier '{}' had to be changed to '{}' since another entry has been " +"added in the meanwhile, which uses this identifier" +msgstr "" +"Die Kennung '{}' musste zu '{}' geändert werden, da ein anderer Eintrag in " +"der Zwischenzeit angelegt wurde, welcher diese Kennung nun bereits verwendet" + #: konova/utils/messenger.py:69 msgid "{} checked" msgstr "{} geprüft" @@ -1343,12 +1374,12 @@ msgid "Contact" msgstr "Kontakt" #: templates/form/generic_table_form.html:23 -#: templates/form/main_data_collapse_form.html:61 +#: templates/form/main_data_collapse_form.html:58 msgid "Cancel" msgstr "Abbrechen" #: templates/form/generic_table_form.html:27 -#: templates/form/main_data_collapse_form.html:65 +#: templates/form/main_data_collapse_form.html:62 msgid "Save" msgstr "Speichern" @@ -1421,7 +1452,7 @@ msgstr "Zeitpunkt" msgid "User" msgstr "Nutzer" -#: templates/map/geom_form.html:9 +#: templates/map/geom_form.html:8 msgid "No geometry added, yet." msgstr "Keine Geometrie vorhanden" @@ -2737,6 +2768,9 @@ msgstr "" msgid "A fontawesome icon field" msgstr "" +#~ msgid "Invalid input" +#~ msgstr "Eingabe fehlerhaft" + #~ msgid "{} edited" #~ msgstr "{} bearbeitet" @@ -2845,9 +2879,6 @@ msgstr "" #~ msgid "Show intervention" #~ msgstr "Zeige Eingriffe" -#~ msgid "Show compensation" -#~ msgstr "Zeige Kompensationen" - #~ msgid "Eco-account management" #~ msgstr "Ökokontoverwaltung"