Intervention revocation
* adds Revocation model to interventions/models.py * adds revocations to interventions detail view * fixes duplicated ids in html includes * refactors controls for detail view into included template files (controls.html) * reduces max length for payment transfer notes from 1000 to 200 * adds RevocationAdmin to intervention/admin.py * adds new form for adding a Revocation to an intervention's legal_data * only one revocation per intervention possible * removes add button in case of an existing revocation * adds revocation routes to intervention app * renames document field in Document model into file for more clarity * adds/updates translations
This commit is contained in:
		
							parent
							
								
									fd526b80b7
								
							
						
					
					
						commit
						8e1f679c2a
					
				@ -47,7 +47,7 @@ class NewPaymentForm(BaseModalForm):
 | 
			
		||||
        )
 | 
			
		||||
    )
 | 
			
		||||
    transfer_note = forms.CharField(
 | 
			
		||||
        max_length=1000,
 | 
			
		||||
        max_length=200,
 | 
			
		||||
        required=False,
 | 
			
		||||
        label_suffix=_(""),
 | 
			
		||||
        label=_("Transfer note"),
 | 
			
		||||
@ -55,7 +55,6 @@ class NewPaymentForm(BaseModalForm):
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    def __init__(self, *args, **kwargs):
 | 
			
		||||
        self.template = "modal/modal_form.html"
 | 
			
		||||
        super().__init__(*args, **kwargs)
 | 
			
		||||
        self.intervention = self.instance
 | 
			
		||||
        self.form_title = _("Payment")
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
{% load i18n l10n fontawesome_5 humanize %}
 | 
			
		||||
<div id="related-documents" class="card">
 | 
			
		||||
<div id="actions" class="card">
 | 
			
		||||
    <div class="card-header rlp-r">
 | 
			
		||||
        <div class="row">
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,26 @@
 | 
			
		||||
{% load i18n l10n fontawesome_5 %}
 | 
			
		||||
 | 
			
		||||
<div class="d-flex justify-content-end">
 | 
			
		||||
    <a href="{% url 'home' %}" class="mr-2">
 | 
			
		||||
        <button class="btn btn-default" title="{% trans 'Open in LANIS' %}">
 | 
			
		||||
            LANIS
 | 
			
		||||
        </button>
 | 
			
		||||
    </a>
 | 
			
		||||
    <a href="{% url 'home' %}" class="mr-2">
 | 
			
		||||
        <button class="btn btn-default" title="{% trans 'Public report' %}">
 | 
			
		||||
            {% fa5_icon 'file-alt' %}
 | 
			
		||||
        </button>
 | 
			
		||||
    </a>
 | 
			
		||||
    {% if has_access %}
 | 
			
		||||
    {% if is_default_member %}
 | 
			
		||||
    <a href="{% url 'home' %}" class="mr-2">
 | 
			
		||||
        <button class="btn btn-default" title="{% trans 'Edit' %}">
 | 
			
		||||
            {% fa5_icon 'edit' %}
 | 
			
		||||
        </button>
 | 
			
		||||
    </a>
 | 
			
		||||
    <button class="btn btn-default btn-modal" data-form-url="{% url 'compensation:remove' comp.id %}" title="{% trans 'Delete' %}">
 | 
			
		||||
        {% fa5_icon 'trash' %}
 | 
			
		||||
    </button>
 | 
			
		||||
    {% endif %}
 | 
			
		||||
    {% endif %}
 | 
			
		||||
</div>
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
{% load i18n l10n fontawesome_5 %}
 | 
			
		||||
<div id="related-documents" class="card">
 | 
			
		||||
<div id="deadlines" class="card">
 | 
			
		||||
    <div class="card-header rlp-r">
 | 
			
		||||
        <div class="row">
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
{% load i18n l10n fontawesome_5 %}
 | 
			
		||||
<div id="related-documents" class="card">
 | 
			
		||||
<div id="documents" class="card">
 | 
			
		||||
    <div class="card-header rlp-r">
 | 
			
		||||
        <div class="row">
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
{% load i18n l10n fontawesome_5 %}
 | 
			
		||||
<div id="related-documents" class="card">
 | 
			
		||||
<div id="states-after" class="card">
 | 
			
		||||
    <div class="card-header rlp-r">
 | 
			
		||||
        <div class="row">
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
{% load i18n l10n fontawesome_5 %}
 | 
			
		||||
<div id="related-documents" class="card">
 | 
			
		||||
<div id="states-before" class="card">
 | 
			
		||||
    <div class="card-header rlp-r">
 | 
			
		||||
        <div class="row">
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
 | 
			
		||||
@ -12,30 +12,7 @@
 | 
			
		||||
            <h3>{% trans 'Compensation' %} {{comp.identifier}}</h3>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="col-sm-12 col-md-12 col-lg-6">
 | 
			
		||||
            <div class="d-flex justify-content-end">
 | 
			
		||||
                <a href="{% url 'home' %}" class="mr-2">
 | 
			
		||||
                    <button class="btn btn-default" title="{% trans 'Open in LANIS' %}">
 | 
			
		||||
                        LANIS
 | 
			
		||||
                    </button>
 | 
			
		||||
                </a>
 | 
			
		||||
                <a href="{% url 'home' %}" class="mr-2">
 | 
			
		||||
                    <button class="btn btn-default" title="{% trans 'Public report' %}">
 | 
			
		||||
                        {% fa5_icon 'file-alt' %}
 | 
			
		||||
                    </button>
 | 
			
		||||
                </a>
 | 
			
		||||
                {% if has_access %}
 | 
			
		||||
                {% if is_default_member %}
 | 
			
		||||
                <a href="{% url 'home' %}" class="mr-2">
 | 
			
		||||
                    <button class="btn btn-default" title="{% trans 'Edit' %}">
 | 
			
		||||
                        {% fa5_icon 'edit' %}
 | 
			
		||||
                    </button>
 | 
			
		||||
                </a>
 | 
			
		||||
                <button class="btn btn-default btn-modal" data-form-url="{% url 'compensation:remove' comp.id %}" title="{% trans 'Delete' %}">
 | 
			
		||||
                    {% fa5_icon 'trash' %}
 | 
			
		||||
                </button>
 | 
			
		||||
                {% endif %}
 | 
			
		||||
                {% endif %}
 | 
			
		||||
            </div>
 | 
			
		||||
            {% include 'compensation/detail/includes/controls.html' %}
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <hr>
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
from django.contrib import admin
 | 
			
		||||
 | 
			
		||||
from intervention.models import Intervention, ResponsibilityData, LegalData
 | 
			
		||||
from intervention.models import Intervention, ResponsibilityData, LegalData, Revocation
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class InterventionAdmin(admin.ModelAdmin):
 | 
			
		||||
@ -33,6 +33,16 @@ class LegalAdmin(admin.ModelAdmin):
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class RevocationAdmin(admin.ModelAdmin):
 | 
			
		||||
    list_display = [
 | 
			
		||||
        "id",
 | 
			
		||||
        "date",
 | 
			
		||||
        "comment",
 | 
			
		||||
        "created",
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
admin.site.register(Intervention, InterventionAdmin)
 | 
			
		||||
admin.site.register(ResponsibilityData, ResponsibilityAdmin)
 | 
			
		||||
admin.site.register(LegalData, LegalAdmin)
 | 
			
		||||
admin.site.register(Revocation, RevocationAdmin)
 | 
			
		||||
 | 
			
		||||
@ -14,7 +14,7 @@ from django.db import transaction
 | 
			
		||||
from django.urls import reverse
 | 
			
		||||
from django.utils.translation import gettext_lazy as _
 | 
			
		||||
 | 
			
		||||
from intervention.models import Intervention
 | 
			
		||||
from intervention.models import Intervention, Revocation
 | 
			
		||||
from konova.forms import BaseForm, BaseModalForm
 | 
			
		||||
from konova.models import Document
 | 
			
		||||
from konova.settings import DEFAULT_LAT, DEFAULT_LON, DEFAULT_ZOOM, ZB_GROUP, ETS_GROUP
 | 
			
		||||
@ -315,3 +315,71 @@ class ShareInterventionForm(BaseModalForm):
 | 
			
		||||
            id__in=self.cleaned_data["users"]
 | 
			
		||||
        )
 | 
			
		||||
        self.instance.users.set(accessing_users)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class NewRevocationForm(BaseModalForm):
 | 
			
		||||
    date = forms.DateField(
 | 
			
		||||
        label=_("Date"),
 | 
			
		||||
        label_suffix=_(""),
 | 
			
		||||
        help_text=_("Date of revocation"),
 | 
			
		||||
        widget=forms.DateInput(
 | 
			
		||||
            attrs={
 | 
			
		||||
                "type": "date",
 | 
			
		||||
                "data-provide": "datepicker",
 | 
			
		||||
            },
 | 
			
		||||
            format="%d.%m.%Y"
 | 
			
		||||
        )
 | 
			
		||||
    )
 | 
			
		||||
    file = forms.FileField(
 | 
			
		||||
        label=_("Document"),
 | 
			
		||||
        label_suffix=_(""),
 | 
			
		||||
        help_text=_("Must be smaller than 15 Mb"),
 | 
			
		||||
        widget=forms.FileInput(
 | 
			
		||||
            attrs={
 | 
			
		||||
                "class": "w-75"
 | 
			
		||||
            }
 | 
			
		||||
        )
 | 
			
		||||
    )
 | 
			
		||||
    comment = forms.CharField(
 | 
			
		||||
        required=False,
 | 
			
		||||
        max_length=200,
 | 
			
		||||
        label=_("Comment"),
 | 
			
		||||
        label_suffix=_(""),
 | 
			
		||||
        help_text=_("Additional comment, maximum {} letters").format(200),
 | 
			
		||||
        widget=forms.Textarea(
 | 
			
		||||
            attrs={
 | 
			
		||||
                "cols": 30,
 | 
			
		||||
                "rows": 5,
 | 
			
		||||
            }
 | 
			
		||||
        )
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    def __init__(self, *args, **kwargs):
 | 
			
		||||
        super().__init__(*args, **kwargs)
 | 
			
		||||
        self.form_title = _("Add revocation")
 | 
			
		||||
        self.form_caption = ""
 | 
			
		||||
        self.form_attrs = {
 | 
			
		||||
            "enctype": "multipart/form-data",  # important for file upload
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    def save(self):
 | 
			
		||||
        with transaction.atomic():
 | 
			
		||||
            user_action = UserActionLogEntry.objects.create(
 | 
			
		||||
                user=self.user,
 | 
			
		||||
                action=UserAction.CREATED
 | 
			
		||||
            )
 | 
			
		||||
            document = Document.objects.create(
 | 
			
		||||
                title="revocation_of_{}".format(self.instance.identifier),
 | 
			
		||||
                date_of_creation=self.cleaned_data["date"],
 | 
			
		||||
                comment=self.cleaned_data["comment"],
 | 
			
		||||
                file=self.cleaned_data["file"],
 | 
			
		||||
            )
 | 
			
		||||
            revocation = Revocation.objects.create(
 | 
			
		||||
                date=self.cleaned_data["date"],
 | 
			
		||||
                comment=self.cleaned_data["comment"],
 | 
			
		||||
                document=document,
 | 
			
		||||
                created=user_action,
 | 
			
		||||
            )
 | 
			
		||||
            self.instance.legal.revocation = revocation
 | 
			
		||||
            self.instance.legal.save()
 | 
			
		||||
        return revocation
 | 
			
		||||
 | 
			
		||||
@ -12,7 +12,7 @@ from django.utils import timezone
 | 
			
		||||
from django.utils.timezone import now
 | 
			
		||||
 | 
			
		||||
from intervention.settings import INTERVENTION_IDENTIFIER_LENGTH, INTERVENTION_IDENTIFIER_TEMPLATE
 | 
			
		||||
from konova.models import BaseObject, Geometry, UuidModel
 | 
			
		||||
from konova.models import BaseObject, Geometry, UuidModel, BaseResource
 | 
			
		||||
from konova.utils import generators
 | 
			
		||||
from konova.utils.generators import generate_random_string
 | 
			
		||||
from organisation.models import Organisation
 | 
			
		||||
@ -38,6 +38,20 @@ class ResponsibilityData(UuidModel):
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Revocation(BaseResource):
 | 
			
		||||
    """
 | 
			
		||||
    Holds revocation data e.g. for intervention objects
 | 
			
		||||
    """
 | 
			
		||||
    date = models.DateField(null=True, blank=True, help_text="Revocation from")
 | 
			
		||||
    comment = models.TextField(null=True, blank=True)
 | 
			
		||||
    document = models.ForeignKey("konova.Document", blank=True, null=True, on_delete=models.SET_NULL)
 | 
			
		||||
 | 
			
		||||
    def delete(self):
 | 
			
		||||
        # Make sure related objects are being removed as well
 | 
			
		||||
        self.document.delete()
 | 
			
		||||
        super().delete()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class LegalData(UuidModel):
 | 
			
		||||
    """
 | 
			
		||||
    Holds intervention legal data such as important dates, laws or responsible handler
 | 
			
		||||
@ -51,6 +65,8 @@ class LegalData(UuidModel):
 | 
			
		||||
    process_type = models.CharField(max_length=500, null=True, blank=True)
 | 
			
		||||
    law = models.CharField(max_length=500, null=True, blank=True)
 | 
			
		||||
 | 
			
		||||
    revocation = models.ForeignKey(Revocation, null=True, blank=True, help_text="Refers to 'Widerspruch am'", on_delete=models.SET_NULL)
 | 
			
		||||
 | 
			
		||||
    def __str__(self):
 | 
			
		||||
        return "{} | {} | {}".format(
 | 
			
		||||
            self.process_type,
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
{% load i18n l10n fontawesome_5 %}
 | 
			
		||||
<div id="related-compensations" class="card">
 | 
			
		||||
<div id="compensations" class="card">
 | 
			
		||||
    <div class="card-header rlp-r">
 | 
			
		||||
        <div class="row">
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,43 @@
 | 
			
		||||
{% load i18n l10n fontawesome_5 %}
 | 
			
		||||
 | 
			
		||||
<div class="d-flex justify-content-end">
 | 
			
		||||
    <a href="{% url 'home' %}" class="mr-2">
 | 
			
		||||
        <button class="btn btn-default" title="{% trans 'Open in LANIS' %}">
 | 
			
		||||
            LANIS
 | 
			
		||||
        </button>
 | 
			
		||||
    </a>
 | 
			
		||||
    <a href="{% url 'home' %}" class="mr-2">
 | 
			
		||||
        <button class="btn btn-default" title="{% trans 'Public report' %}">
 | 
			
		||||
            {% fa5_icon 'file-alt' %}
 | 
			
		||||
        </button>
 | 
			
		||||
    </a>
 | 
			
		||||
    {% if has_access %}
 | 
			
		||||
    <button class="btn btn-default btn-modal mr-2" title="{% trans 'Share' %}" data-form-url="{% url 'intervention:share-create' intervention.id %}">
 | 
			
		||||
        {% fa5_icon 'share-alt' %}
 | 
			
		||||
    </button>
 | 
			
		||||
    {% if is_zb_member %}
 | 
			
		||||
    <a href="{% url 'home' %}" class="mr-2">
 | 
			
		||||
        <button class="btn btn-default" title="{% trans 'Run check' %}">
 | 
			
		||||
            {% fa5_icon 'star' %}
 | 
			
		||||
        </button>
 | 
			
		||||
    </a>
 | 
			
		||||
    {% endif %}
 | 
			
		||||
    {% if is_ets_member %}
 | 
			
		||||
    <a href="{% url 'home' %}" class="mr-2">
 | 
			
		||||
        <button class="btn btn-default" title="{% trans 'Record' %}">
 | 
			
		||||
            {% fa5_icon 'bookmark' %}
 | 
			
		||||
        </button>
 | 
			
		||||
    </a>
 | 
			
		||||
    {% endif %}
 | 
			
		||||
    {% if is_default_member %}
 | 
			
		||||
    <a href="{% url 'home' %}" class="mr-2">
 | 
			
		||||
        <button class="btn btn-default" title="{% trans 'Edit' %}">
 | 
			
		||||
            {% fa5_icon 'edit' %}
 | 
			
		||||
        </button>
 | 
			
		||||
    </a>
 | 
			
		||||
    <button class="btn btn-default btn-modal" data-form-url="{% url 'intervention:remove' intervention.id %}" title="{% trans 'Delete' %}">
 | 
			
		||||
        {% fa5_icon 'trash' %}
 | 
			
		||||
    </button>
 | 
			
		||||
    {% endif %}
 | 
			
		||||
    {% endif %}
 | 
			
		||||
</div>
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
{% load i18n l10n fontawesome_5 %}
 | 
			
		||||
<div id="related-documents" class="card">
 | 
			
		||||
<div id="documents" class="card">
 | 
			
		||||
    <div class="card-header rlp-r">
 | 
			
		||||
        <div class="row">
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
{% load i18n l10n fontawesome_5 %}
 | 
			
		||||
<div id="related-eco-account-withdraws" class="card">
 | 
			
		||||
<div id="eco-account-withdraws" class="card">
 | 
			
		||||
    <div class="card-header rlp-r">
 | 
			
		||||
        <div class="row">
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
{% load i18n l10n fontawesome_5 %}
 | 
			
		||||
<div id="related-payments" class="card">
 | 
			
		||||
<div id="payments" class="card">
 | 
			
		||||
    <div class="card-header rlp-r">
 | 
			
		||||
        <div class="row">
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,70 @@
 | 
			
		||||
{% load i18n l10n fontawesome_5 %}
 | 
			
		||||
<div id="revocation" class="card">
 | 
			
		||||
    <div class="card-header rlp-r">
 | 
			
		||||
        <div class="row">
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
                <h5>
 | 
			
		||||
                    <span class="badge badge-light">{% if intervention.legal.revocation %}1{% else %}0{% endif %}</span>
 | 
			
		||||
                    {% trans 'Revocation' %}
 | 
			
		||||
                </h5>
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="col-sm-6">
 | 
			
		||||
                <div class="d-flex justify-content-end">
 | 
			
		||||
                    {% comment %}
 | 
			
		||||
                        Only show add-button if no revocation exists, yet.
 | 
			
		||||
                    {% endcomment %}
 | 
			
		||||
                    {% if is_default_member and has_access and not intervention.legal.revocation %}
 | 
			
		||||
                    <button class="btn btn-outline-default btn-modal" data-form-url="{% url 'intervention:revocation-new' intervention.id %}" title="{% trans 'Add revocation' %}">
 | 
			
		||||
                        {% fa5_icon 'plus' %}
 | 
			
		||||
                        {% fa5_icon 'ban' %}
 | 
			
		||||
                    </button>
 | 
			
		||||
                    {% endif %}
 | 
			
		||||
                </div>
 | 
			
		||||
            </div>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="card-body scroll-300">
 | 
			
		||||
        <table class="table table-hover">
 | 
			
		||||
            <thead>
 | 
			
		||||
            <tr>
 | 
			
		||||
                <th scope="col">
 | 
			
		||||
                    {% trans 'From' context 'Revocation' %}
 | 
			
		||||
                </th>
 | 
			
		||||
                <th scope="col">
 | 
			
		||||
                    {% trans 'Comment' %}
 | 
			
		||||
                </th>
 | 
			
		||||
                <th scope="col">
 | 
			
		||||
                    {% trans 'Document' %}
 | 
			
		||||
                </th>
 | 
			
		||||
                <th scope="col">
 | 
			
		||||
                    {% trans 'Action' %}
 | 
			
		||||
                </th>
 | 
			
		||||
            </tr>
 | 
			
		||||
            </thead>
 | 
			
		||||
            <tbody>
 | 
			
		||||
            {% if intervention.legal.revocation %}
 | 
			
		||||
            {% with intervention.legal.revocation as rev %}
 | 
			
		||||
            <tr>
 | 
			
		||||
                <td class="align-middle">
 | 
			
		||||
                    {{ rev.date }}
 | 
			
		||||
                </td>
 | 
			
		||||
                <td class="align-middle">{{ rev.comment }}</td>
 | 
			
		||||
                <td class="align-middle">
 | 
			
		||||
                    <a href="{% url 'doc-open' rev.document.id %}">
 | 
			
		||||
                        {{ rev.document.file }}
 | 
			
		||||
                    </a>
 | 
			
		||||
                </td>
 | 
			
		||||
                <td>
 | 
			
		||||
                    {% if is_default_member and has_access  %}
 | 
			
		||||
                    <button data-form-url="{% url 'intervention:revocation-remove' rev.id %}" class="btn btn-default btn-modal" title="{% trans 'Remove revocation' %}">
 | 
			
		||||
                        {% fa5_icon 'trash' %}
 | 
			
		||||
                    </button>
 | 
			
		||||
                    {% endif %}
 | 
			
		||||
                </td>
 | 
			
		||||
            </tr>
 | 
			
		||||
            {% endwith %}
 | 
			
		||||
            {% endif %}
 | 
			
		||||
            </tbody>
 | 
			
		||||
        </table>
 | 
			
		||||
    </div>
 | 
			
		||||
</div>
 | 
			
		||||
@ -12,47 +12,7 @@
 | 
			
		||||
            <h3>{% trans 'Intervention' %} {{intervention.identifier}}</h3>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="col-sm-12 col-md-12 col-lg-6">
 | 
			
		||||
            <div class="d-flex justify-content-end">
 | 
			
		||||
                <a href="{% url 'home' %}" class="mr-2">
 | 
			
		||||
                    <button class="btn btn-default" title="{% trans 'Open in LANIS' %}">
 | 
			
		||||
                        LANIS
 | 
			
		||||
                    </button>
 | 
			
		||||
                </a>
 | 
			
		||||
                <a href="{% url 'home' %}" class="mr-2">
 | 
			
		||||
                    <button class="btn btn-default" title="{% trans 'Public report' %}">
 | 
			
		||||
                        {% fa5_icon 'file-alt' %}
 | 
			
		||||
                    </button>
 | 
			
		||||
                </a>
 | 
			
		||||
                {% if has_access %}
 | 
			
		||||
                <button class="btn btn-default btn-modal mr-2" title="{% trans 'Share' %}" data-form-url="{% url 'intervention:share-create' intervention.id %}">
 | 
			
		||||
                    {% fa5_icon 'share-alt' %}
 | 
			
		||||
                </button>
 | 
			
		||||
                {% if is_zb_member %}
 | 
			
		||||
                <a href="{% url 'home' %}" class="mr-2">
 | 
			
		||||
                    <button class="btn btn-default" title="{% trans 'Run check' %}">
 | 
			
		||||
                        {% fa5_icon 'star' %}
 | 
			
		||||
                    </button>
 | 
			
		||||
                </a>
 | 
			
		||||
                {% endif %}
 | 
			
		||||
                {% if is_ets_member %}
 | 
			
		||||
                <a href="{% url 'home' %}" class="mr-2">
 | 
			
		||||
                    <button class="btn btn-default" title="{% trans 'Record' %}">
 | 
			
		||||
                        {% fa5_icon 'bookmark' %}
 | 
			
		||||
                    </button>
 | 
			
		||||
                </a>
 | 
			
		||||
                {% endif %}
 | 
			
		||||
                {% if is_default_member %}
 | 
			
		||||
                <a href="{% url 'home' %}" class="mr-2">
 | 
			
		||||
                    <button class="btn btn-default" title="{% trans 'Edit' %}">
 | 
			
		||||
                        {% fa5_icon 'edit' %}
 | 
			
		||||
                    </button>
 | 
			
		||||
                </a>
 | 
			
		||||
                <button class="btn btn-default btn-modal" data-form-url="{% url 'intervention:remove' intervention.id %}" title="{% trans 'Delete' %}">
 | 
			
		||||
                    {% fa5_icon 'trash' %}
 | 
			
		||||
                </button>
 | 
			
		||||
                {% endif %}
 | 
			
		||||
                {% endif %}
 | 
			
		||||
            </div>
 | 
			
		||||
            {% include 'intervention/detail/includes/controls.html' %}
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <hr>
 | 
			
		||||
@ -128,6 +88,10 @@
 | 
			
		||||
                        <th scope="row">{% trans 'Binding on' %}</th>
 | 
			
		||||
                        <td class="align-middle">{{intervention.legal.binding_date|default_if_none:""}}</td>
 | 
			
		||||
                    </tr>
 | 
			
		||||
                    <tr {% if intervention.legal.revocation %}class="alert alert-danger"{% endif %}>
 | 
			
		||||
                        <th scope="row">{% trans 'Revocation' %}</th>
 | 
			
		||||
                        <td class="align-middle">{{intervention.legal.revocation.date|naturalday|default_if_none:""}}</td>
 | 
			
		||||
                    </tr>
 | 
			
		||||
                    <tr>
 | 
			
		||||
                        <th scope="row">{% trans 'Last modified' %}</th>
 | 
			
		||||
                        <td class="align-middle">
 | 
			
		||||
@ -171,9 +135,16 @@
 | 
			
		||||
        <div class="col-sm-12 col-md-12 col-lg-6">
 | 
			
		||||
            {% include 'intervention/detail/includes/eco-account-withdraws.html' %}
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="col-sm-12 col-md-12 col-lg-6">
 | 
			
		||||
            {% include 'intervention/detail/includes/revocation.html' %}
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="row">
 | 
			
		||||
        <div class="col-sm-12 col-md-12 col-lg-6">
 | 
			
		||||
            {% include 'intervention/detail/includes/documents.html' %}
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="col-sm-12 col-md-12 col-lg-6">
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -8,7 +8,7 @@ Created on: 30.11.20
 | 
			
		||||
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
 | 
			
		||||
    create_share_view, remove_revocation_view, new_revocation_view
 | 
			
		||||
 | 
			
		||||
app_name = "intervention"
 | 
			
		||||
urlpatterns = [
 | 
			
		||||
@ -20,4 +20,8 @@ urlpatterns = [
 | 
			
		||||
    path('<id>/remove', remove_view, name='remove'),
 | 
			
		||||
    path('<id>/share/<token>', share_view, name='share'),
 | 
			
		||||
    path('<id>/share', create_share_view, name='share-create'),
 | 
			
		||||
 | 
			
		||||
    # Revocation routes
 | 
			
		||||
    path('<id>/revocation/new', new_revocation_view, name='revocation-new'),
 | 
			
		||||
    path('revocation/<id>/remove', remove_revocation_view, name='revocation-remove'),
 | 
			
		||||
]
 | 
			
		||||
@ -4,12 +4,14 @@ from django.utils.translation import gettext_lazy as _
 | 
			
		||||
from django.http import HttpRequest
 | 
			
		||||
from django.shortcuts import render, get_object_or_404
 | 
			
		||||
 | 
			
		||||
from intervention.forms import NewInterventionForm, EditInterventionForm, ShareInterventionForm
 | 
			
		||||
from intervention.models import Intervention
 | 
			
		||||
from intervention.forms import NewInterventionForm, EditInterventionForm, ShareInterventionForm, NewRevocationForm
 | 
			
		||||
from intervention.models import Intervention, Revocation
 | 
			
		||||
from intervention.tables import InterventionTable
 | 
			
		||||
from konova.contexts import BaseContext
 | 
			
		||||
from konova.decorators import *
 | 
			
		||||
from konova.forms import SimpleGeomForm, NewDocumentForm, RemoveModalForm
 | 
			
		||||
from konova.sub_settings.django_settings import DEFAULT_DATE_TIME_FORMAT, DEFAULT_DATE_FORMAT
 | 
			
		||||
from konova.utils.message_templates import FORM_INVALID
 | 
			
		||||
from konova.utils.user_checks import in_group
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -117,6 +119,14 @@ def open_view(request: HttpRequest, id: str):
 | 
			
		||||
        instance=intervention
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    # Inform user about revocation
 | 
			
		||||
    if intervention.legal.revocation:
 | 
			
		||||
        messages.error(
 | 
			
		||||
            request,
 | 
			
		||||
            _("This intervention has a revocation from {}").format(intervention.legal.revocation.date.strftime(DEFAULT_DATE_FORMAT)),
 | 
			
		||||
            extra_tags="danger",
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    context = {
 | 
			
		||||
        "intervention": intervention,
 | 
			
		||||
        "compensations": compensations,
 | 
			
		||||
@ -185,6 +195,26 @@ def remove_view(request: HttpRequest, id: str):
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@login_required
 | 
			
		||||
@default_group_required
 | 
			
		||||
def remove_revocation_view(request: HttpRequest, id: str):
 | 
			
		||||
    """ Renders a remove view for a revocation
 | 
			
		||||
 | 
			
		||||
    Args:
 | 
			
		||||
        request (HttpRequest): The incoming request
 | 
			
		||||
        id (str): The revocation's id as string
 | 
			
		||||
 | 
			
		||||
    Returns:
 | 
			
		||||
 | 
			
		||||
    """
 | 
			
		||||
    obj = Revocation.objects.get(id=id)
 | 
			
		||||
    form = RemoveModalForm(request.POST or None, instance=obj, user=request.user)
 | 
			
		||||
    return form.process_request(
 | 
			
		||||
        request,
 | 
			
		||||
        _("Revocation removed"),
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@login_required
 | 
			
		||||
def share_view(request: HttpRequest, id: str, token: str):
 | 
			
		||||
    """ Performs sharing of an intervention
 | 
			
		||||
@ -256,3 +286,40 @@ def create_share_view(request: HttpRequest, id: str):
 | 
			
		||||
        raise NotImplementedError
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@login_required
 | 
			
		||||
def new_revocation_view(request: HttpRequest, id: str):
 | 
			
		||||
    """ Renders sharing form for an intervention
 | 
			
		||||
 | 
			
		||||
    Args:
 | 
			
		||||
        request (HttpRequest): The incoming request
 | 
			
		||||
        id (str): Intervention's id
 | 
			
		||||
 | 
			
		||||
    Returns:
 | 
			
		||||
 | 
			
		||||
    """
 | 
			
		||||
    intervention = get_object_or_404(Intervention, id=id)
 | 
			
		||||
    form = NewRevocationForm(request.POST or None, request.FILES or None, instance=intervention, user=request.user)
 | 
			
		||||
    if request.method == "POST":
 | 
			
		||||
        if form.is_valid():
 | 
			
		||||
            form.save()
 | 
			
		||||
            messages.info(
 | 
			
		||||
                request,
 | 
			
		||||
                _("Revocation added")
 | 
			
		||||
            )
 | 
			
		||||
        else:
 | 
			
		||||
            messages.error(
 | 
			
		||||
                request,
 | 
			
		||||
                FORM_INVALID,
 | 
			
		||||
                extra_tags="danger",
 | 
			
		||||
            )
 | 
			
		||||
        return redirect(request.META.get("HTTP_REFERER", "home"))
 | 
			
		||||
    elif request.method == "GET":
 | 
			
		||||
        context = {
 | 
			
		||||
            "form": form,
 | 
			
		||||
        }
 | 
			
		||||
        context = BaseContext(request, context).context
 | 
			
		||||
        return render(request, form.template, context)
 | 
			
		||||
    else:
 | 
			
		||||
        raise NotImplementedError
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -300,7 +300,7 @@ class NewDocumentForm(BaseModalForm):
 | 
			
		||||
        self.form_caption = _("")
 | 
			
		||||
        self.template = "modal/modal_form.html"
 | 
			
		||||
        self.form_attrs = {
 | 
			
		||||
            "enctype": "multipart/form-data",
 | 
			
		||||
            "enctype": "multipart/form-data",  # important for file upload
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    def save(self):
 | 
			
		||||
 | 
			
		||||
@ -98,7 +98,7 @@ class Document(BaseResource):
 | 
			
		||||
    """
 | 
			
		||||
    title = models.CharField(max_length=500, null=True, blank=True)
 | 
			
		||||
    date_of_creation = models.DateField()
 | 
			
		||||
    document = models.FileField()
 | 
			
		||||
    file = models.FileField()
 | 
			
		||||
    comment = models.TextField()
 | 
			
		||||
 | 
			
		||||
    def delete(self, using=None, keep_parents=False):
 | 
			
		||||
@ -111,7 +111,7 @@ class Document(BaseResource):
 | 
			
		||||
        Returns:
 | 
			
		||||
 | 
			
		||||
        """
 | 
			
		||||
        os.remove(self.document.file.name)
 | 
			
		||||
        os.remove(self.file.file.name)
 | 
			
		||||
        super().delete(using=using, keep_parents=keep_parents)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -38,8 +38,8 @@ ALLOWED_HOSTS = []
 | 
			
		||||
LOGIN_URL = "/login/"
 | 
			
		||||
 | 
			
		||||
# Session settings
 | 
			
		||||
SESSION_COOKIE_AGE = 30 * 60  # 30 minutes
 | 
			
		||||
SESSION_SAVE_EVERY_REQUEST = True
 | 
			
		||||
#SESSION_COOKIE_AGE = 30 * 60  # 30 minutes
 | 
			
		||||
#SESSION_SAVE_EVERY_REQUEST = True
 | 
			
		||||
 | 
			
		||||
# Application definition
 | 
			
		||||
 | 
			
		||||
@ -149,7 +149,7 @@ LANGUAGE_CODE = 'de'
 | 
			
		||||
USE_THOUSAND_SEPARATOR = True
 | 
			
		||||
 | 
			
		||||
DEFAULT_DATE_TIME_FORMAT = '%d.%m.%Y %H:%M:%S'
 | 
			
		||||
DATE_FORMAT = '%d.%m.%Y'
 | 
			
		||||
DEFAULT_DATE_FORMAT = '%d.%m.%Y'
 | 
			
		||||
 | 
			
		||||
TIME_ZONE = 'Europe/Berlin'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@ -3,18 +3,20 @@
 | 
			
		||||
# This file is distributed under the same license as the PACKAGE package.
 | 
			
		||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 | 
			
		||||
#
 | 
			
		||||
#: compensation/forms.py:35 compensation/forms.py:40 compensation/forms.py:53
 | 
			
		||||
#: compensation/forms.py:184 compensation/forms.py:246
 | 
			
		||||
#: compensation/forms.py:34 compensation/forms.py:39 compensation/forms.py:52
 | 
			
		||||
#: compensation/forms.py:182 compensation/forms.py:244
 | 
			
		||||
#: intervention/filters.py:26 intervention/filters.py:40
 | 
			
		||||
#: intervention/filters.py:47 intervention/filters.py:48 konova/forms.py:91
 | 
			
		||||
#: konova/forms.py:227 konova/forms.py:258 konova/forms.py:263
 | 
			
		||||
#: konova/forms.py:275 konova/forms.py:287 konova/forms.py:300 user/forms.py:38
 | 
			
		||||
#: intervention/filters.py:47 intervention/filters.py:48
 | 
			
		||||
#: intervention/forms.py:323 intervention/forms.py:335
 | 
			
		||||
#: intervention/forms.py:347 konova/forms.py:91 konova/forms.py:227
 | 
			
		||||
#: konova/forms.py:258 konova/forms.py:263 konova/forms.py:275
 | 
			
		||||
#: konova/forms.py:287 konova/forms.py:300 user/forms.py:38
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PACKAGE VERSION\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: \n"
 | 
			
		||||
"POT-Creation-Date: 2021-08-04 11:52+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2021-08-04 13:27+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"
 | 
			
		||||
@ -24,133 +26,137 @@ msgstr ""
 | 
			
		||||
"Content-Transfer-Encoding: 8bit\n"
 | 
			
		||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:34 compensation/forms.py:235
 | 
			
		||||
#: compensation/forms.py:33 compensation/forms.py:233
 | 
			
		||||
#: intervention/templates/intervention/detail/includes/eco-account-withdraws.html:33
 | 
			
		||||
msgid "Amount"
 | 
			
		||||
msgstr "Menge"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:36
 | 
			
		||||
#: compensation/forms.py:35
 | 
			
		||||
msgid "Amount in Euro"
 | 
			
		||||
msgstr "Betrag in Euro"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:39
 | 
			
		||||
#: compensation/forms.py:38
 | 
			
		||||
#: intervention/templates/intervention/detail/includes/payments.html:31
 | 
			
		||||
msgid "Due on"
 | 
			
		||||
msgstr "Fällig am"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:41
 | 
			
		||||
#: compensation/forms.py:40
 | 
			
		||||
msgid "Due on which date"
 | 
			
		||||
msgstr "Zahlung wird an diesem Datum erwartet"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:54
 | 
			
		||||
#: compensation/forms.py:53
 | 
			
		||||
msgid "Transfer note"
 | 
			
		||||
msgstr "Verwendungszweck"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:55
 | 
			
		||||
#: compensation/forms.py:54
 | 
			
		||||
msgid "Note for money transfer"
 | 
			
		||||
msgstr "Verwendungszweck für Überweisung"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:62
 | 
			
		||||
#: compensation/forms.py:60
 | 
			
		||||
msgid "Payment"
 | 
			
		||||
msgstr "Zahlung"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:63
 | 
			
		||||
#: compensation/forms.py:61
 | 
			
		||||
msgid "Add a payment for intervention '{}'"
 | 
			
		||||
msgstr "Neue Ersatzzahlung zu Eingriff '{}' hinzufügen"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:83
 | 
			
		||||
#: compensation/forms.py:81
 | 
			
		||||
msgid "Biotope Type"
 | 
			
		||||
msgstr "Biotoptyp"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:86
 | 
			
		||||
#: compensation/forms.py:84
 | 
			
		||||
msgid "Select the biotope type"
 | 
			
		||||
msgstr "Biotoptyp wählen"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:91
 | 
			
		||||
#: compensation/forms.py:89
 | 
			
		||||
#: compensation/templates/compensation/detail/includes/states-after.html:36
 | 
			
		||||
#: compensation/templates/compensation/detail/includes/states-before.html:36
 | 
			
		||||
msgid "Surface"
 | 
			
		||||
msgstr "Fläche"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:94
 | 
			
		||||
#: compensation/forms.py:92
 | 
			
		||||
msgid "in m²"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:99
 | 
			
		||||
#: compensation/forms.py:97
 | 
			
		||||
msgid "New state"
 | 
			
		||||
msgstr "Neuer Zustand"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:100
 | 
			
		||||
#: compensation/forms.py:98
 | 
			
		||||
msgid "Insert data for the new state"
 | 
			
		||||
msgstr "Geben Sie die Daten des neuen Zustandes ein"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:114 konova/forms.py:141
 | 
			
		||||
#: compensation/forms.py:112 konova/forms.py:141
 | 
			
		||||
msgid "Object removed"
 | 
			
		||||
msgstr "Objekt entfernt"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:156
 | 
			
		||||
#: compensation/forms.py:154
 | 
			
		||||
msgid "Deadline Type"
 | 
			
		||||
msgstr "Fristart"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:159
 | 
			
		||||
#: compensation/forms.py:157
 | 
			
		||||
msgid "Select the deadline type"
 | 
			
		||||
msgstr "Fristart wählen"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:168
 | 
			
		||||
#: compensation/forms.py:166
 | 
			
		||||
#: compensation/templates/compensation/detail/includes/deadlines.html:31
 | 
			
		||||
#: intervention/forms.py:322
 | 
			
		||||
msgid "Date"
 | 
			
		||||
msgstr "Datum"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:171
 | 
			
		||||
#: compensation/forms.py:169
 | 
			
		||||
msgid "Select date"
 | 
			
		||||
msgstr "Datum wählen"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:183 compensation/forms.py:245
 | 
			
		||||
#: compensation/forms.py:181 compensation/forms.py:243
 | 
			
		||||
#: compensation/templates/compensation/detail/includes/actions.html:34
 | 
			
		||||
#: compensation/templates/compensation/detail/includes/deadlines.html:34
 | 
			
		||||
#: compensation/templates/compensation/detail/includes/documents.html:31
 | 
			
		||||
#: intervention/forms.py:346
 | 
			
		||||
#: intervention/templates/intervention/detail/includes/documents.html:31
 | 
			
		||||
#: intervention/templates/intervention/detail/includes/revocation.html:35
 | 
			
		||||
#: konova/forms.py:286
 | 
			
		||||
msgid "Comment"
 | 
			
		||||
msgstr "Kommentar"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:185 compensation/forms.py:247 konova/forms.py:288
 | 
			
		||||
#: compensation/forms.py:183 compensation/forms.py:245
 | 
			
		||||
#: intervention/forms.py:348 konova/forms.py:288
 | 
			
		||||
msgid "Additional comment, maximum {} letters"
 | 
			
		||||
msgstr "Zusätzlicher Kommentar, maximal {} Zeichen"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:196
 | 
			
		||||
#: compensation/forms.py:194
 | 
			
		||||
msgid "New deadline"
 | 
			
		||||
msgstr "Neue Frist"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:197
 | 
			
		||||
#: compensation/forms.py:195
 | 
			
		||||
msgid "Insert data for the new deadline"
 | 
			
		||||
msgstr "Geben Sie die Daten der neuen Frist ein"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:217
 | 
			
		||||
#: compensation/forms.py:215
 | 
			
		||||
msgid "Action Type"
 | 
			
		||||
msgstr "Maßnahmentyp"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:220
 | 
			
		||||
#: compensation/forms.py:218
 | 
			
		||||
msgid "Select the action type"
 | 
			
		||||
msgstr "Maßnahmentyp wählen"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:223
 | 
			
		||||
#: compensation/forms.py:221
 | 
			
		||||
msgid "Unit"
 | 
			
		||||
msgstr "Einheit"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:226
 | 
			
		||||
#: compensation/forms.py:224
 | 
			
		||||
msgid "Select the unit"
 | 
			
		||||
msgstr "Einheit wählen"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:238
 | 
			
		||||
#: compensation/forms.py:236
 | 
			
		||||
msgid "Insert the amount"
 | 
			
		||||
msgstr "Menge eingeben"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:258
 | 
			
		||||
#: compensation/forms.py:256
 | 
			
		||||
msgid "New action"
 | 
			
		||||
msgstr "Neue Maßnahme"
 | 
			
		||||
 | 
			
		||||
#: compensation/forms.py:259
 | 
			
		||||
#: compensation/forms.py:257
 | 
			
		||||
msgid "Insert data for the new action"
 | 
			
		||||
msgstr "Geben Sie die Daten der neuen Maßnahme ein"
 | 
			
		||||
 | 
			
		||||
@ -186,25 +192,25 @@ msgstr "Kennung"
 | 
			
		||||
 | 
			
		||||
#: compensation/tables.py:29 compensation/tables.py:169
 | 
			
		||||
#: compensation/templates/compensation/detail/includes/documents.html:28
 | 
			
		||||
#: compensation/templates/compensation/detail/view.html:47
 | 
			
		||||
#: compensation/templates/compensation/detail/view.html:24
 | 
			
		||||
#: intervention/forms.py:35 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:64 konova/forms.py:257
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:24 konova/forms.py:257
 | 
			
		||||
msgid "Title"
 | 
			
		||||
msgstr "Bezeichnung"
 | 
			
		||||
 | 
			
		||||
#: compensation/tables.py:34
 | 
			
		||||
#: compensation/templates/compensation/detail/view.html:59
 | 
			
		||||
#: compensation/templates/compensation/detail/view.html:36
 | 
			
		||||
#: intervention/tables.py:33
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:96 user/models.py:48
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:56 user/models.py:48
 | 
			
		||||
msgid "Checked"
 | 
			
		||||
msgstr "Geprüft"
 | 
			
		||||
 | 
			
		||||
#: compensation/tables.py:40
 | 
			
		||||
#: compensation/templates/compensation/detail/view.html:73
 | 
			
		||||
#: compensation/templates/compensation/detail/view.html:50
 | 
			
		||||
#: intervention/tables.py:39
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:110 user/models.py:49
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:70 user/models.py:49
 | 
			
		||||
msgid "Recorded"
 | 
			
		||||
msgstr "Verzeichnet"
 | 
			
		||||
 | 
			
		||||
@ -241,9 +247,9 @@ msgid "Checked on {} by {}"
 | 
			
		||||
msgstr "Am {} von {} geprüft worden"
 | 
			
		||||
 | 
			
		||||
#: compensation/tables.py:128
 | 
			
		||||
#: compensation/templates/compensation/detail/view.html:76
 | 
			
		||||
#: compensation/templates/compensation/detail/view.html:53
 | 
			
		||||
#: intervention/tables.py:135
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:113
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:73
 | 
			
		||||
msgid "Not recorded yet"
 | 
			
		||||
msgstr "Noch nicht verzeichnet"
 | 
			
		||||
 | 
			
		||||
@ -306,6 +312,7 @@ msgstr "Menge"
 | 
			
		||||
#: intervention/templates/intervention/detail/includes/documents.html:34
 | 
			
		||||
#: intervention/templates/intervention/detail/includes/eco-account-withdraws.html:36
 | 
			
		||||
#: intervention/templates/intervention/detail/includes/payments.html:37
 | 
			
		||||
#: intervention/templates/intervention/detail/includes/revocation.html:41
 | 
			
		||||
msgid "Action"
 | 
			
		||||
msgstr "Aktionen"
 | 
			
		||||
 | 
			
		||||
@ -313,6 +320,27 @@ msgstr "Aktionen"
 | 
			
		||||
msgid "Remove action"
 | 
			
		||||
msgstr "Maßnahme entfernen"
 | 
			
		||||
 | 
			
		||||
#: compensation/templates/compensation/detail/includes/controls.html:5
 | 
			
		||||
#: intervention/templates/intervention/detail/includes/controls.html:5
 | 
			
		||||
msgid "Open in LANIS"
 | 
			
		||||
msgstr "In LANIS öffnen"
 | 
			
		||||
 | 
			
		||||
#: compensation/templates/compensation/detail/includes/controls.html:10
 | 
			
		||||
#: intervention/templates/intervention/detail/includes/controls.html:10
 | 
			
		||||
msgid "Public report"
 | 
			
		||||
msgstr "Öffentlicher Bericht"
 | 
			
		||||
 | 
			
		||||
#: compensation/templates/compensation/detail/includes/controls.html:17
 | 
			
		||||
#: intervention/templates/intervention/detail/includes/controls.html:34
 | 
			
		||||
msgid "Edit"
 | 
			
		||||
msgstr "Bearbeiten"
 | 
			
		||||
 | 
			
		||||
#: compensation/templates/compensation/detail/includes/controls.html:21
 | 
			
		||||
#: intervention/templates/intervention/detail/includes/controls.html:38
 | 
			
		||||
#: venv/lib/python3.7/site-packages/django/forms/formsets.py:391
 | 
			
		||||
msgid "Delete"
 | 
			
		||||
msgstr "Löschen"
 | 
			
		||||
 | 
			
		||||
#: compensation/templates/compensation/detail/includes/deadlines.html:8
 | 
			
		||||
msgid "Deadlines"
 | 
			
		||||
msgstr "Termine und Fristen"
 | 
			
		||||
@ -380,61 +408,40 @@ msgstr "Neuen Ausgangszustand hinzufügen"
 | 
			
		||||
msgid "Missing surfaces according to states after: "
 | 
			
		||||
msgstr "Fehlende Flächenmengen aus Zielzustand: "
 | 
			
		||||
 | 
			
		||||
#: compensation/templates/compensation/detail/view.html:17
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:17
 | 
			
		||||
msgid "Open in LANIS"
 | 
			
		||||
msgstr "In LANIS öffnen"
 | 
			
		||||
 | 
			
		||||
#: compensation/templates/compensation/detail/view.html:22
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:22
 | 
			
		||||
msgid "Public report"
 | 
			
		||||
msgstr "Öffentlicher Bericht"
 | 
			
		||||
 | 
			
		||||
#: compensation/templates/compensation/detail/view.html:29
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:46
 | 
			
		||||
msgid "Edit"
 | 
			
		||||
msgstr "Bearbeiten"
 | 
			
		||||
 | 
			
		||||
#: compensation/templates/compensation/detail/view.html:33
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:50
 | 
			
		||||
#: venv/lib/python3.7/site-packages/django/forms/formsets.py:391
 | 
			
		||||
msgid "Delete"
 | 
			
		||||
msgstr "Löschen"
 | 
			
		||||
 | 
			
		||||
#: compensation/templates/compensation/detail/view.html:51
 | 
			
		||||
#: compensation/templates/compensation/detail/view.html:28
 | 
			
		||||
msgid "compensates intervention"
 | 
			
		||||
msgstr "kompensiert Eingriff"
 | 
			
		||||
 | 
			
		||||
#: compensation/templates/compensation/detail/view.html:66
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:103
 | 
			
		||||
#: compensation/templates/compensation/detail/view.html:43
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:63
 | 
			
		||||
msgid "Checked on "
 | 
			
		||||
msgstr "Geprüft am "
 | 
			
		||||
 | 
			
		||||
#: compensation/templates/compensation/detail/view.html:66
 | 
			
		||||
#: compensation/templates/compensation/detail/view.html:80
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:103
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:117
 | 
			
		||||
#: compensation/templates/compensation/detail/view.html:43
 | 
			
		||||
#: compensation/templates/compensation/detail/view.html:57
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:63
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:77
 | 
			
		||||
msgid "by"
 | 
			
		||||
msgstr "von"
 | 
			
		||||
 | 
			
		||||
#: compensation/templates/compensation/detail/view.html:80
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:117
 | 
			
		||||
#: compensation/templates/compensation/detail/view.html:57
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:77
 | 
			
		||||
msgid "Recorded on "
 | 
			
		||||
msgstr "Verzeichnet am"
 | 
			
		||||
 | 
			
		||||
#: compensation/templates/compensation/detail/view.html:87
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:132
 | 
			
		||||
#: compensation/templates/compensation/detail/view.html:64
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:96
 | 
			
		||||
msgid "Last modified"
 | 
			
		||||
msgstr "Zuletzt bearbeitet"
 | 
			
		||||
 | 
			
		||||
#: compensation/templates/compensation/detail/view.html:97
 | 
			
		||||
#: compensation/templates/compensation/detail/view.html:74
 | 
			
		||||
#: intervention/forms.py:256
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:142
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:106
 | 
			
		||||
msgid "Shared with"
 | 
			
		||||
msgstr "Freigegeben für"
 | 
			
		||||
 | 
			
		||||
#: compensation/templates/compensation/detail/view.html:109
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:154
 | 
			
		||||
#: compensation/templates/compensation/detail/view.html:86
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:118
 | 
			
		||||
msgid "No geometry added, yet."
 | 
			
		||||
msgstr "Keine Geometrie vorhanden"
 | 
			
		||||
 | 
			
		||||
@ -503,7 +510,7 @@ msgid "Which intervention type is this"
 | 
			
		||||
msgstr "Welcher Eingriffstyp"
 | 
			
		||||
 | 
			
		||||
#: intervention/forms.py:46
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:72
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:32
 | 
			
		||||
msgid "Law"
 | 
			
		||||
msgstr "Gesetz"
 | 
			
		||||
 | 
			
		||||
@ -512,7 +519,7 @@ msgid "Based on which law"
 | 
			
		||||
msgstr "Basiert auf welchem Recht"
 | 
			
		||||
 | 
			
		||||
#: intervention/forms.py:52
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:92
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:52
 | 
			
		||||
msgid "Intervention handler"
 | 
			
		||||
msgstr "Eingriffsverursacher"
 | 
			
		||||
 | 
			
		||||
@ -573,7 +580,7 @@ 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:270
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:27
 | 
			
		||||
#: intervention/templates/intervention/detail/includes/controls.html:15
 | 
			
		||||
msgid "Share"
 | 
			
		||||
msgstr "Freigabe"
 | 
			
		||||
 | 
			
		||||
@ -581,6 +588,24 @@ msgstr "Freigabe"
 | 
			
		||||
msgid "Share settings for {}"
 | 
			
		||||
msgstr "Freigabe Einstellungen für {}"
 | 
			
		||||
 | 
			
		||||
#: intervention/forms.py:324
 | 
			
		||||
msgid "Date of revocation"
 | 
			
		||||
msgstr "Datum des Widerspruchs"
 | 
			
		||||
 | 
			
		||||
#: intervention/forms.py:334
 | 
			
		||||
#: intervention/templates/intervention/detail/includes/revocation.html:38
 | 
			
		||||
msgid "Document"
 | 
			
		||||
msgstr "Dokument"
 | 
			
		||||
 | 
			
		||||
#: intervention/forms.py:336 konova/forms.py:276
 | 
			
		||||
msgid "Must be smaller than 15 Mb"
 | 
			
		||||
msgstr "Muss kleiner als 15 Mb sein"
 | 
			
		||||
 | 
			
		||||
#: intervention/forms.py:359
 | 
			
		||||
#: intervention/templates/intervention/detail/includes/revocation.html:18
 | 
			
		||||
msgid "Add revocation"
 | 
			
		||||
msgstr "Widerspruch hinzufügen"
 | 
			
		||||
 | 
			
		||||
#: intervention/tables.py:70
 | 
			
		||||
msgid "Interventions"
 | 
			
		||||
msgstr "Eingriffe"
 | 
			
		||||
@ -599,6 +624,14 @@ msgstr "Neue Kompensation hinzufügen"
 | 
			
		||||
msgid "Remove compensation"
 | 
			
		||||
msgstr "Kompensation entfernen"
 | 
			
		||||
 | 
			
		||||
#: intervention/templates/intervention/detail/includes/controls.html:20
 | 
			
		||||
msgid "Run check"
 | 
			
		||||
msgstr "Prüfung vornehmen"
 | 
			
		||||
 | 
			
		||||
#: intervention/templates/intervention/detail/includes/controls.html:27
 | 
			
		||||
msgid "Record"
 | 
			
		||||
msgstr "Verzeichnen"
 | 
			
		||||
 | 
			
		||||
#: intervention/templates/intervention/detail/includes/eco-account-withdraws.html:8
 | 
			
		||||
msgid "Eco Account Withdraws"
 | 
			
		||||
msgstr "Ökokonto Abbuchungen"
 | 
			
		||||
@ -636,51 +669,61 @@ msgstr "Verwendungszweck"
 | 
			
		||||
msgid "Remove payment"
 | 
			
		||||
msgstr "Zahlung entfernen"
 | 
			
		||||
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:32
 | 
			
		||||
msgid "Run check"
 | 
			
		||||
msgstr "Prüfung vornehmen"
 | 
			
		||||
#: intervention/templates/intervention/detail/includes/revocation.html:8
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:92
 | 
			
		||||
msgid "Revocation"
 | 
			
		||||
msgstr "Widerspruch"
 | 
			
		||||
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:39
 | 
			
		||||
msgid "Record"
 | 
			
		||||
msgstr "Verzeichnen"
 | 
			
		||||
#: intervention/templates/intervention/detail/includes/revocation.html:32
 | 
			
		||||
msgctxt "Revocation"
 | 
			
		||||
msgid "From"
 | 
			
		||||
msgstr "Vom"
 | 
			
		||||
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:68
 | 
			
		||||
#: intervention/templates/intervention/detail/includes/revocation.html:60
 | 
			
		||||
msgid "Remove revocation"
 | 
			
		||||
msgstr "Widerspruch entfernen"
 | 
			
		||||
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:28
 | 
			
		||||
msgid "Process type"
 | 
			
		||||
msgstr "Verfahrenstyp"
 | 
			
		||||
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:76
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:36
 | 
			
		||||
msgid "Registration office"
 | 
			
		||||
msgstr "Zulassungsbehörde"
 | 
			
		||||
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:80
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:40
 | 
			
		||||
msgid "Registration office file number"
 | 
			
		||||
msgstr "Aktenzeichen Zulassungsbehörde"
 | 
			
		||||
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:84
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:44
 | 
			
		||||
msgid "Conservation office"
 | 
			
		||||
msgstr "Naturschutzbehörde"
 | 
			
		||||
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:88
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:48
 | 
			
		||||
msgid "Conversation office file number"
 | 
			
		||||
msgstr "Aktenzeichen Naturschutzbehörde"
 | 
			
		||||
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:124
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:84
 | 
			
		||||
msgid "Registration date"
 | 
			
		||||
msgstr "Datum Zulassung bzw. Satzungsbeschluss"
 | 
			
		||||
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:128
 | 
			
		||||
#: intervention/templates/intervention/detail/view.html:88
 | 
			
		||||
msgid "Binding on"
 | 
			
		||||
msgstr "Datum Bestandskraft"
 | 
			
		||||
 | 
			
		||||
#: intervention/views.py:65
 | 
			
		||||
#: intervention/views.py:67
 | 
			
		||||
msgid "Intervention {} added"
 | 
			
		||||
msgstr "Eingriff {} hinzugefügt"
 | 
			
		||||
 | 
			
		||||
#: intervention/views.py:68 intervention/views.py:157
 | 
			
		||||
#: intervention/views.py:70 intervention/views.py:167
 | 
			
		||||
msgid "Invalid input"
 | 
			
		||||
msgstr "Eingabe fehlerhaft"
 | 
			
		||||
 | 
			
		||||
#: intervention/views.py:131
 | 
			
		||||
#: intervention/views.py:126
 | 
			
		||||
msgid "This intervention has a revocation from {}"
 | 
			
		||||
msgstr "Es existiert ein Widerspruch vom {}"
 | 
			
		||||
 | 
			
		||||
#: intervention/views.py:141
 | 
			
		||||
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 "
 | 
			
		||||
@ -690,30 +733,38 @@ msgstr ""
 | 
			
		||||
"bedeutet, dass Sie nur lesenden Zugriff hierauf haben und weder bearbeiten, "
 | 
			
		||||
"noch Prüfungen durchführen oder verzeichnen können."
 | 
			
		||||
 | 
			
		||||
#: intervention/views.py:154
 | 
			
		||||
#: intervention/views.py:164
 | 
			
		||||
msgid "{} edited"
 | 
			
		||||
msgstr "{} bearbeitet"
 | 
			
		||||
 | 
			
		||||
#: intervention/views.py:183
 | 
			
		||||
#: intervention/views.py:193
 | 
			
		||||
msgid "{} removed"
 | 
			
		||||
msgstr "{} entfernt"
 | 
			
		||||
 | 
			
		||||
#: intervention/views.py:210
 | 
			
		||||
#: intervention/views.py:214
 | 
			
		||||
msgid "Revocation removed"
 | 
			
		||||
msgstr "Widerspruch entfernt"
 | 
			
		||||
 | 
			
		||||
#: intervention/views.py:240
 | 
			
		||||
msgid "{} has already been shared with you"
 | 
			
		||||
msgstr "{} wurde bereits für Sie freigegeben"
 | 
			
		||||
 | 
			
		||||
#: intervention/views.py:215
 | 
			
		||||
#: intervention/views.py:245
 | 
			
		||||
msgid "{} has been shared with you"
 | 
			
		||||
msgstr "{} ist nun für Sie freigegeben"
 | 
			
		||||
 | 
			
		||||
#: intervention/views.py:222
 | 
			
		||||
#: intervention/views.py:252
 | 
			
		||||
msgid "Share link invalid"
 | 
			
		||||
msgstr "Freigabelink ungültig"
 | 
			
		||||
 | 
			
		||||
#: intervention/views.py:246
 | 
			
		||||
#: intervention/views.py:276
 | 
			
		||||
msgid "Share settings updated"
 | 
			
		||||
msgstr "Freigabe Einstellungen aktualisiert"
 | 
			
		||||
 | 
			
		||||
#: intervention/views.py:307
 | 
			
		||||
msgid "Revocation added"
 | 
			
		||||
msgstr "Widerspruch hinzugefügt"
 | 
			
		||||
 | 
			
		||||
#: konova/decorators.py:29
 | 
			
		||||
msgid "You need to be staff to perform this action!"
 | 
			
		||||
msgstr "Hierfür müssen Sie Mitarbeiter sein!"
 | 
			
		||||
@ -764,10 +815,6 @@ msgstr "Wann wurde diese Datei erstellt oder das Foto aufgenommen?"
 | 
			
		||||
msgid "File"
 | 
			
		||||
msgstr "Datei"
 | 
			
		||||
 | 
			
		||||
#: konova/forms.py:276
 | 
			
		||||
msgid "Must be smaller than 15 Mb"
 | 
			
		||||
msgstr "Muss kleiner als 15 Mb sein"
 | 
			
		||||
 | 
			
		||||
#: konova/management/commands/setup_data.py:42
 | 
			
		||||
msgid "On new related data"
 | 
			
		||||
msgstr "Wenn neue Daten für mich angelegt werden"
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user