diff --git a/compensation/forms.py b/compensation/forms.py index e755fff4..cd13480a 100644 --- a/compensation/forms.py +++ b/compensation/forms.py @@ -46,6 +46,11 @@ class NewPaymentForm(BaseModalForm): label=_con("money", "Amount"), # contextual translation label_suffix=_(""), help_text=_("in Euro"), + widget=forms.NumberInput( + attrs={ + "class": "form-control" + } + ) ) due = forms.DateField( label=_("Due on"), @@ -56,6 +61,7 @@ class NewPaymentForm(BaseModalForm): attrs={ "type": "date", "data-provide": "datepicker", + "class": "form-control", }, format="%d.%m.%Y" ) @@ -69,14 +75,11 @@ class NewPaymentForm(BaseModalForm): widget=forms.Textarea( attrs={ "rows": 5, - "class": "w-100" + "class": "form-control" } ) ) - # Define w-100 for all form fields - full_width_fields = True - def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.intervention = self.instance @@ -155,7 +158,12 @@ class NewStateModalForm(BaseModalForm): label=_("Surface"), label_suffix="", required=True, - help_text=_("in m²") + help_text=_("in m²"), + widget=forms.NumberInput( + attrs={ + "class": "form-control", + } + ) ) def __init__(self, *args, **kwargs): @@ -243,7 +251,7 @@ class NewDeadlineModalForm(BaseModalForm): choices=DeadlineType.choices, widget=forms.Select( attrs={ - "class": "custom-select" + "class": "form-control" } ) ) @@ -256,6 +264,7 @@ class NewDeadlineModalForm(BaseModalForm): attrs={ "type": "date", "data-provide": "datepicker", + "class": "form-control", }, format="%d.%m.%Y" ) @@ -270,6 +279,7 @@ class NewDeadlineModalForm(BaseModalForm): attrs={ "cols": 30, "rows": 5, + "class": "form-control", } ) ) @@ -329,7 +339,7 @@ class NewActionModalForm(BaseModalForm): choices=UnitChoices.choices, widget=forms.Select( attrs={ - "class": "custom-select" + "class": "form-control" } ) ) @@ -340,6 +350,11 @@ class NewActionModalForm(BaseModalForm): help_text=_("Insert the amount"), decimal_places=2, min_value=0.00, + widget=forms.NumberInput( + attrs={ + "class": "form-control", + } + ) ) comment = forms.CharField( required=False, @@ -350,7 +365,7 @@ class NewActionModalForm(BaseModalForm): widget=forms.Textarea( attrs={ "rows": 5, - "class": "w-100" + "class": "form-control", } ) ) diff --git a/compensation/tables.py b/compensation/tables.py index c7487dc6..1e22926b 100644 --- a/compensation/tables.py +++ b/compensation/tables.py @@ -5,6 +5,7 @@ Contact: michel.peltriaux@sgdnord.rlp.de Created on: 01.12.20 """ +from django.contrib.auth.models import User from django.http import HttpRequest from django.template.loader import render_to_string from django.urls import reverse @@ -148,6 +149,8 @@ class CompensationTable(BaseTable): """ html = "" + if value is None: + value = User.objects.none() has_access = value.filter( username=self.user.username ).exists() diff --git a/intervention/forms/forms.py b/intervention/forms/forms.py index d0c9c91c..3d6be7f6 100644 --- a/intervention/forms/forms.py +++ b/intervention/forms/forms.py @@ -9,13 +9,14 @@ from dal import autocomplete from django import forms from django.contrib.auth.models import User from django.db import transaction -from django.urls import reverse +from django.urls import reverse, reverse_lazy from django.utils import timezone from django.utils.translation import gettext_lazy as _ from codelist.models import KonovaCode from codelist.settings import CODELIST_PROCESS_TYPE_ID, CODELIST_LAW_ID, \ CODELIST_REGISTRATION_OFFICE_ID, CODELIST_CONSERVATION_OFFICE_ID +from intervention.inputs import GenerateInput from intervention.models import Intervention, LegalData, ResponsibilityData from konova.forms import BaseForm, SimpleGeomForm from user.models import UserActionLogEntry, UserAction @@ -27,6 +28,12 @@ class NewInterventionForm(BaseForm): label_suffix="", max_length=255, help_text=_("Generated automatically"), + widget=GenerateInput( + attrs={ + "class": "form-control", + "url": reverse_lazy("intervention:new-id"), + } + ) ) title = forms.CharField( label=_("Title"), @@ -35,7 +42,8 @@ class NewInterventionForm(BaseForm): max_length=255, widget=forms.TextInput( attrs={ - "placeholder": _("Construction XY; Location ABC") + "placeholder": _("Construction XY; Location ABC"), + "class": "form-control", } ) ) @@ -108,7 +116,8 @@ class NewInterventionForm(BaseForm): required=False, widget=forms.TextInput( attrs={ - "placeholder": _("ZB-123/ABC.456") + "placeholder": _("ZB-123/ABC.456"), + "class": "form-control", } ) ) @@ -119,7 +128,8 @@ class NewInterventionForm(BaseForm): required=False, widget=forms.TextInput( attrs={ - "placeholder": _("ETS-123/ABC.456") + "placeholder": _("ETS-123/ABC.456"), + "class": "form-control", } ) ) @@ -131,7 +141,8 @@ class NewInterventionForm(BaseForm): help_text=_("Who performs the intervention"), widget=forms.TextInput( attrs={ - "placeholder": _("Company Mustermann") + "placeholder": _("Company Mustermann"), + "class": "form-control", } ) ) @@ -142,6 +153,7 @@ class NewInterventionForm(BaseForm): widget=forms.DateInput( attrs={ "type": "date", + "class": "form-control", }, format="%d.%m.%Y" ) @@ -153,6 +165,7 @@ class NewInterventionForm(BaseForm): widget=forms.DateInput( attrs={ "type": "date", + "class": "form-control", }, format="%d.%m.%Y" ) @@ -165,14 +178,11 @@ class NewInterventionForm(BaseForm): widget=forms.Textarea( attrs={ "rows": 5, - "class": "w-100" + "class": "form-control" } ) ) - # Define w-100 for all form fields - full_width_fields = True - def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.form_title = _("New intervention") @@ -281,12 +291,10 @@ class EditInterventionForm(NewInterventionForm): "binding_date": bind_date, "comment": self.instance.comment, } - disabled_fields = [ - "identifier", - ] + disabled_fields = [] self.load_initial_data( form_data, - disabled_fields, + disabled_fields ) def save(self, user: User, geom_form: SimpleGeomForm): diff --git a/intervention/forms/modalForms.py b/intervention/forms/modalForms.py index 1165a806..d17e59bf 100644 --- a/intervention/forms/modalForms.py +++ b/intervention/forms/modalForms.py @@ -31,7 +31,8 @@ class ShareInterventionModalForm(BaseModalForm): required=False, widget=TextToClipboardInput( attrs={ - "readonly": True + "readonly": True, + "class": "form-control", } ) ) @@ -109,6 +110,7 @@ class NewRevocationModalForm(BaseModalForm): attrs={ "type": "date", "data-provide": "datepicker", + "class": "form-control", }, format="%d.%m.%Y" ) @@ -120,7 +122,7 @@ class NewRevocationModalForm(BaseModalForm): help_text=_("Must be smaller than 15 Mb"), widget=forms.FileInput( attrs={ - "class": "w-75" + "class": "form-control-file" } ) ) @@ -134,13 +136,11 @@ class NewRevocationModalForm(BaseModalForm): attrs={ "cols": 30, "rows": 5, + "class": "form-control", } ) ) - # Define w-100 for all form fields - full_width_fields = True - def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.form_title = _("Add revocation") @@ -274,6 +274,11 @@ class NewDeductionModalForm(BaseModalForm): label=_("Surface"), label_suffix="", help_text=_("in m²"), + widget=forms.NumberInput( + attrs={ + "class": "form-control", + } + ) ) intervention = forms.ModelChoiceField( label=_("Intervention"), @@ -289,9 +294,6 @@ class NewDeductionModalForm(BaseModalForm): ), ) - # Define w-100 for all form fields - full_width_fields = True - def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.form_title = _("New Deduction") diff --git a/intervention/inputs.py b/intervention/inputs.py index 5781709a..90d2a754 100644 --- a/intervention/inputs.py +++ b/intervention/inputs.py @@ -12,4 +12,21 @@ class DummyFilterInput(forms.HiddenInput): class TextToClipboardInput(forms.TextInput): - template_name = "konova/custom_widgets/text-to-clipboard-input.html" \ No newline at end of file + template_name = "konova/custom_widgets/text-to-clipboard-input.html" + + +class GenerateInput(forms.TextInput): + """ + + Provides a form group with a button at the end, which generates new content for the input. + The url used to fetch new content can be added using the attrs like + + widget=GenerateInput( + attrs={ + "url": reverse_lazy("app_name:view_name") + ... + } + ) + + """ + template_name = "konova/custom_widgets/generate-content-input.html" diff --git a/intervention/urls.py b/intervention/urls.py index 51d1162f..ac96d628 100644 --- a/intervention/urls.py +++ b/intervention/urls.py @@ -9,12 +9,13 @@ from django.urls import path from intervention.views import index_view, new_view, open_view, edit_view, remove_view, new_document_view, share_view, \ create_share_view, remove_revocation_view, new_revocation_view, run_check_view, log_view, new_deduction_view, \ - record_view, remove_document_view, get_document_view, get_revocation_view + record_view, remove_document_view, get_document_view, get_revocation_view, new_id_view app_name = "intervention" urlpatterns = [ 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/intervention/views.py b/intervention/views.py index 97ed5cf2..11fa06fa 100644 --- a/intervention/views.py +++ b/intervention/views.py @@ -1,6 +1,6 @@ from django.contrib.auth.decorators import login_required from django.utils.translation import gettext_lazy as _ -from django.http import HttpRequest +from django.http import HttpRequest, JsonResponse from django.shortcuts import render, get_object_or_404 from intervention.forms.forms import NewInterventionForm, EditInterventionForm @@ -83,11 +83,30 @@ def new_view(request: HttpRequest): context = { "data_form": data_form, "geom_form": geom_form, + "url": reverse("intervention: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_intervention = Intervention() + identifier = tmp_intervention._generate_new_identifier() + while Intervention.objects.filter(identifier=identifier).exists(): + identifier = tmp_intervention._generate_new_identifier() + return JsonResponse( + data={ + "identifier": identifier + } + ) + + @login_required def new_document_view(request: HttpRequest, id: str): """ Renders a form for uploading new documents diff --git a/konova/forms.py b/konova/forms.py index e09b0669..eeed9744 100644 --- a/konova/forms.py +++ b/konova/forms.py @@ -43,7 +43,6 @@ class BaseForm(forms.Form): instance = None # The data holding model object form_attrs = {} # Holds additional attributes, that can be used in the template has_required_fields = False # Automatically set. Triggers hint rendering in templates - full_width_fields = False # w-100 for all input fields def __init__(self, *args, **kwargs): self.instance = kwargs.pop("instance", None) @@ -56,11 +55,6 @@ class BaseForm(forms.Form): self.has_required_fields = True break - if self.full_width_fields: - # Automatically add bootstrap w-100 class for maximum width of form fields in modals - for key, val in self.fields.items(): - self.add_widget_html_class(key, "w-100") - @abstractmethod def save(self): # To be implemented in subclasses! @@ -326,6 +320,11 @@ class NewDocumentForm(BaseModalForm): label=_("Title"), label_suffix=_(""), max_length=500, + widget=forms.TextInput( + attrs={ + "class": "form-control", + } + ) ) creation_date = forms.DateField( label=_("Created on"), @@ -335,6 +334,7 @@ class NewDocumentForm(BaseModalForm): attrs={ "type": "date", "data-provide": "datepicker", + "class": "form-control", }, format="%d.%m.%Y" ) @@ -345,7 +345,7 @@ class NewDocumentForm(BaseModalForm): help_text=_("Must be smaller than 15 Mb"), widget=forms.FileInput( attrs={ - "class": "w-75" + "class": "form-control-file", } ), ) @@ -359,6 +359,7 @@ class NewDocumentForm(BaseModalForm): attrs={ "cols": 30, "rows": 5, + "class": "form-control", } ) ) @@ -370,9 +371,6 @@ class NewDocumentForm(BaseModalForm): Ema: EmaDocument, } - # Define w-100 for all form fields - full_width_fields = True - def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.form_title = _("Add new document") diff --git a/konova/static/css/konova.css b/konova/static/css/konova.css index 3d04ce33..6de1f8f8 100644 --- a/konova/static/css/konova.css +++ b/konova/static/css/konova.css @@ -60,13 +60,7 @@ a { color: var(--rlp-red); } -input[type=text], input[type=date] { - border: 1px solid gray; - border-radius: 0.2rem; - padding: 0.3rem 0.5rem; -} - -input:focus, textarea:focus, select:focus{ +.form-control:focus{ outline: none; border-color: var(--rlp-red); box-shadow: 0 0 3px var(--rlp-red); diff --git a/konova/templates/konova/custom_widgets/generate-content-input.html b/konova/templates/konova/custom_widgets/generate-content-input.html new file mode 100644 index 00000000..66c91988 --- /dev/null +++ b/konova/templates/konova/custom_widgets/generate-content-input.html @@ -0,0 +1,22 @@ +{% load i18n fontawesome_5 %} + +
+ +
+ {% fa5_icon 'dice' %} +
+
+ \ No newline at end of file diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo index d41cf9b8..792ec772 100644 Binary files a/locale/de/LC_MESSAGES/django.mo and b/locale/de/LC_MESSAGES/django.mo differ diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po index bbd163c0..fb50ced8 100644 --- a/locale/de/LC_MESSAGES/django.po +++ b/locale/de/LC_MESSAGES/django.po @@ -3,21 +3,22 @@ # 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:52 -#: compensation/forms.py:67 compensation/forms.py:267 compensation/forms.py:348 +#: compensation/filters.py:71 compensation/forms.py:47 compensation/forms.py:57 +#: compensation/forms.py:73 compensation/forms.py:276 compensation/forms.py:363 #: intervention/filters.py:26 intervention/filters.py:40 #: intervention/filters.py:47 intervention/filters.py:48 -#: intervention/forms.py:51 intervention/forms.py:146 intervention/forms.py:157 -#: intervention/forms.py:465 intervention/forms.py:477 -#: intervention/forms.py:490 konova/forms.py:146 konova/forms.py:250 -#: konova/forms.py:300 konova/forms.py:327 konova/forms.py:332 -#: konova/forms.py:344 konova/forms.py:356 konova/forms.py:379 user/forms.py:38 +#: 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 #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-09-27 11:08+0200\n" +"POT-Creation-Date: 2021-09-27 13:56+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -35,16 +36,16 @@ msgstr "Nur unverzeichnete anzeigen" msgid "in Euro" msgstr "in Euro" -#: compensation/forms.py:51 +#: compensation/forms.py:56 #: intervention/templates/intervention/detail/includes/payments.html:31 msgid "Due on" msgstr "Fällig am" -#: compensation/forms.py:54 +#: compensation/forms.py:59 msgid "Due on which date" msgstr "Zahlung wird an diesem Datum erwartet" -#: compensation/forms.py:66 compensation/forms.py:266 compensation/forms.py:347 +#: compensation/forms.py:72 compensation/forms.py:275 compensation/forms.py:362 #: 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 @@ -54,7 +55,7 @@ msgstr "Zahlung wird an diesem Datum erwartet" #: 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.py:168 intervention/forms.py:489 +#: intervention/forms/forms.py:175 intervention/forms/modalForms.py:132 #: intervention/templates/intervention/detail/includes/documents.html:31 #: intervention/templates/intervention/detail/includes/payments.html:34 #: intervention/templates/intervention/detail/includes/revocation.html:38 @@ -62,107 +63,107 @@ msgstr "Zahlung wird an diesem Datum erwartet" msgid "Comment" msgstr "Kommentar" -#: compensation/forms.py:68 compensation/forms.py:268 compensation/forms.py:349 -#: intervention/forms.py:491 konova/forms.py:357 +#: compensation/forms.py:74 compensation/forms.py:277 compensation/forms.py:364 +#: intervention/forms/modalForms.py:134 konova/forms.py:357 msgid "Additional comment, maximum {} letters" msgstr "Zusätzlicher Kommentar, maximal {} Zeichen" -#: compensation/forms.py:83 +#: compensation/forms.py:86 msgid "Payment" msgstr "Zahlung" -#: compensation/forms.py:84 +#: compensation/forms.py:87 msgid "Add a payment for intervention '{}'" msgstr "Neue Ersatzzahlung zu Eingriff '{}' hinzufügen" -#: compensation/forms.py:105 +#: compensation/forms.py:108 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:119 +#: compensation/forms.py:122 msgid "Added payment" msgstr "Zahlung hinzufügen" -#: compensation/forms.py:136 compensation/forms.py:148 +#: compensation/forms.py:139 compensation/forms.py:151 msgid "Biotope Type" msgstr "Biotoptyp" -#: compensation/forms.py:139 +#: compensation/forms.py:142 msgid "Select the biotope type" msgstr "Biotoptyp wählen" -#: compensation/forms.py:155 +#: compensation/forms.py:158 #: 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 #: 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.py:633 +#: intervention/forms/modalForms.py:274 msgid "Surface" msgstr "Fläche" -#: compensation/forms.py:158 intervention/forms.py:635 +#: compensation/forms.py:161 intervention/forms/modalForms.py:276 msgid "in m²" msgstr "" -#: compensation/forms.py:163 +#: compensation/forms.py:171 msgid "New state" msgstr "Neuer Zustand" -#: compensation/forms.py:164 +#: compensation/forms.py:172 msgid "Insert data for the new state" msgstr "Geben Sie die Daten des neuen Zustandes ein" -#: compensation/forms.py:172 +#: compensation/forms.py:180 msgid "Added state" msgstr "Zustand hinzugefügt" -#: compensation/forms.py:188 konova/forms.py:199 +#: compensation/forms.py:196 konova/forms.py:193 msgid "Object removed" msgstr "Objekt entfernt" -#: compensation/forms.py:239 +#: compensation/forms.py:247 msgid "Deadline Type" msgstr "Fristart" -#: compensation/forms.py:242 +#: compensation/forms.py:250 msgid "Select the deadline type" msgstr "Fristart wählen" -#: compensation/forms.py:251 +#: compensation/forms.py:259 #: 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.py:464 +#: intervention/forms/modalForms.py:106 msgid "Date" msgstr "Datum" -#: compensation/forms.py:254 +#: compensation/forms.py:262 msgid "Select date" msgstr "Datum wählen" -#: compensation/forms.py:279 +#: compensation/forms.py:289 msgid "New deadline" msgstr "Neue Frist" -#: compensation/forms.py:280 +#: compensation/forms.py:290 msgid "Insert data for the new deadline" msgstr "Geben Sie die Daten der neuen Frist ein" -#: compensation/forms.py:297 +#: compensation/forms.py:307 msgid "Added deadline" msgstr "Frist/Termin hinzugefügt" -#: compensation/forms.py:308 +#: compensation/forms.py:318 msgid "Action Type" msgstr "Maßnahmentyp" -#: compensation/forms.py:311 +#: compensation/forms.py:321 msgid "Select the action type" msgstr "Maßnahmentyp wählen" -#: compensation/forms.py:320 +#: compensation/forms.py:330 #: 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 @@ -188,33 +189,33 @@ msgstr "Maßnahmentyp wählen" msgid "Action" msgstr "Aktionen" -#: compensation/forms.py:325 +#: compensation/forms.py:335 msgid "Unit" msgstr "Einheit" -#: compensation/forms.py:328 +#: compensation/forms.py:338 msgid "Select the unit" msgstr "Einheit wählen" -#: compensation/forms.py:337 +#: compensation/forms.py:347 #: 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:340 +#: compensation/forms.py:350 msgid "Insert the amount" msgstr "Menge eingeben" -#: compensation/forms.py:360 +#: compensation/forms.py:375 msgid "New action" msgstr "Neue Maßnahme" -#: compensation/forms.py:361 +#: compensation/forms.py:376 msgid "Insert data for the new action" msgstr "Geben Sie die Daten der neuen Maßnahme ein" -#: compensation/forms.py:380 +#: compensation/forms.py:395 msgid "Added action" msgstr "Maßnahme hinzugefügt" @@ -257,34 +258,34 @@ 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:24 compensation/tables.py:164 ema/tables.py:28 -#: intervention/forms.py:32 intervention/tables.py:23 +#: 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:29 compensation/tables.py:169 +#: 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.py:38 +#: 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:326 +#: intervention/templates/intervention/detail/view.html:31 konova/forms.py:320 msgid "Title" msgstr "Bezeichnung" -#: compensation/tables.py:34 +#: compensation/tables.py:35 #: compensation/templates/compensation/detail/compensation/view.html:43 #: intervention/tables.py:33 #: intervention/templates/intervention/detail/view.html:68 user/models.py:48 msgid "Checked" msgstr "Geprüft" -#: compensation/tables.py:40 compensation/tables.py:179 +#: compensation/tables.py:41 compensation/tables.py:182 #: compensation/templates/compensation/detail/compensation/view.html:57 #: compensation/templates/compensation/detail/eco_account/includes/deductions.html:31 #: compensation/templates/compensation/detail/eco_account/view.html:44 @@ -294,41 +295,41 @@ msgstr "Geprüft" msgid "Recorded" msgstr "Verzeichnet" -#: compensation/tables.py:46 compensation/tables.py:185 ema/tables.py:44 +#: compensation/tables.py:47 compensation/tables.py:188 ema/tables.py:44 #: intervention/tables.py:51 msgid "Editable" msgstr "Freigegeben" -#: compensation/tables.py:52 compensation/tables.py:191 ema/tables.py:50 +#: compensation/tables.py:53 compensation/tables.py:194 ema/tables.py:50 #: intervention/tables.py:57 msgid "Last edit" msgstr "Zuletzt bearbeitet" -#: compensation/tables.py:61 +#: compensation/tables.py:62 #: intervention/templates/intervention/detail/includes/compensations.html:8 msgid "Compensations" msgstr "Kompensationen" -#: compensation/tables.py:83 compensation/tables.py:222 ema/tables.py:82 +#: compensation/tables.py:84 compensation/tables.py:225 ema/tables.py:82 #: intervention/tables.py:88 msgid "Open {}" msgstr "Öffne {}" -#: compensation/tables.py:83 +#: compensation/tables.py:84 #: compensation/templates/compensation/detail/compensation/view.html:19 #: konova/templates/konova/home.html:49 templates/navbar.html:28 msgid "Compensation" msgstr "Kompensation" -#: compensation/tables.py:104 intervention/tables.py:107 +#: compensation/tables.py:105 intervention/tables.py:107 msgid "Not checked yet" msgstr "Noch nicht geprüft" -#: compensation/tables.py:109 intervention/tables.py:112 +#: compensation/tables.py:110 intervention/tables.py:112 msgid "Checked on {} by {}" msgstr "Am {} von {} geprüft worden" -#: compensation/tables.py:128 +#: compensation/tables.py:129 #: compensation/templates/compensation/detail/compensation/view.html:60 #: compensation/templates/compensation/detail/eco_account/view.html:47 #: ema/tables.py:101 ema/templates/ema/detail/view.html:31 @@ -337,39 +338,39 @@ msgstr "Am {} von {} geprüft worden" msgid "Not recorded yet" msgstr "Noch nicht verzeichnet" -#: compensation/tables.py:133 compensation/tables.py:260 ema/tables.py:106 +#: compensation/tables.py:134 compensation/tables.py:263 ema/tables.py:106 #: intervention/models.py:384 intervention/tables.py:136 msgid "Recorded on {} by {}" msgstr "Am {} von {} verzeichnet worden" -#: compensation/tables.py:156 compensation/tables.py:283 ema/tables.py:129 +#: compensation/tables.py:159 compensation/tables.py:286 ema/tables.py:129 #: intervention/tables.py:159 msgid "Full access granted" msgstr "Für Sie freigegeben - Datensatz kann bearbeitet werden" -#: compensation/tables.py:156 compensation/tables.py:283 ema/tables.py:129 +#: compensation/tables.py:159 compensation/tables.py:286 ema/tables.py:129 #: intervention/tables.py:159 msgid "Access not granted" msgstr "Nicht freigegeben - Datensatz nur lesbar" -#: compensation/tables.py:174 +#: compensation/tables.py:177 #: compensation/templates/compensation/detail/eco_account/view.html:35 #: konova/templates/konova/custom_widgets/progressbar.html:3 msgid "Available" msgstr "Verfügbar" -#: compensation/tables.py:200 +#: compensation/tables.py:203 msgid "Eco Accounts" msgstr "Ökokonten" -#: compensation/tables.py:222 +#: compensation/tables.py:225 #: compensation/templates/compensation/detail/eco_account/view.html:19 -#: intervention/forms.py:617 intervention/forms.py:624 +#: intervention/forms/modalForms.py:258 intervention/forms/modalForms.py:265 #: konova/templates/konova/home.html:88 templates/navbar.html:34 msgid "Eco-account" msgstr "Ökokonto" -#: compensation/tables.py:255 +#: compensation/tables.py:258 msgid "Not recorded yet. Can not be used for deductions, yet." msgstr "" "Noch nicht verzeichnet. Kann noch nicht für Abbuchungen genutzt werden." @@ -477,7 +478,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:378 +#: konova/forms.py:376 msgid "Add new document" msgstr "Neues Dokument hinzufügen" @@ -582,7 +583,7 @@ msgstr "Zuletzt bearbeitet" #: compensation/templates/compensation/detail/compensation/view.html:92 #: compensation/templates/compensation/detail/eco_account/view.html:91 -#: ema/templates/ema/detail/view.html:82 intervention/forms.py:398 +#: ema/templates/ema/detail/view.html:82 intervention/forms/modalForms.py:40 #: intervention/templates/intervention/detail/view.html:116 msgid "Shared with" msgstr "Freigegeben für" @@ -643,19 +644,19 @@ msgid "Missing" msgstr "Fehlt" #: compensation/templates/compensation/detail/eco_account/view.html:58 -#: ema/templates/ema/detail/view.html:42 intervention/forms.py:96 +#: ema/templates/ema/detail/view.html:42 intervention/forms/forms.py:98 #: intervention/templates/intervention/detail/view.html:56 msgid "Conservation office" msgstr "Eintragungsstelle" #: compensation/templates/compensation/detail/eco_account/view.html:62 -#: ema/templates/ema/detail/view.html:46 intervention/forms.py:122 +#: ema/templates/ema/detail/view.html:46 intervention/forms/forms.py:125 #: intervention/templates/intervention/detail/view.html:60 msgid "Conservation office file number" msgstr "Aktenzeichen Eintragungsstelle" #: compensation/templates/compensation/detail/eco_account/view.html:66 -#: ema/templates/ema/detail/view.html:50 intervention/forms.py:133 +#: ema/templates/ema/detail/view.html:50 intervention/forms/forms.py:137 #: intervention/templates/intervention/detail/view.html:64 msgid "Intervention handler" msgstr "Eingriffsverursacher" @@ -667,7 +668,7 @@ msgstr "" #: compensation/views/compensation_views.py:123 #: compensation/views/eco_account_views.py:190 ema/views.py:128 -#: intervention/views.py:409 +#: intervention/views.py:428 msgid "Log" msgstr "Log" @@ -677,7 +678,7 @@ msgstr "Kompensation entfernt" #: compensation/views/compensation_views.py:163 #: compensation/views/eco_account_views.py:289 ema/views.py:250 -#: intervention/views.py:105 +#: intervention/views.py:124 msgid "Document added" msgstr "Dokument hinzugefügt" @@ -713,16 +714,16 @@ msgid "Deduction removed" msgstr "Abbuchung entfernt" #: compensation/views/eco_account_views.py:210 ema/views.py:171 -#: intervention/views.py:449 +#: intervention/views.py:468 msgid "{} unrecorded" msgstr "{} entzeichnet" #: compensation/views/eco_account_views.py:210 ema/views.py:171 -#: intervention/views.py:449 +#: intervention/views.py:468 msgid "{} recorded" msgstr "{} verzeichnet" -#: compensation/views/eco_account_views.py:346 intervention/views.py:431 +#: compensation/views/eco_account_views.py:346 intervention/views.py:450 msgid "Deduction added" msgstr "Abbuchung hinzugefügt" @@ -774,133 +775,133 @@ msgstr "Gemarkung" msgid "Search for district" msgstr "Nach Gemarkung suchen" -#: intervention/forms.py:35 +#: intervention/forms/forms.py:30 msgid "Generated automatically" msgstr "Automatisch generiert" -#: intervention/forms.py:40 +#: intervention/forms/forms.py:41 msgid "An explanatory name" msgstr "Aussagekräftiger Titel" -#: intervention/forms.py:44 +#: intervention/forms/forms.py:45 msgid "Construction XY; Location ABC" msgstr "Bauvorhaben XY; Flur ABC" -#: intervention/forms.py:49 +#: intervention/forms/forms.py:51 #: intervention/templates/intervention/detail/view.html:35 msgid "Process type" msgstr "Verfahrenstyp" -#: intervention/forms.py:65 +#: intervention/forms/forms.py:67 #: intervention/templates/intervention/detail/view.html:39 msgid "Law" msgstr "Gesetz" -#: intervention/forms.py:67 +#: intervention/forms/forms.py:69 msgid "Multiple selection possible" msgstr "Mehrfachauswahl möglich" -#: intervention/forms.py:81 +#: intervention/forms/forms.py:83 #: intervention/templates/intervention/detail/view.html:48 msgid "Registration office" msgstr "Zulassungsbehörde" -#: intervention/forms.py:111 +#: intervention/forms/forms.py:113 #: intervention/templates/intervention/detail/view.html:52 msgid "Registration office file number" msgstr "Aktenzeichen Zulassungsbehörde" -#: intervention/forms.py:117 +#: intervention/forms/forms.py:119 msgid "ZB-123/ABC.456" msgstr "" -#: intervention/forms.py:128 +#: intervention/forms/forms.py:131 msgid "ETS-123/ABC.456" msgstr "" -#: intervention/forms.py:137 +#: intervention/forms/forms.py:141 msgid "Who performs the intervention" msgstr "Wer führt den Eingriff durch" -#: intervention/forms.py:140 +#: intervention/forms/forms.py:144 msgid "Company Mustermann" msgstr "Firma Mustermann" -#: intervention/forms.py:145 +#: intervention/forms/forms.py:150 #: intervention/templates/intervention/detail/view.html:96 msgid "Registration date" msgstr "Datum Zulassung bzw. Satzungsbeschluss" -#: intervention/forms.py:156 +#: intervention/forms/forms.py:162 #: intervention/templates/intervention/detail/view.html:100 msgid "Binding on" msgstr "Datum Bestandskraft" -#: intervention/forms.py:170 +#: intervention/forms/forms.py:177 msgid "Additional comment" msgstr "Zusätzlicher Kommentar" -#: intervention/forms.py:184 +#: intervention/forms/forms.py:188 msgid "New intervention" msgstr "Neuer Eingriff" -#: intervention/forms.py:265 +#: intervention/forms/forms.py:269 msgid "Edit intervention" msgstr "Eingriff bearbeiten" -#: intervention/forms.py:387 +#: intervention/forms/modalForms.py:28 msgid "Share link" msgstr "Freigabelink" -#: intervention/forms.py:389 +#: intervention/forms/modalForms.py:30 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.py:401 +#: intervention/forms/modalForms.py:43 msgid "Remove check to remove access for this user" msgstr "Wählen Sie die Nutzer ab, die keinen Zugriff mehr haben sollen" -#: intervention/forms.py:412 +#: intervention/forms/modalForms.py:54 #: intervention/templates/intervention/detail/includes/controls.html:15 msgid "Share" msgstr "Freigabe" -#: intervention/forms.py:413 +#: intervention/forms/modalForms.py:55 msgid "Share settings for {}" msgstr "Freigabe Einstellungen für {}" -#: intervention/forms.py:466 +#: intervention/forms/modalForms.py:108 msgid "Date of revocation" msgstr "Datum des Widerspruchs" -#: intervention/forms.py:476 +#: intervention/forms/modalForms.py:119 #: intervention/templates/intervention/detail/includes/revocation.html:35 msgid "Document" msgstr "Dokument" -#: intervention/forms.py:479 konova/forms.py:345 +#: intervention/forms/modalForms.py:122 konova/forms.py:345 msgid "Must be smaller than 15 Mb" msgstr "Muss kleiner als 15 Mb sein" -#: intervention/forms.py:505 +#: intervention/forms/modalForms.py:146 #: intervention/templates/intervention/detail/includes/revocation.html:18 msgid "Add revocation" msgstr "Widerspruch hinzufügen" -#: intervention/forms.py:545 +#: intervention/forms/modalForms.py:186 msgid "Checked intervention data" msgstr "Eingriffsdaten geprüft" -#: intervention/forms.py:551 +#: intervention/forms/modalForms.py:192 msgid "Checked compensations data and payments" msgstr "Kompensationen und Zahlungen geprüft" -#: intervention/forms.py:559 +#: intervention/forms/modalForms.py:200 #: intervention/templates/intervention/detail/includes/controls.html:19 msgid "Run check" msgstr "Prüfung vornehmen" -#: intervention/forms.py:560 konova/forms.py:432 +#: intervention/forms/modalForms.py:201 konova/forms.py:430 msgid "" "I, {} {}, confirm that all necessary control steps have been performed by " "myself." @@ -908,30 +909,30 @@ msgstr "" "Ich, {} {}, bestätige, dass die notwendigen Kontrollschritte durchgeführt " "wurden:" -#: intervention/forms.py:619 +#: intervention/forms/modalForms.py:260 msgid "Only recorded accounts can be selected for deductions" msgstr "Nur verzeichnete Ökokonten können für Abbuchungen verwendet werden." -#: intervention/forms.py:638 intervention/forms.py:645 +#: 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.py:640 +#: intervention/forms/modalForms.py:286 msgid "Only shared interventions can be selected" msgstr "Nur freigegebene Eingriffe können gewählt werden" -#: intervention/forms.py:656 +#: intervention/forms/modalForms.py:299 msgid "New Deduction" msgstr "Neue Abbuchung" -#: intervention/forms.py:657 +#: intervention/forms/modalForms.py:300 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.py:693 +#: intervention/forms/modalForms.py:336 msgid "" "Eco-account {} is not recorded yet. You can only deduct from recorded " "accounts." @@ -939,7 +940,7 @@ msgstr "" "Ökokonto {} ist noch nicht verzeichnet. Abbuchungen können nur von " "verzeichneten Ökokonten erfolgen." -#: intervention/forms.py:706 +#: intervention/forms/modalForms.py:349 msgid "" "The account {} has not enough surface for a deduction of {} m². There are " "only {} m² left" @@ -1049,22 +1050,22 @@ 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" +"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:239 +#: intervention/views.py:79 intervention/views.py:258 msgid "Invalid input" msgstr "Eingabe fehlerhaft" -#: intervention/views.py:193 +#: intervention/views.py:212 msgid "This intervention has a revocation from {}" msgstr "Es existiert ein Widerspruch vom {}" -#: intervention/views.py:209 +#: intervention/views.py:228 msgid "" "Remember: This data has not been shared with you, yet. This means you can " "only read but can not edit or perform any actions like running a check or " @@ -1074,43 +1075,43 @@ msgstr "" "bedeutet, dass Sie nur lesenden Zugriff hierauf haben und weder bearbeiten, " "noch Prüfungen durchführen oder verzeichnen können." -#: intervention/views.py:236 +#: intervention/views.py:255 msgid "Intervention {} edited" msgstr "Eingriff {} bearbeitet" -#: intervention/views.py:268 +#: intervention/views.py:287 msgid "{} removed" msgstr "{} entfernt" -#: intervention/views.py:289 +#: intervention/views.py:308 msgid "Revocation removed" msgstr "Widerspruch entfernt" -#: intervention/views.py:315 +#: intervention/views.py:334 msgid "{} has already been shared with you" msgstr "{} wurde bereits für Sie freigegeben" -#: intervention/views.py:320 +#: intervention/views.py:339 msgid "{} has been shared with you" msgstr "{} ist nun für Sie freigegeben" -#: intervention/views.py:327 +#: intervention/views.py:346 msgid "Share link invalid" msgstr "Freigabelink ungültig" -#: intervention/views.py:348 +#: intervention/views.py:367 msgid "Share settings updated" msgstr "Freigabe Einstellungen aktualisiert" -#: intervention/views.py:367 +#: intervention/views.py:386 msgid "Check performed" msgstr "Prüfung durchgeführt" -#: intervention/views.py:387 +#: intervention/views.py:406 msgid "Revocation added" msgstr "Widerspruch hinzugefügt" -#: intervention/views.py:454 +#: intervention/views.py:473 msgid "There are errors on this intervention:" msgstr "Es liegen Fehler in diesem Eingriff vor:" @@ -1135,35 +1136,35 @@ msgstr "" msgid "You need to be part of another user group." msgstr "Hierfür müssen Sie einer anderen Nutzergruppe angehören!" -#: konova/forms.py:75 +#: konova/forms.py:69 msgid "Not editable" msgstr "Nicht editierbar" -#: konova/forms.py:145 konova/forms.py:299 +#: konova/forms.py:139 konova/forms.py:293 msgid "Confirm" msgstr "Bestätige" -#: konova/forms.py:157 konova/forms.py:308 +#: konova/forms.py:151 konova/forms.py:302 msgid "Remove" msgstr "Löschen" -#: konova/forms.py:159 +#: konova/forms.py:153 msgid "You are about to remove {} {}" msgstr "Sie sind dabei {} {} zu löschen" -#: konova/forms.py:249 templates/form/main_data_collapse_form.html:47 +#: konova/forms.py:243 templates/form/main_data_collapse_form.html:47 msgid "Geometry" msgstr "Geometrie" -#: konova/forms.py:309 +#: konova/forms.py:303 msgid "Are you sure?" msgstr "Sind Sie sicher?" -#: konova/forms.py:331 +#: konova/forms.py:330 msgid "Created on" msgstr "Erstellt" -#: konova/forms.py:333 +#: konova/forms.py:332 msgid "When has this file been created? Important for photos." msgstr "Wann wurde diese Datei erstellt oder das Foto aufgenommen?" @@ -1172,27 +1173,27 @@ msgstr "Wann wurde diese Datei erstellt oder das Foto aufgenommen?" msgid "File" msgstr "Datei" -#: konova/forms.py:409 +#: konova/forms.py:407 msgid "Added document" msgstr "Dokument hinzugefügt" -#: konova/forms.py:423 +#: konova/forms.py:421 msgid "Confirm record" msgstr "Verzeichnen bestätigen" -#: konova/forms.py:431 +#: konova/forms.py:429 msgid "Record data" msgstr "Daten verzeichnen" -#: konova/forms.py:438 +#: konova/forms.py:436 msgid "Confirm unrecord" msgstr "Entzeichnen bestätigen" -#: konova/forms.py:439 +#: konova/forms.py:437 msgid "Unrecord data" msgstr "Daten entzeichnen" -#: konova/forms.py:440 +#: konova/forms.py:438 msgid "I, {} {}, confirm that this data must be unrecorded." msgstr "" "Ich, {} {}, bestätige, dass diese Daten wieder entzeichnet werden müssen." @@ -1237,6 +1238,10 @@ msgstr "Kontrolle am" msgid "Other" msgstr "Sonstige" +#: konova/templates/konova/custom_widgets/generate-content-input.html:6 +msgid "Generate new" +msgstr "Neu generieren" + #: konova/templates/konova/custom_widgets/text-to-clipboard-input.html:6 msgid "Copy to clipboard" msgstr "In Zwischenablage kopieren"