* adds EditEcoAccountForm
* adds placeholders for some form fields
* changes comment card in detail view into rlp-grayish
* adds eco account detail view comment box
* removes unnecessary loading of dal scripts in view.html
* refactors generated identifier for data objects (10 digits to 6 uppercase letter-digit combination)
* improves generate_random_string() method by adding more options for generation of strings
* adds/updates translations
This commit is contained in:
mipel 2021-10-06 13:10:10 +02:00
parent d84fe68120
commit 60f03591ef
20 changed files with 305 additions and 166 deletions

View File

@ -64,7 +64,7 @@ class AbstractCompensationForm(BaseForm):
widget=autocomplete.ModelSelect2Multiple(
url="codes-compensation-funding-autocomplete",
attrs={
"data-placeholder": _("Funding by..."),
"data-placeholder": _("Click for selection"),
}
),
)
@ -101,7 +101,7 @@ class NewCompensationForm(AbstractCompensationForm):
widget=autocomplete.ModelSelect2(
url="interventions-autocomplete",
attrs={
"data-placeholder": _("Intervention"),
"data-placeholder": _("Click for selection"),
"data-minimum-input-length": 3,
}
),
@ -236,6 +236,7 @@ class NewEcoAccountForm(AbstractCompensationForm):
widget=autocomplete.ModelSelect2(
url="codes-conservation-office-autocomplete",
attrs={
"data-placeholder": _("Click for selection")
}
),
)
@ -264,23 +265,10 @@ class NewEcoAccountForm(AbstractCompensationForm):
}
)
)
surface = forms.DecimalField(
min_value=0.00,
decimal_places=2,
label=_("Available Surface"),
label_suffix="",
help_text=_("The amount that can be used for deductions"),
widget=forms.NumberInput(
attrs={
"class": "form-control",
}
)
)
field_order = [
"identifier",
"title",
"conservation_office",
"surface",
"conservation_file_number",
"handler",
"fundings",
@ -307,7 +295,6 @@ class NewEcoAccountForm(AbstractCompensationForm):
title = self.cleaned_data.get("title", None)
fundings = self.cleaned_data.get("fundings", None)
handler = self.cleaned_data.get("handler", None)
deductable_surface = self.cleaned_data.get("surface", None)
conservation_office = self.cleaned_data.get("conservation_office", None)
conservation_file_number = self.cleaned_data.get("conservation_file_number", None)
comment = self.cleaned_data.get("comment", None)
@ -331,7 +318,7 @@ class NewEcoAccountForm(AbstractCompensationForm):
identifier=identifier,
title=title,
responsible=responsible,
deductable_surface=deductable_surface,
deductable_surface=0.00,
created=action,
geometry=geometry,
comment=comment,
@ -342,3 +329,93 @@ class NewEcoAccountForm(AbstractCompensationForm):
# Add the log entry to the main objects log list
acc.log.add(action)
return acc
class EditEcoAccountForm(NewEcoAccountForm):
surface = forms.DecimalField(
min_value=0.00,
decimal_places=2,
label=_("Available Surface"),
label_suffix="",
required=False,
help_text=_("The amount that can be used for deductions"),
widget=forms.NumberInput(
attrs={
"class": "form-control",
"placeholder": "0,00"
}
)
)
field_order = [
"identifier",
"title",
"conservation_office",
"surface",
"conservation_file_number",
"handler",
"fundings",
"comment",
]
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.form_title = _("Edit Eco-Account")
self.action_url = reverse("compensation:acc-edit", args=(self.instance.id,))
self.cancel_redirect = reverse("compensation:acc-open", args=(self.instance.id,))
# Initialize form data
form_data = {
"identifier": self.instance.identifier,
"title": self.instance.title,
"surface": self.instance.deductable_surface,
"handler": self.instance.responsible.handler,
"conservation_office": self.instance.responsible.conservation_office,
"conservation_file_number": self.instance.responsible.conservation_file_number,
"fundings": self.instance.fundings.all(),
"comment": self.instance.comment,
}
disabled_fields = []
self.load_initial_data(
form_data,
disabled_fields
)
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)
handler = self.cleaned_data.get("handler", None)
surface = self.cleaned_data.get("surface", None)
conservation_office = self.cleaned_data.get("conservation_office", None)
conservation_file_number = self.cleaned_data.get("conservation_file_number", None)
comment = self.cleaned_data.get("comment", None)
# Create log entry
action = UserActionLogEntry.objects.create(
user=user,
action=UserAction.EDITED,
)
# Process the geometry form
geometry = geom_form.save(action)
# Update responsible data
self.instance.responsible.handler = handler
self.instance.responsible.conservation_office = conservation_office
self.instance.responsible.conservation_file_number = conservation_file_number
self.instance.responsible.save()
# Update main oject data
self.instance.identifier = identifier
self.instance.title = title
self.instance.deductable_surface = surface
self.instance.geometry = geometry
self.instance.comment = comment
self.instance.save()
self.instance.fundings.set(fundings)
# Add the log entry to the main objects log list
self.instance.log.add(action)
return self.instance

View File

@ -36,7 +36,8 @@ class NewPaymentForm(BaseModalForm):
help_text=_("in Euro"),
widget=forms.NumberInput(
attrs={
"class": "form-control"
"class": "form-control",
"placeholder": "0,00",
}
)
)
@ -73,7 +74,6 @@ class NewPaymentForm(BaseModalForm):
self.intervention = self.instance
self.form_title = _("Payment")
self.form_caption = _("Add a payment for intervention '{}'").format(self.intervention.title)
self.add_placeholder_for_field("amount", "0,00")
def is_valid(self):
"""
@ -156,6 +156,7 @@ class NewStateModalForm(BaseModalForm):
widget=forms.NumberInput(
attrs={
"class": "form-control",
"placeholder": "0,00"
}
)
)
@ -164,7 +165,6 @@ class NewStateModalForm(BaseModalForm):
super().__init__(*args, **kwargs)
self.form_title = _("New state")
self.form_caption = _("Insert data for the new state")
self.add_placeholder_for_field("surface", "0,00")
def save(self, is_before_state: bool = False):
with transaction.atomic():
@ -357,6 +357,7 @@ class NewActionModalForm(BaseModalForm):
widget=forms.NumberInput(
attrs={
"class": "form-control",
"placeholder": "0,00",
}
)
)
@ -378,7 +379,6 @@ class NewActionModalForm(BaseModalForm):
super().__init__(*args, **kwargs)
self.form_title = _("New action")
self.form_caption = _("Insert data for the new action")
self.add_placeholder_for_field("amount", "0,00")
def save(self):
with transaction.atomic():

View File

@ -5,8 +5,8 @@ Contact: michel.peltriaux@sgdnord.rlp.de
Created on: 18.12.20
"""
COMPENSATION_IDENTIFIER_LENGTH = 10
COMPENSATION_IDENTIFIER_LENGTH = 6
COMPENSATION_IDENTIFIER_TEMPLATE = "KOM-{}"
ECO_ACCOUNT_IDENTIFIER_LENGTH = 10
ECO_ACCOUNT_IDENTIFIER_LENGTH = 6
ECO_ACCOUNT_IDENTIFIER_TEMPLATE = "OEK-{}"

View File

@ -3,7 +3,7 @@
{% if obj.comment %}
<div class="w-100">
<div class="card mt-3">
<div class="card-header rlp-r">
<div class="card-header rlp-gd">
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12">
<h5 class="card-title">

View File

@ -0,0 +1,23 @@
{% load i18n fontawesome_5 %}
{% if obj.comment %}
<div class="w-100">
<div class="card mt-3">
<div class="card-header rlp-gd">
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12">
<h5 class="card-title">
{% fa5_icon 'info-circle' %}
{% trans 'Comment' %}
</h5>
</div>
</div>
</div>
<div class="card-body">
<div class="card-text font-italic">
{{obj.comment}}
</div>
</div>
</div>
</div>
{% endif %}

View File

@ -24,7 +24,7 @@
{% endif %}
{% endif %}
{% if is_default_member %}
<a href="{% url 'home' %}" class="mr-2">
<a href="{% url 'compensation:acc-edit' obj.id %}" class="mr-2">
<button class="btn btn-default" title="{% trans 'Edit' %}">
{% fa5_icon 'edit' %}
</button>

View File

@ -30,10 +30,10 @@
<th class="w-25" scope="row">{% trans 'Title' %}</th>
<td class="align-middle">{{obj.title}}</td>
</tr>
<tr>
<tr {% if not obj.deductable_surface %}class="alert alert-danger" title="{% trans 'No surface deductable' %}" {% endif %}>
<th scope="row">{% trans 'Available' %}</th>
<td class="align-middle">
{{available_total|floatformat:2}} / {{obj.deductable_surface|floatformat:2}} m²
{{available_total|floatformat:2}} / {{obj.deductable_surface|default_if_none:0.00|floatformat:2}} m²
{% with available as value %}
{% include 'konova/custom_widgets/progressbar.html' %}
{% endwith %}
@ -98,8 +98,13 @@
</div>
</div>
<div class="col-sm-12 col-md-12 col-lg-6">
<div class="row">
{% include 'map/geom_form.html' %}
</div>
<div class="row">
{% include 'compensation/detail/compensation/includes/comment.html' %}
</div>
</div>
</div>
<hr>

View File

@ -1,16 +1,6 @@
{% 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 %}

View File

@ -14,7 +14,7 @@ from django.core.exceptions import ObjectDoesNotExist
from django.http import HttpRequest, Http404, JsonResponse
from django.shortcuts import render, get_object_or_404, redirect
from compensation.forms.forms import NewEcoAccountForm
from compensation.forms.forms import NewEcoAccountForm, EditEcoAccountForm
from compensation.forms.modalForms import NewStateModalForm, NewActionModalForm, NewDeadlineModalForm
from compensation.models import EcoAccount, EcoAccountDocument
from compensation.tables import EcoAccountTable
@ -120,8 +120,38 @@ def new_id_view(request: HttpRequest):
@login_required
@default_group_required
def edit_view(request: HttpRequest, id: str):
# ToDo
"""
Renders a view for editing compensations
Args:
request (HttpRequest): The incoming request
Returns:
"""
template = "compensation/new/view.html"
# Get object from db
acc = get_object_or_404(EcoAccount, id=id)
# Create forms, initialize with values from db/from POST request
data_form = EditEcoAccountForm(request.POST or None, instance=acc)
geom_form = SimpleGeomForm(request.POST or None, read_only=False, instance=acc)
if request.method == "POST":
if data_form.is_valid() and geom_form.is_valid():
# The data form takes the geom form for processing, as well as the performing user
acc = data_form.save(request.user, geom_form)
messages.success(request, _("Eco-Account {} edited").format(acc.identifier))
return redirect("compensation:acc-open", id=acc.id)
else:
messages.error(request, FORM_INVALID)
else:
# For clarification: nothing in this case
pass
context = {
"form": data_form,
"geom_form": geom_form,
}
context = BaseContext(request, context).context
return render(request, template, context)
@login_required

View File

@ -6,5 +6,5 @@ Created on: 19.08.21
"""
EMA_ACCOUNT_IDENTIFIER_LENGTH = 10
EMA_ACCOUNT_IDENTIFIER_LENGTH = 6
EMA_ACCOUNT_IDENTIFIER_TEMPLATE = "EMA-{}"

View File

@ -60,6 +60,7 @@ class NewInterventionForm(BaseForm):
widget=autocomplete.ModelSelect2(
url="codes-process-type-autocomplete",
attrs={
"data-placeholder": _("Click for selection"),
}
),
)
@ -76,6 +77,7 @@ class NewInterventionForm(BaseForm):
widget=autocomplete.ModelSelect2Multiple(
url="codes-law-autocomplete",
attrs={
"data-placeholder": _("Click for selection"),
}
),
)
@ -91,6 +93,7 @@ class NewInterventionForm(BaseForm):
widget=autocomplete.ModelSelect2(
url="codes-registration-office-autocomplete",
attrs={
"data-placeholder": _("Click for selection"),
}
),
)
@ -106,6 +109,7 @@ class NewInterventionForm(BaseForm):
widget=autocomplete.ModelSelect2(
url="codes-conservation-office-autocomplete",
attrs={
"data-placeholder": _("Click for selection"),
}
),
)

View File

@ -277,6 +277,7 @@ class NewDeductionModalForm(BaseModalForm):
widget=forms.NumberInput(
attrs={
"class": "form-control",
"placeholder": "0,00",
}
)
)
@ -300,9 +301,6 @@ class NewDeductionModalForm(BaseModalForm):
self.form_caption = _("Enter the information for a new deduction from a chosen eco-account")
self.is_intervention_initially = False
# Add a placeholder for field 'surface' without having to define the whole widget above
self.add_placeholder_for_field("surface", "0,00")
# Check for Intervention or EcoAccount
if isinstance(self.instance, Intervention):
# Form has been called with a given intervention

View File

@ -5,5 +5,5 @@ Contact: michel.peltriaux@sgdnord.rlp.de
Created on: 30.11.20
"""
INTERVENTION_IDENTIFIER_LENGTH = 10
INTERVENTION_IDENTIFIER_LENGTH = 6
INTERVENTION_IDENTIFIER_TEMPLATE = "EIV-{}"

View File

@ -3,7 +3,7 @@
{% if intervention.comment %}
<div class="w-100">
<div class="card mt-3">
<div class="card-header rlp-r">
<div class="card-header rlp-gd">
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12">
<h5 class="card-title">

View File

@ -1,16 +1,6 @@
{% 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 %}

View File

@ -76,7 +76,7 @@ class BaseForm(forms.Form):
def add_placeholder_for_field(self, field: str, val):
"""
Adds a placeholder to a field after initialization
Adds a placeholder to a field after initialization without the need to redefine the form widget
Args:
field (str): Field name

View File

@ -191,7 +191,9 @@ class BaseObject(BaseResource):
curr_year = str(_now.year)
rand_str = generate_random_string(
length=definitions[self.__class__]["length"],
only_numbers=True,
use_numbers=True,
use_letters_lc=False,
use_letters_uc=True,
)
_str = "{}{}-{}".format(curr_month, curr_year, rand_str)
return definitions[self.__class__]["template"].format(_str)

View File

@ -9,14 +9,18 @@ import random
import string
def generate_random_string(length: int, only_numbers: bool = False) -> str:
def generate_random_string(length: int, use_numbers: bool = False, use_letters_lc: bool = False, use_letters_uc: bool = False) -> str:
"""
Generates a random string of variable length
"""
if only_numbers:
elements = string.digits
else:
elements = string.ascii_letters
elements = []
if use_numbers:
elements.append(string.digits)
if use_letters_lc:
elements.append(string.ascii_lowercase)
if use_letters_uc:
elements.append(string.ascii_uppercase)
elements = "".join(elements)
ret_val = "".join(random.choice(elements) for i in range(length))
return ret_val

Binary file not shown.

View File

@ -4,22 +4,22 @@
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#: 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
#: compensation/forms/modalForms.py:46 compensation/forms/modalForms.py:62
#: compensation/forms/modalForms.py:273 compensation/forms/modalForms.py:368
#: 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/forms.py:53 intervention/forms/forms.py:155
#: intervention/forms/forms.py:167 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:311
#: konova/forms.py:338 konova/forms.py:348 konova/forms.py:361
#: konova/forms.py:373 konova/forms.py:394 user/forms.py:38
#: konova/forms.py:140 konova/forms.py:244 konova/forms.py:310
#: konova/forms.py:337 konova/forms.py:347 konova/forms.py:360
#: konova/forms.py:372 konova/forms.py:393 user/forms.py:38
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-10-05 15:19+0200\n"
"POT-Creation-Date: 2021-10-06 13:06+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -55,7 +55,7 @@ msgstr "Automatisch generiert"
#: 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:337
#: intervention/templates/intervention/detail/view.html:31 konova/forms.py:336
msgid "Title"
msgstr "Bezeichnung"
@ -75,32 +75,36 @@ msgstr "Förderungen"
msgid "Select fundings for this compensation"
msgstr "Wählen Sie ggf. Fördermittelprojekte"
#: compensation/forms/forms.py:67
msgid "Funding by..."
msgstr "Gefördert mit..."
#: compensation/forms/forms.py:67 compensation/forms/forms.py:104
#: compensation/forms/forms.py:239 intervention/forms/forms.py:63
#: intervention/forms/forms.py:80 intervention/forms/forms.py:96
#: intervention/forms/forms.py:112
msgid "Click for selection"
msgstr "Auswählen..."
#: compensation/forms/forms.py:73 compensation/forms/modalForms.py:60
#: compensation/forms/modalForms.py:272 compensation/forms/modalForms.py:366
#: compensation/forms/forms.py:73 compensation/forms/modalForms.py:61
#: compensation/forms/modalForms.py:272 compensation/forms/modalForms.py:367
#: compensation/templates/compensation/detail/compensation/includes/actions.html:34
#: compensation/templates/compensation/detail/compensation/includes/comment.html:11
#: compensation/templates/compensation/detail/compensation/includes/deadlines.html:34
#: compensation/templates/compensation/detail/compensation/includes/documents.html:31
#: compensation/templates/compensation/detail/eco_account/includes/actions.html:34
#: compensation/templates/compensation/detail/eco_account/includes/comment.html:11
#: compensation/templates/compensation/detail/eco_account/includes/deadlines.html:34
#: compensation/templates/compensation/detail/eco_account/includes/documents.html:31
#: 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:175 intervention/forms/modalForms.py:132
#: intervention/forms/forms.py:179 intervention/forms/modalForms.py:132
#: intervention/templates/intervention/detail/includes/comment.html:11
#: 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:372
#: konova/forms.py:371
msgid "Comment"
msgstr "Kommentar"
#: compensation/forms/forms.py:75 intervention/forms/forms.py:177
#: compensation/forms/forms.py:75 intervention/forms/forms.py:181
msgid "Additional comment"
msgstr "Zusätzlicher Kommentar"
@ -113,13 +117,6 @@ msgstr "kompensiert Eingriff"
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:104 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:122
msgid "New compensation"
msgstr "Neue Kompensation"
@ -130,7 +127,7 @@ msgstr "Bearbeite Kompensation"
#: compensation/forms/forms.py:228
#: compensation/templates/compensation/detail/eco_account/view.html:58
#: ema/templates/ema/detail/view.html:42 intervention/forms/forms.py:98
#: ema/templates/ema/detail/view.html:42 intervention/forms/forms.py:101
#: intervention/templates/intervention/detail/view.html:56
msgid "Conservation office"
msgstr "Eintragungsstelle"
@ -139,69 +136,73 @@ msgstr "Eintragungsstelle"
msgid "Select the responsible office"
msgstr "Verantwortliche Stelle"
#: compensation/forms/forms.py:243
#: compensation/forms/forms.py:244
#: compensation/templates/compensation/detail/eco_account/view.html:62
#: ema/templates/ema/detail/view.html:46 intervention/forms/forms.py:125
#: ema/templates/ema/detail/view.html:46 intervention/forms/forms.py:129
#: intervention/templates/intervention/detail/view.html:60
msgid "Conservation office file number"
msgstr "Aktenzeichen Eintragungsstelle"
#: compensation/forms/forms.py:249 intervention/forms/forms.py:131
#: compensation/forms/forms.py:250 intervention/forms/forms.py:135
msgid "ETS-123/ABC.456"
msgstr ""
#: compensation/forms/forms.py:255
#: compensation/forms/forms.py:256
msgid "Eco-account handler"
msgstr "Maßnahmenträger"
#: compensation/forms/forms.py:259
#: compensation/forms/forms.py:260
msgid "Who handles the eco-account"
msgstr "Wer für die Herrichtung des Ökokontos verantwortlich ist"
#: compensation/forms/forms.py:262 intervention/forms/forms.py:144
#: compensation/forms/forms.py:263 intervention/forms/forms.py:148
msgid "Company Mustermann"
msgstr "Firma Mustermann"
#: compensation/forms/forms.py:270
msgid "Available Surface"
msgstr "Verfügbare Fläche"
#: compensation/forms/forms.py:272
msgid "The amount that can be used for deductions"
msgstr "Die für Abbuchungen zur Verfügung stehende Menge"
#: compensation/forms/forms.py:292
#: compensation/forms/forms.py:280
msgid "New Eco-Account"
msgstr "Neues Ökokonto"
#: compensation/forms/forms.py:301
#: compensation/forms/forms.py:289
msgid "Eco-Account XY; Location ABC"
msgstr "Ökokonto XY; Flur ABC"
#: compensation/forms/forms.py:338
msgid "Available Surface"
msgstr "Verfügbare Fläche"
#: compensation/forms/forms.py:341
msgid "The amount that can be used for deductions"
msgstr "Die für Abbuchungen zur Verfügung stehende Menge"
#: compensation/forms/forms.py:362
msgid "Edit Eco-Account"
msgstr "Ökokonto bearbeiten"
#: compensation/forms/modalForms.py:36
msgid "in Euro"
msgstr "in Euro"
#: compensation/forms/modalForms.py:44
#: compensation/forms/modalForms.py:45
#: intervention/templates/intervention/detail/includes/payments.html:31
msgid "Due on"
msgstr "Fällig am"
#: compensation/forms/modalForms.py:47
#: compensation/forms/modalForms.py:48
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:374
#: compensation/forms/modalForms.py:63 compensation/forms/modalForms.py:274
#: compensation/forms/modalForms.py:369 intervention/forms/modalForms.py:134
#: konova/forms.py:373
msgid "Additional comment, maximum {} letters"
msgstr "Zusätzlicher Kommentar, maximal {} Zeichen"
#: compensation/forms/modalForms.py:74
#: compensation/forms/modalForms.py:75
msgid "Payment"
msgstr "Zahlung"
#: compensation/forms/modalForms.py:75
#: compensation/forms/modalForms.py:76
msgid "Add a payment for intervention '{}'"
msgstr "Neue Ersatzzahlung zu Eingriff '{}' hinzufügen"
@ -236,11 +237,11 @@ msgstr "Fläche"
msgid "in m²"
msgstr ""
#: compensation/forms/modalForms.py:165
#: compensation/forms/modalForms.py:166
msgid "New state"
msgstr "Neuer Zustand"
#: compensation/forms/modalForms.py:166
#: compensation/forms/modalForms.py:167
msgid "Insert data for the new state"
msgstr "Geben Sie die Daten des neuen Zustandes ein"
@ -336,11 +337,11 @@ msgstr "Menge"
msgid "Insert the amount"
msgstr "Menge eingeben"
#: compensation/forms/modalForms.py:379
#: compensation/forms/modalForms.py:380
msgid "New action"
msgstr "Neue Maßnahme"
#: compensation/forms/modalForms.py:380
#: compensation/forms/modalForms.py:381
msgid "Insert data for the new action"
msgstr "Geben Sie die Daten der neuen Maßnahme ein"
@ -587,7 +588,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:393
#: konova/forms.py:392
msgid "Add new document"
msgstr "Neues Dokument hinzufügen"
@ -736,6 +737,10 @@ msgstr "Erstellt"
msgid "Remove Deduction"
msgstr "Abbuchung entfernen"
#: compensation/templates/compensation/detail/eco_account/view.html:34
msgid "No surface deductable"
msgstr "Keine Flächenmenge für Abbuchungen eingegeben. Bitte bearbeiten."
#: compensation/templates/compensation/detail/eco_account/view.html:57
#: compensation/templates/compensation/detail/eco_account/view.html:61
#: compensation/templates/compensation/detail/eco_account/view.html:65
@ -755,7 +760,7 @@ msgid "Missing"
msgstr "Fehlt"
#: compensation/templates/compensation/detail/eco_account/view.html:66
#: ema/templates/ema/detail/view.html:50 intervention/forms/forms.py:137
#: ema/templates/ema/detail/view.html:50 intervention/forms/forms.py:141
#: intervention/templates/intervention/detail/view.html:64
msgid "Intervention handler"
msgstr "Eingriffsverursacher"
@ -769,7 +774,7 @@ msgid "Compensation {} edited"
msgstr "Kompensation {} bearbeitet"
#: compensation/views/compensation_views.py:211
#: compensation/views/eco_account_views.py:248 ema/views.py:128
#: compensation/views/eco_account_views.py:278 ema/views.py:128
#: intervention/views.py:428
msgid "Log"
msgstr "Log"
@ -779,23 +784,23 @@ msgid "Compensation removed"
msgstr "Kompensation entfernt"
#: compensation/views/compensation_views.py:251
#: compensation/views/eco_account_views.py:347 ema/views.py:250
#: compensation/views/eco_account_views.py:377 ema/views.py:250
#: intervention/views.py:124
msgid "Document added"
msgstr "Dokument hinzugefügt"
#: compensation/views/compensation_views.py:307
#: compensation/views/eco_account_views.py:291 ema/views.py:194
#: compensation/views/eco_account_views.py:321 ema/views.py:194
msgid "State added"
msgstr "Zustand hinzugefügt"
#: compensation/views/compensation_views.py:326
#: compensation/views/eco_account_views.py:310 ema/views.py:213
#: compensation/views/eco_account_views.py:340 ema/views.py:213
msgid "Action added"
msgstr "Maßnahme hinzugefügt"
#: compensation/views/compensation_views.py:345
#: compensation/views/eco_account_views.py:329 ema/views.py:232
#: compensation/views/eco_account_views.py:359 ema/views.py:232
msgid "Deadline added"
msgstr "Frist/Termin hinzugefügt"
@ -807,29 +812,33 @@ msgstr "Zustand gelöscht"
msgid "Action removed"
msgstr "Maßnahme entfernt"
#: compensation/views/eco_account_views.py:87
#: compensation/views/eco_account_views.py:86
msgid "Eco-Account {} added"
msgstr "Ökokonto {} hinzugefügt"
#: compensation/views/eco_account_views.py:198
#: compensation/views/eco_account_views.py:142
msgid "Eco-Account {} edited"
msgstr "Ökokonto {} bearbeitet"
#: compensation/views/eco_account_views.py:228
msgid "Eco-account removed"
msgstr "Ökokonto entfernt"
#: compensation/views/eco_account_views.py:225
#: compensation/views/eco_account_views.py:255
msgid "Deduction removed"
msgstr "Abbuchung entfernt"
#: compensation/views/eco_account_views.py:268 ema/views.py:171
#: compensation/views/eco_account_views.py:298 ema/views.py:171
#: intervention/views.py:468
msgid "{} unrecorded"
msgstr "{} entzeichnet"
#: compensation/views/eco_account_views.py:268 ema/views.py:171
#: compensation/views/eco_account_views.py:298 ema/views.py:171
#: intervention/views.py:468
msgid "{} recorded"
msgstr "{} verzeichnet"
#: compensation/views/eco_account_views.py:404 intervention/views.py:450
#: compensation/views/eco_account_views.py:434 intervention/views.py:450
msgid "Deduction added"
msgstr "Abbuchung hinzugefügt"
@ -890,48 +899,48 @@ msgstr "Bauvorhaben XY; Flur ABC"
msgid "Process type"
msgstr "Verfahrenstyp"
#: intervention/forms/forms.py:67
#: intervention/forms/forms.py:68
#: intervention/templates/intervention/detail/view.html:39
msgid "Law"
msgstr "Gesetz"
#: intervention/forms/forms.py:69
#: intervention/forms/forms.py:70
msgid "Multiple selection possible"
msgstr "Mehrfachauswahl möglich"
#: intervention/forms/forms.py:83
#: intervention/forms/forms.py:85
#: intervention/templates/intervention/detail/view.html:48
msgid "Registration office"
msgstr "Zulassungsbehörde"
#: intervention/forms/forms.py:113
#: intervention/forms/forms.py:117
#: intervention/templates/intervention/detail/view.html:52
msgid "Registration office file number"
msgstr "Aktenzeichen Zulassungsbehörde"
#: intervention/forms/forms.py:119
#: intervention/forms/forms.py:123
msgid "ZB-123/ABC.456"
msgstr ""
#: intervention/forms/forms.py:141
#: intervention/forms/forms.py:145
msgid "Who performs the intervention"
msgstr "Wer führt den Eingriff durch"
#: intervention/forms/forms.py:150
#: intervention/forms/forms.py:154
#: intervention/templates/intervention/detail/view.html:96
msgid "Registration date"
msgstr "Datum Zulassung bzw. Satzungsbeschluss"
#: intervention/forms/forms.py:162
#: intervention/forms/forms.py:166
#: intervention/templates/intervention/detail/view.html:100
msgid "Binding on"
msgstr "Datum Bestandskraft"
#: intervention/forms/forms.py:188
#: intervention/forms/forms.py:192
msgid "New intervention"
msgstr "Neuer Eingriff"
#: intervention/forms/forms.py:269
#: intervention/forms/forms.py:273
msgid "Edit intervention"
msgstr "Eingriff bearbeiten"
@ -965,7 +974,7 @@ msgstr "Datum des Widerspruchs"
msgid "Document"
msgstr "Dokument"
#: intervention/forms/modalForms.py:122 konova/forms.py:362
#: intervention/forms/modalForms.py:122 konova/forms.py:361
msgid "Must be smaller than 15 Mb"
msgstr "Muss kleiner als 15 Mb sein"
@ -987,7 +996,7 @@ msgstr "Kompensationen und Zahlungen geprüft"
msgid "Run check"
msgstr "Prüfung vornehmen"
#: intervention/forms/modalForms.py:201 konova/forms.py:447
#: intervention/forms/modalForms.py:201 konova/forms.py:446
msgid ""
"I, {} {}, confirm that all necessary control steps have been performed by "
"myself."
@ -999,19 +1008,26 @@ 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:286
#: intervention/forms/modalForms.py:285 intervention/forms/modalForms.py:292
#: 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:287
msgid "Only shared interventions can be selected"
msgstr "Nur freigegebene Eingriffe können gewählt werden"
#: intervention/forms/modalForms.py:299
#: intervention/forms/modalForms.py:300
msgid "New Deduction"
msgstr "Neue Abbuchung"
#: intervention/forms/modalForms.py:300
#: intervention/forms/modalForms.py:301
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:336
#: intervention/forms/modalForms.py:334
msgid ""
"Eco-account {} is not recorded yet. You can only deduct from recorded "
"accounts."
@ -1019,7 +1035,7 @@ msgstr ""
"Ökokonto {} ist noch nicht verzeichnet. Abbuchungen können nur von "
"verzeichneten Ökokonten erfolgen."
#: intervention/forms/modalForms.py:349
#: intervention/forms/modalForms.py:347
msgid ""
"The account {} has not enough surface for a deduction of {} m². There are "
"only {} m² left"
@ -1203,11 +1219,11 @@ msgstr ""
msgid "Not editable"
msgstr "Nicht editierbar"
#: konova/forms.py:139 konova/forms.py:310
#: konova/forms.py:139 konova/forms.py:309
msgid "Confirm"
msgstr "Bestätige"
#: konova/forms.py:151 konova/forms.py:319
#: konova/forms.py:151 konova/forms.py:318
msgid "Remove"
msgstr "Löschen"
@ -1219,44 +1235,44 @@ msgstr "Sie sind dabei {} {} zu löschen"
msgid "Geometry"
msgstr "Geometrie"
#: konova/forms.py:320
#: konova/forms.py:319
msgid "Are you sure?"
msgstr "Sind Sie sicher?"
#: konova/forms.py:347
#: konova/forms.py:346
msgid "Created on"
msgstr "Erstellt"
#: konova/forms.py:349
#: konova/forms.py:348
msgid "When has this file been created? Important for photos."
msgstr "Wann wurde diese Datei erstellt oder das Foto aufgenommen?"
#: konova/forms.py:360
#: konova/forms.py:359
#: venv/lib/python3.7/site-packages/django/db/models/fields/files.py:231
msgid "File"
msgstr "Datei"
#: konova/forms.py:424
#: konova/forms.py:423
msgid "Added document"
msgstr "Dokument hinzugefügt"
#: konova/forms.py:438
#: konova/forms.py:437
msgid "Confirm record"
msgstr "Verzeichnen bestätigen"
#: konova/forms.py:446
#: konova/forms.py:445
msgid "Record data"
msgstr "Daten verzeichnen"
#: konova/forms.py:453
#: konova/forms.py:452
msgid "Confirm unrecord"
msgstr "Entzeichnen bestätigen"
#: konova/forms.py:454
#: konova/forms.py:453
msgid "Unrecord data"
msgstr "Daten entzeichnen"
#: konova/forms.py:455
#: konova/forms.py:454
msgid "I, {} {}, confirm that this data must be unrecorded."
msgstr ""
"Ich, {} {}, bestätige, dass diese Daten wieder entzeichnet werden müssen."
@ -1285,19 +1301,19 @@ msgstr "Wenn meine freigegebenen Daten gelöscht wurden"
msgid "On registered data edited"
msgstr "Wenn meine freigegebenen Daten bearbeitet wurden"
#: konova/models.py:204
#: konova/models.py:206
msgid "Finished"
msgstr "Umgesetzt bis"
#: konova/models.py:205
#: konova/models.py:207
msgid "Maintain"
msgstr "Unterhaltung bis"
#: konova/models.py:206
#: konova/models.py:208
msgid "Control"
msgstr "Kontrolle am"
#: konova/models.py:207
#: konova/models.py:209
msgid "Other"
msgstr "Sonstige"
@ -2816,6 +2832,9 @@ msgstr ""
msgid "A fontawesome icon field"
msgstr ""
#~ msgid "Funding by..."
#~ msgstr "Gefördert mit..."
#~ msgid "Invalid input"
#~ msgstr "Eingabe fehlerhaft"
@ -2894,9 +2913,6 @@ msgstr ""
#~ msgid "Add new eco account"
#~ msgstr "Neues Ökokonto hinzufügen"
#~ msgid "Edit eco account"
#~ msgstr "Ökokonto bearbeiten"
#~ msgid "Add new EMA"
#~ msgstr "Neue EMA hinzufügen"