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
d7c95c9e70
commit
6818ef290e
@ -47,7 +47,7 @@ class NewPaymentForm(BaseModalForm):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
transfer_note = forms.CharField(
|
transfer_note = forms.CharField(
|
||||||
max_length=1000,
|
max_length=200,
|
||||||
required=False,
|
required=False,
|
||||||
label_suffix=_(""),
|
label_suffix=_(""),
|
||||||
label=_("Transfer note"),
|
label=_("Transfer note"),
|
||||||
@ -55,7 +55,6 @@ class NewPaymentForm(BaseModalForm):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
self.template = "modal/modal_form.html"
|
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.intervention = self.instance
|
self.intervention = self.instance
|
||||||
self.form_title = _("Payment")
|
self.form_title = _("Payment")
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{% load i18n l10n fontawesome_5 humanize %}
|
{% 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="card-header rlp-r">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-6">
|
<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 %}
|
{% load i18n l10n fontawesome_5 %}
|
||||||
<div id="related-documents" class="card">
|
<div id="deadlines" class="card">
|
||||||
<div class="card-header rlp-r">
|
<div class="card-header rlp-r">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{% load i18n l10n fontawesome_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="card-header rlp-r">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{% load i18n l10n fontawesome_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="card-header rlp-r">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{% load i18n l10n fontawesome_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="card-header rlp-r">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
|
@ -12,30 +12,7 @@
|
|||||||
<h3>{% trans 'Compensation' %} {{comp.identifier}}</h3>
|
<h3>{% trans 'Compensation' %} {{comp.identifier}}</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
<div class="d-flex justify-content-end">
|
{% include 'compensation/detail/includes/controls.html' %}
|
||||||
<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>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<hr>
|
<hr>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
|
||||||
from intervention.models import Intervention, ResponsibilityData, LegalData
|
from intervention.models import Intervention, ResponsibilityData, LegalData, Revocation
|
||||||
|
|
||||||
|
|
||||||
class InterventionAdmin(admin.ModelAdmin):
|
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(Intervention, InterventionAdmin)
|
||||||
admin.site.register(ResponsibilityData, ResponsibilityAdmin)
|
admin.site.register(ResponsibilityData, ResponsibilityAdmin)
|
||||||
admin.site.register(LegalData, LegalAdmin)
|
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.urls import reverse
|
||||||
from django.utils.translation import gettext_lazy as _
|
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.forms import BaseForm, BaseModalForm
|
||||||
from konova.models import Document
|
from konova.models import Document
|
||||||
from konova.settings import DEFAULT_LAT, DEFAULT_LON, DEFAULT_ZOOM, ZB_GROUP, ETS_GROUP
|
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"]
|
id__in=self.cleaned_data["users"]
|
||||||
)
|
)
|
||||||
self.instance.users.set(accessing_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 django.utils.timezone import now
|
||||||
|
|
||||||
from intervention.settings import INTERVENTION_IDENTIFIER_LENGTH, INTERVENTION_IDENTIFIER_TEMPLATE
|
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 import generators
|
||||||
from konova.utils.generators import generate_random_string
|
from konova.utils.generators import generate_random_string
|
||||||
from organisation.models import Organisation
|
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):
|
class LegalData(UuidModel):
|
||||||
"""
|
"""
|
||||||
Holds intervention legal data such as important dates, laws or responsible handler
|
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)
|
process_type = models.CharField(max_length=500, null=True, blank=True)
|
||||||
law = 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):
|
def __str__(self):
|
||||||
return "{} | {} | {}".format(
|
return "{} | {} | {}".format(
|
||||||
self.process_type,
|
self.process_type,
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{% load i18n l10n fontawesome_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="card-header rlp-r">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-6">
|
<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 %}
|
{% load i18n l10n fontawesome_5 %}
|
||||||
<div id="related-documents" class="card">
|
<div id="documents" class="card">
|
||||||
<div class="card-header rlp-r">
|
<div class="card-header rlp-r">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{% load i18n l10n fontawesome_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="card-header rlp-r">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{% load i18n l10n fontawesome_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="card-header rlp-r">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-6">
|
<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>
|
<h3>{% trans 'Intervention' %} {{intervention.identifier}}</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
<div class="d-flex justify-content-end">
|
{% include 'intervention/detail/includes/controls.html' %}
|
||||||
<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>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<hr>
|
<hr>
|
||||||
@ -128,6 +88,10 @@
|
|||||||
<th scope="row">{% trans 'Binding on' %}</th>
|
<th scope="row">{% trans 'Binding on' %}</th>
|
||||||
<td class="align-middle">{{intervention.legal.binding_date|default_if_none:""}}</td>
|
<td class="align-middle">{{intervention.legal.binding_date|default_if_none:""}}</td>
|
||||||
</tr>
|
</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>
|
<tr>
|
||||||
<th scope="row">{% trans 'Last modified' %}</th>
|
<th scope="row">{% trans 'Last modified' %}</th>
|
||||||
<td class="align-middle">
|
<td class="align-middle">
|
||||||
@ -171,9 +135,16 @@
|
|||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
{% include 'intervention/detail/includes/eco-account-withdraws.html' %}
|
{% include 'intervention/detail/includes/eco-account-withdraws.html' %}
|
||||||
</div>
|
</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">
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
{% include 'intervention/detail/includes/documents.html' %}
|
{% include 'intervention/detail/includes/documents.html' %}
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Created on: 30.11.20
|
|||||||
from django.urls import path
|
from django.urls import path
|
||||||
|
|
||||||
from intervention.views import index_view, new_view, open_view, edit_view, remove_view, new_document_view, share_view, \
|
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"
|
app_name = "intervention"
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
@ -20,4 +20,8 @@ urlpatterns = [
|
|||||||
path('<id>/remove', remove_view, name='remove'),
|
path('<id>/remove', remove_view, name='remove'),
|
||||||
path('<id>/share/<token>', share_view, name='share'),
|
path('<id>/share/<token>', share_view, name='share'),
|
||||||
path('<id>/share', create_share_view, name='share-create'),
|
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.http import HttpRequest
|
||||||
from django.shortcuts import render, get_object_or_404
|
from django.shortcuts import render, get_object_or_404
|
||||||
|
|
||||||
from intervention.forms import NewInterventionForm, EditInterventionForm, ShareInterventionForm
|
from intervention.forms import NewInterventionForm, EditInterventionForm, ShareInterventionForm, NewRevocationForm
|
||||||
from intervention.models import Intervention
|
from intervention.models import Intervention, Revocation
|
||||||
from intervention.tables import InterventionTable
|
from intervention.tables import InterventionTable
|
||||||
from konova.contexts import BaseContext
|
from konova.contexts import BaseContext
|
||||||
from konova.decorators import *
|
from konova.decorators import *
|
||||||
from konova.forms import SimpleGeomForm, NewDocumentForm, RemoveModalForm
|
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
|
from konova.utils.user_checks import in_group
|
||||||
|
|
||||||
|
|
||||||
@ -117,6 +119,14 @@ def open_view(request: HttpRequest, id: str):
|
|||||||
instance=intervention
|
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 = {
|
context = {
|
||||||
"intervention": intervention,
|
"intervention": intervention,
|
||||||
"compensations": compensations,
|
"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
|
@login_required
|
||||||
def share_view(request: HttpRequest, id: str, token: str):
|
def share_view(request: HttpRequest, id: str, token: str):
|
||||||
""" Performs sharing of an intervention
|
""" Performs sharing of an intervention
|
||||||
@ -256,3 +286,40 @@ def create_share_view(request: HttpRequest, id: str):
|
|||||||
raise NotImplementedError
|
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.form_caption = _("")
|
||||||
self.template = "modal/modal_form.html"
|
self.template = "modal/modal_form.html"
|
||||||
self.form_attrs = {
|
self.form_attrs = {
|
||||||
"enctype": "multipart/form-data",
|
"enctype": "multipart/form-data", # important for file upload
|
||||||
}
|
}
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
|
@ -98,7 +98,7 @@ class Document(BaseResource):
|
|||||||
"""
|
"""
|
||||||
title = models.CharField(max_length=500, null=True, blank=True)
|
title = models.CharField(max_length=500, null=True, blank=True)
|
||||||
date_of_creation = models.DateField()
|
date_of_creation = models.DateField()
|
||||||
document = models.FileField()
|
file = models.FileField()
|
||||||
comment = models.TextField()
|
comment = models.TextField()
|
||||||
|
|
||||||
def delete(self, using=None, keep_parents=False):
|
def delete(self, using=None, keep_parents=False):
|
||||||
@ -111,7 +111,7 @@ class Document(BaseResource):
|
|||||||
Returns:
|
Returns:
|
||||||
|
|
||||||
"""
|
"""
|
||||||
os.remove(self.document.file.name)
|
os.remove(self.file.file.name)
|
||||||
super().delete(using=using, keep_parents=keep_parents)
|
super().delete(using=using, keep_parents=keep_parents)
|
||||||
|
|
||||||
|
|
||||||
|
@ -38,8 +38,8 @@ ALLOWED_HOSTS = []
|
|||||||
LOGIN_URL = "/login/"
|
LOGIN_URL = "/login/"
|
||||||
|
|
||||||
# Session settings
|
# Session settings
|
||||||
SESSION_COOKIE_AGE = 30 * 60 # 30 minutes
|
#SESSION_COOKIE_AGE = 30 * 60 # 30 minutes
|
||||||
SESSION_SAVE_EVERY_REQUEST = True
|
#SESSION_SAVE_EVERY_REQUEST = True
|
||||||
|
|
||||||
# Application definition
|
# Application definition
|
||||||
|
|
||||||
@ -149,7 +149,7 @@ LANGUAGE_CODE = 'de'
|
|||||||
USE_THOUSAND_SEPARATOR = True
|
USE_THOUSAND_SEPARATOR = True
|
||||||
|
|
||||||
DEFAULT_DATE_TIME_FORMAT = '%d.%m.%Y %H:%M:%S'
|
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'
|
TIME_ZONE = 'Europe/Berlin'
|
||||||
|
|
||||||
|
Binary file not shown.
@ -3,18 +3,20 @@
|
|||||||
# This file is distributed under the same license as the PACKAGE package.
|
# This file is distributed under the same license as the PACKAGE package.
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
#
|
#
|
||||||
#: compensation/forms.py:35 compensation/forms.py:40 compensation/forms.py:53
|
#: compensation/forms.py:34 compensation/forms.py:39 compensation/forms.py:52
|
||||||
#: compensation/forms.py:184 compensation/forms.py:246
|
#: compensation/forms.py:182 compensation/forms.py:244
|
||||||
#: intervention/filters.py:26 intervention/filters.py:40
|
#: intervention/filters.py:26 intervention/filters.py:40
|
||||||
#: intervention/filters.py:47 intervention/filters.py:48 konova/forms.py:91
|
#: intervention/filters.py:47 intervention/filters.py:48
|
||||||
#: konova/forms.py:227 konova/forms.py:258 konova/forms.py:263
|
#: intervention/forms.py:323 intervention/forms.py:335
|
||||||
#: konova/forms.py:275 konova/forms.py:287 konova/forms.py:300 user/forms.py:38
|
#: 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
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \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"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@ -24,133 +26,137 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\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
|
#: intervention/templates/intervention/detail/includes/eco-account-withdraws.html:33
|
||||||
msgid "Amount"
|
msgid "Amount"
|
||||||
msgstr "Menge"
|
msgstr "Menge"
|
||||||
|
|
||||||
#: compensation/forms.py:36
|
#: compensation/forms.py:35
|
||||||
msgid "Amount in Euro"
|
msgid "Amount in Euro"
|
||||||
msgstr "Betrag in Euro"
|
msgstr "Betrag in Euro"
|
||||||
|
|
||||||
#: compensation/forms.py:39
|
#: compensation/forms.py:38
|
||||||
#: intervention/templates/intervention/detail/includes/payments.html:31
|
#: intervention/templates/intervention/detail/includes/payments.html:31
|
||||||
msgid "Due on"
|
msgid "Due on"
|
||||||
msgstr "Fällig am"
|
msgstr "Fällig am"
|
||||||
|
|
||||||
#: compensation/forms.py:41
|
#: compensation/forms.py:40
|
||||||
msgid "Due on which date"
|
msgid "Due on which date"
|
||||||
msgstr "Zahlung wird an diesem Datum erwartet"
|
msgstr "Zahlung wird an diesem Datum erwartet"
|
||||||
|
|
||||||
#: compensation/forms.py:54
|
#: compensation/forms.py:53
|
||||||
msgid "Transfer note"
|
msgid "Transfer note"
|
||||||
msgstr "Verwendungszweck"
|
msgstr "Verwendungszweck"
|
||||||
|
|
||||||
#: compensation/forms.py:55
|
#: compensation/forms.py:54
|
||||||
msgid "Note for money transfer"
|
msgid "Note for money transfer"
|
||||||
msgstr "Verwendungszweck für Überweisung"
|
msgstr "Verwendungszweck für Überweisung"
|
||||||
|
|
||||||
#: compensation/forms.py:62
|
#: compensation/forms.py:60
|
||||||
msgid "Payment"
|
msgid "Payment"
|
||||||
msgstr "Zahlung"
|
msgstr "Zahlung"
|
||||||
|
|
||||||
#: compensation/forms.py:63
|
#: compensation/forms.py:61
|
||||||
msgid "Add a payment for intervention '{}'"
|
msgid "Add a payment for intervention '{}'"
|
||||||
msgstr "Neue Ersatzzahlung zu Eingriff '{}' hinzufügen"
|
msgstr "Neue Ersatzzahlung zu Eingriff '{}' hinzufügen"
|
||||||
|
|
||||||
#: compensation/forms.py:83
|
#: compensation/forms.py:81
|
||||||
msgid "Biotope Type"
|
msgid "Biotope Type"
|
||||||
msgstr "Biotoptyp"
|
msgstr "Biotoptyp"
|
||||||
|
|
||||||
#: compensation/forms.py:86
|
#: compensation/forms.py:84
|
||||||
msgid "Select the biotope type"
|
msgid "Select the biotope type"
|
||||||
msgstr "Biotoptyp wählen"
|
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-after.html:36
|
||||||
#: compensation/templates/compensation/detail/includes/states-before.html:36
|
#: compensation/templates/compensation/detail/includes/states-before.html:36
|
||||||
msgid "Surface"
|
msgid "Surface"
|
||||||
msgstr "Fläche"
|
msgstr "Fläche"
|
||||||
|
|
||||||
#: compensation/forms.py:94
|
#: compensation/forms.py:92
|
||||||
msgid "in m²"
|
msgid "in m²"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: compensation/forms.py:99
|
#: compensation/forms.py:97
|
||||||
msgid "New state"
|
msgid "New state"
|
||||||
msgstr "Neuer Zustand"
|
msgstr "Neuer Zustand"
|
||||||
|
|
||||||
#: compensation/forms.py:100
|
#: compensation/forms.py:98
|
||||||
msgid "Insert data for the new state"
|
msgid "Insert data for the new state"
|
||||||
msgstr "Geben Sie die Daten des neuen Zustandes ein"
|
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"
|
msgid "Object removed"
|
||||||
msgstr "Objekt entfernt"
|
msgstr "Objekt entfernt"
|
||||||
|
|
||||||
#: compensation/forms.py:156
|
#: compensation/forms.py:154
|
||||||
msgid "Deadline Type"
|
msgid "Deadline Type"
|
||||||
msgstr "Fristart"
|
msgstr "Fristart"
|
||||||
|
|
||||||
#: compensation/forms.py:159
|
#: compensation/forms.py:157
|
||||||
msgid "Select the deadline type"
|
msgid "Select the deadline type"
|
||||||
msgstr "Fristart wählen"
|
msgstr "Fristart wählen"
|
||||||
|
|
||||||
#: compensation/forms.py:168
|
#: compensation/forms.py:166
|
||||||
#: compensation/templates/compensation/detail/includes/deadlines.html:31
|
#: compensation/templates/compensation/detail/includes/deadlines.html:31
|
||||||
|
#: intervention/forms.py:322
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr "Datum"
|
msgstr "Datum"
|
||||||
|
|
||||||
#: compensation/forms.py:171
|
#: compensation/forms.py:169
|
||||||
msgid "Select date"
|
msgid "Select date"
|
||||||
msgstr "Datum wählen"
|
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/actions.html:34
|
||||||
#: compensation/templates/compensation/detail/includes/deadlines.html:34
|
#: compensation/templates/compensation/detail/includes/deadlines.html:34
|
||||||
#: compensation/templates/compensation/detail/includes/documents.html:31
|
#: 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/documents.html:31
|
||||||
|
#: intervention/templates/intervention/detail/includes/revocation.html:35
|
||||||
#: konova/forms.py:286
|
#: konova/forms.py:286
|
||||||
msgid "Comment"
|
msgid "Comment"
|
||||||
msgstr "Kommentar"
|
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"
|
msgid "Additional comment, maximum {} letters"
|
||||||
msgstr "Zusätzlicher Kommentar, maximal {} Zeichen"
|
msgstr "Zusätzlicher Kommentar, maximal {} Zeichen"
|
||||||
|
|
||||||
#: compensation/forms.py:196
|
#: compensation/forms.py:194
|
||||||
msgid "New deadline"
|
msgid "New deadline"
|
||||||
msgstr "Neue Frist"
|
msgstr "Neue Frist"
|
||||||
|
|
||||||
#: compensation/forms.py:197
|
#: compensation/forms.py:195
|
||||||
msgid "Insert data for the new deadline"
|
msgid "Insert data for the new deadline"
|
||||||
msgstr "Geben Sie die Daten der neuen Frist ein"
|
msgstr "Geben Sie die Daten der neuen Frist ein"
|
||||||
|
|
||||||
#: compensation/forms.py:217
|
#: compensation/forms.py:215
|
||||||
msgid "Action Type"
|
msgid "Action Type"
|
||||||
msgstr "Maßnahmentyp"
|
msgstr "Maßnahmentyp"
|
||||||
|
|
||||||
#: compensation/forms.py:220
|
#: compensation/forms.py:218
|
||||||
msgid "Select the action type"
|
msgid "Select the action type"
|
||||||
msgstr "Maßnahmentyp wählen"
|
msgstr "Maßnahmentyp wählen"
|
||||||
|
|
||||||
#: compensation/forms.py:223
|
#: compensation/forms.py:221
|
||||||
msgid "Unit"
|
msgid "Unit"
|
||||||
msgstr "Einheit"
|
msgstr "Einheit"
|
||||||
|
|
||||||
#: compensation/forms.py:226
|
#: compensation/forms.py:224
|
||||||
msgid "Select the unit"
|
msgid "Select the unit"
|
||||||
msgstr "Einheit wählen"
|
msgstr "Einheit wählen"
|
||||||
|
|
||||||
#: compensation/forms.py:238
|
#: compensation/forms.py:236
|
||||||
msgid "Insert the amount"
|
msgid "Insert the amount"
|
||||||
msgstr "Menge eingeben"
|
msgstr "Menge eingeben"
|
||||||
|
|
||||||
#: compensation/forms.py:258
|
#: compensation/forms.py:256
|
||||||
msgid "New action"
|
msgid "New action"
|
||||||
msgstr "Neue Maßnahme"
|
msgstr "Neue Maßnahme"
|
||||||
|
|
||||||
#: compensation/forms.py:259
|
#: compensation/forms.py:257
|
||||||
msgid "Insert data for the new action"
|
msgid "Insert data for the new action"
|
||||||
msgstr "Geben Sie die Daten der neuen Maßnahme ein"
|
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/tables.py:29 compensation/tables.py:169
|
||||||
#: compensation/templates/compensation/detail/includes/documents.html:28
|
#: 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/forms.py:35 intervention/tables.py:28
|
||||||
#: intervention/templates/intervention/detail/includes/compensations.html:33
|
#: intervention/templates/intervention/detail/includes/compensations.html:33
|
||||||
#: intervention/templates/intervention/detail/includes/documents.html:28
|
#: 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"
|
msgid "Title"
|
||||||
msgstr "Bezeichnung"
|
msgstr "Bezeichnung"
|
||||||
|
|
||||||
#: compensation/tables.py:34
|
#: compensation/tables.py:34
|
||||||
#: compensation/templates/compensation/detail/view.html:59
|
#: compensation/templates/compensation/detail/view.html:36
|
||||||
#: intervention/tables.py:33
|
#: 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"
|
msgid "Checked"
|
||||||
msgstr "Geprüft"
|
msgstr "Geprüft"
|
||||||
|
|
||||||
#: compensation/tables.py:40
|
#: compensation/tables.py:40
|
||||||
#: compensation/templates/compensation/detail/view.html:73
|
#: compensation/templates/compensation/detail/view.html:50
|
||||||
#: intervention/tables.py:39
|
#: 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"
|
msgid "Recorded"
|
||||||
msgstr "Verzeichnet"
|
msgstr "Verzeichnet"
|
||||||
|
|
||||||
@ -241,9 +247,9 @@ msgid "Checked on {} by {}"
|
|||||||
msgstr "Am {} von {} geprüft worden"
|
msgstr "Am {} von {} geprüft worden"
|
||||||
|
|
||||||
#: compensation/tables.py:128
|
#: compensation/tables.py:128
|
||||||
#: compensation/templates/compensation/detail/view.html:76
|
#: compensation/templates/compensation/detail/view.html:53
|
||||||
#: intervention/tables.py:135
|
#: intervention/tables.py:135
|
||||||
#: intervention/templates/intervention/detail/view.html:113
|
#: intervention/templates/intervention/detail/view.html:73
|
||||||
msgid "Not recorded yet"
|
msgid "Not recorded yet"
|
||||||
msgstr "Noch nicht verzeichnet"
|
msgstr "Noch nicht verzeichnet"
|
||||||
|
|
||||||
@ -306,6 +312,7 @@ msgstr "Menge"
|
|||||||
#: intervention/templates/intervention/detail/includes/documents.html:34
|
#: intervention/templates/intervention/detail/includes/documents.html:34
|
||||||
#: intervention/templates/intervention/detail/includes/eco-account-withdraws.html:36
|
#: intervention/templates/intervention/detail/includes/eco-account-withdraws.html:36
|
||||||
#: intervention/templates/intervention/detail/includes/payments.html:37
|
#: intervention/templates/intervention/detail/includes/payments.html:37
|
||||||
|
#: intervention/templates/intervention/detail/includes/revocation.html:41
|
||||||
msgid "Action"
|
msgid "Action"
|
||||||
msgstr "Aktionen"
|
msgstr "Aktionen"
|
||||||
|
|
||||||
@ -313,6 +320,27 @@ msgstr "Aktionen"
|
|||||||
msgid "Remove action"
|
msgid "Remove action"
|
||||||
msgstr "Maßnahme entfernen"
|
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
|
#: compensation/templates/compensation/detail/includes/deadlines.html:8
|
||||||
msgid "Deadlines"
|
msgid "Deadlines"
|
||||||
msgstr "Termine und Fristen"
|
msgstr "Termine und Fristen"
|
||||||
@ -380,61 +408,40 @@ msgstr "Neuen Ausgangszustand hinzufügen"
|
|||||||
msgid "Missing surfaces according to states after: "
|
msgid "Missing surfaces according to states after: "
|
||||||
msgstr "Fehlende Flächenmengen aus Zielzustand: "
|
msgstr "Fehlende Flächenmengen aus Zielzustand: "
|
||||||
|
|
||||||
#: compensation/templates/compensation/detail/view.html:17
|
#: compensation/templates/compensation/detail/view.html:28
|
||||||
#: 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
|
|
||||||
msgid "compensates intervention"
|
msgid "compensates intervention"
|
||||||
msgstr "kompensiert Eingriff"
|
msgstr "kompensiert Eingriff"
|
||||||
|
|
||||||
#: compensation/templates/compensation/detail/view.html:66
|
#: compensation/templates/compensation/detail/view.html:43
|
||||||
#: intervention/templates/intervention/detail/view.html:103
|
#: intervention/templates/intervention/detail/view.html:63
|
||||||
msgid "Checked on "
|
msgid "Checked on "
|
||||||
msgstr "Geprüft am "
|
msgstr "Geprüft am "
|
||||||
|
|
||||||
#: compensation/templates/compensation/detail/view.html:66
|
#: compensation/templates/compensation/detail/view.html:43
|
||||||
#: compensation/templates/compensation/detail/view.html:80
|
#: compensation/templates/compensation/detail/view.html:57
|
||||||
#: intervention/templates/intervention/detail/view.html:103
|
#: intervention/templates/intervention/detail/view.html:63
|
||||||
#: intervention/templates/intervention/detail/view.html:117
|
#: intervention/templates/intervention/detail/view.html:77
|
||||||
msgid "by"
|
msgid "by"
|
||||||
msgstr "von"
|
msgstr "von"
|
||||||
|
|
||||||
#: compensation/templates/compensation/detail/view.html:80
|
#: compensation/templates/compensation/detail/view.html:57
|
||||||
#: intervention/templates/intervention/detail/view.html:117
|
#: intervention/templates/intervention/detail/view.html:77
|
||||||
msgid "Recorded on "
|
msgid "Recorded on "
|
||||||
msgstr "Verzeichnet am"
|
msgstr "Verzeichnet am"
|
||||||
|
|
||||||
#: compensation/templates/compensation/detail/view.html:87
|
#: compensation/templates/compensation/detail/view.html:64
|
||||||
#: intervention/templates/intervention/detail/view.html:132
|
#: intervention/templates/intervention/detail/view.html:96
|
||||||
msgid "Last modified"
|
msgid "Last modified"
|
||||||
msgstr "Zuletzt bearbeitet"
|
msgstr "Zuletzt bearbeitet"
|
||||||
|
|
||||||
#: compensation/templates/compensation/detail/view.html:97
|
#: compensation/templates/compensation/detail/view.html:74
|
||||||
#: intervention/forms.py:256
|
#: intervention/forms.py:256
|
||||||
#: intervention/templates/intervention/detail/view.html:142
|
#: intervention/templates/intervention/detail/view.html:106
|
||||||
msgid "Shared with"
|
msgid "Shared with"
|
||||||
msgstr "Freigegeben für"
|
msgstr "Freigegeben für"
|
||||||
|
|
||||||
#: compensation/templates/compensation/detail/view.html:109
|
#: compensation/templates/compensation/detail/view.html:86
|
||||||
#: intervention/templates/intervention/detail/view.html:154
|
#: intervention/templates/intervention/detail/view.html:118
|
||||||
msgid "No geometry added, yet."
|
msgid "No geometry added, yet."
|
||||||
msgstr "Keine Geometrie vorhanden"
|
msgstr "Keine Geometrie vorhanden"
|
||||||
|
|
||||||
@ -503,7 +510,7 @@ msgid "Which intervention type is this"
|
|||||||
msgstr "Welcher Eingriffstyp"
|
msgstr "Welcher Eingriffstyp"
|
||||||
|
|
||||||
#: intervention/forms.py:46
|
#: intervention/forms.py:46
|
||||||
#: intervention/templates/intervention/detail/view.html:72
|
#: intervention/templates/intervention/detail/view.html:32
|
||||||
msgid "Law"
|
msgid "Law"
|
||||||
msgstr "Gesetz"
|
msgstr "Gesetz"
|
||||||
|
|
||||||
@ -512,7 +519,7 @@ msgid "Based on which law"
|
|||||||
msgstr "Basiert auf welchem Recht"
|
msgstr "Basiert auf welchem Recht"
|
||||||
|
|
||||||
#: intervention/forms.py:52
|
#: intervention/forms.py:52
|
||||||
#: intervention/templates/intervention/detail/view.html:92
|
#: intervention/templates/intervention/detail/view.html:52
|
||||||
msgid "Intervention handler"
|
msgid "Intervention handler"
|
||||||
msgstr "Eingriffsverursacher"
|
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"
|
msgstr "Wählen Sie die Nutzer ab, die keinen Zugriff mehr haben sollen"
|
||||||
|
|
||||||
#: intervention/forms.py:270
|
#: intervention/forms.py:270
|
||||||
#: intervention/templates/intervention/detail/view.html:27
|
#: intervention/templates/intervention/detail/includes/controls.html:15
|
||||||
msgid "Share"
|
msgid "Share"
|
||||||
msgstr "Freigabe"
|
msgstr "Freigabe"
|
||||||
|
|
||||||
@ -581,6 +588,24 @@ msgstr "Freigabe"
|
|||||||
msgid "Share settings for {}"
|
msgid "Share settings for {}"
|
||||||
msgstr "Freigabe Einstellungen für {}"
|
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
|
#: intervention/tables.py:70
|
||||||
msgid "Interventions"
|
msgid "Interventions"
|
||||||
msgstr "Eingriffe"
|
msgstr "Eingriffe"
|
||||||
@ -599,6 +624,14 @@ msgstr "Neue Kompensation hinzufügen"
|
|||||||
msgid "Remove compensation"
|
msgid "Remove compensation"
|
||||||
msgstr "Kompensation entfernen"
|
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
|
#: intervention/templates/intervention/detail/includes/eco-account-withdraws.html:8
|
||||||
msgid "Eco Account Withdraws"
|
msgid "Eco Account Withdraws"
|
||||||
msgstr "Ökokonto Abbuchungen"
|
msgstr "Ökokonto Abbuchungen"
|
||||||
@ -636,51 +669,61 @@ msgstr "Verwendungszweck"
|
|||||||
msgid "Remove payment"
|
msgid "Remove payment"
|
||||||
msgstr "Zahlung entfernen"
|
msgstr "Zahlung entfernen"
|
||||||
|
|
||||||
#: intervention/templates/intervention/detail/view.html:32
|
#: intervention/templates/intervention/detail/includes/revocation.html:8
|
||||||
msgid "Run check"
|
#: intervention/templates/intervention/detail/view.html:92
|
||||||
msgstr "Prüfung vornehmen"
|
msgid "Revocation"
|
||||||
|
msgstr "Widerspruch"
|
||||||
|
|
||||||
#: intervention/templates/intervention/detail/view.html:39
|
#: intervention/templates/intervention/detail/includes/revocation.html:32
|
||||||
msgid "Record"
|
msgctxt "Revocation"
|
||||||
msgstr "Verzeichnen"
|
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"
|
msgid "Process type"
|
||||||
msgstr "Verfahrenstyp"
|
msgstr "Verfahrenstyp"
|
||||||
|
|
||||||
#: intervention/templates/intervention/detail/view.html:76
|
#: intervention/templates/intervention/detail/view.html:36
|
||||||
msgid "Registration office"
|
msgid "Registration office"
|
||||||
msgstr "Zulassungsbehörde"
|
msgstr "Zulassungsbehörde"
|
||||||
|
|
||||||
#: intervention/templates/intervention/detail/view.html:80
|
#: intervention/templates/intervention/detail/view.html:40
|
||||||
msgid "Registration office file number"
|
msgid "Registration office file number"
|
||||||
msgstr "Aktenzeichen Zulassungsbehörde"
|
msgstr "Aktenzeichen Zulassungsbehörde"
|
||||||
|
|
||||||
#: intervention/templates/intervention/detail/view.html:84
|
#: intervention/templates/intervention/detail/view.html:44
|
||||||
msgid "Conservation office"
|
msgid "Conservation office"
|
||||||
msgstr "Naturschutzbehörde"
|
msgstr "Naturschutzbehörde"
|
||||||
|
|
||||||
#: intervention/templates/intervention/detail/view.html:88
|
#: intervention/templates/intervention/detail/view.html:48
|
||||||
msgid "Conversation office file number"
|
msgid "Conversation office file number"
|
||||||
msgstr "Aktenzeichen Naturschutzbehörde"
|
msgstr "Aktenzeichen Naturschutzbehörde"
|
||||||
|
|
||||||
#: intervention/templates/intervention/detail/view.html:124
|
#: intervention/templates/intervention/detail/view.html:84
|
||||||
msgid "Registration date"
|
msgid "Registration date"
|
||||||
msgstr "Datum Zulassung bzw. Satzungsbeschluss"
|
msgstr "Datum Zulassung bzw. Satzungsbeschluss"
|
||||||
|
|
||||||
#: intervention/templates/intervention/detail/view.html:128
|
#: intervention/templates/intervention/detail/view.html:88
|
||||||
msgid "Binding on"
|
msgid "Binding on"
|
||||||
msgstr "Datum Bestandskraft"
|
msgstr "Datum Bestandskraft"
|
||||||
|
|
||||||
#: intervention/views.py:65
|
#: intervention/views.py:67
|
||||||
msgid "Intervention {} added"
|
msgid "Intervention {} added"
|
||||||
msgstr "Eingriff {} hinzugefügt"
|
msgstr "Eingriff {} hinzugefügt"
|
||||||
|
|
||||||
#: intervention/views.py:68 intervention/views.py:157
|
#: intervention/views.py:70 intervention/views.py:167
|
||||||
msgid "Invalid input"
|
msgid "Invalid input"
|
||||||
msgstr "Eingabe fehlerhaft"
|
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 ""
|
msgid ""
|
||||||
"Remember: This data has not been shared with you, yet. This means you can "
|
"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 "
|
"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, "
|
"bedeutet, dass Sie nur lesenden Zugriff hierauf haben und weder bearbeiten, "
|
||||||
"noch Prüfungen durchführen oder verzeichnen können."
|
"noch Prüfungen durchführen oder verzeichnen können."
|
||||||
|
|
||||||
#: intervention/views.py:154
|
#: intervention/views.py:164
|
||||||
msgid "{} edited"
|
msgid "{} edited"
|
||||||
msgstr "{} bearbeitet"
|
msgstr "{} bearbeitet"
|
||||||
|
|
||||||
#: intervention/views.py:183
|
#: intervention/views.py:193
|
||||||
msgid "{} removed"
|
msgid "{} removed"
|
||||||
msgstr "{} entfernt"
|
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"
|
msgid "{} has already been shared with you"
|
||||||
msgstr "{} wurde bereits für Sie freigegeben"
|
msgstr "{} wurde bereits für Sie freigegeben"
|
||||||
|
|
||||||
#: intervention/views.py:215
|
#: intervention/views.py:245
|
||||||
msgid "{} has been shared with you"
|
msgid "{} has been shared with you"
|
||||||
msgstr "{} ist nun für Sie freigegeben"
|
msgstr "{} ist nun für Sie freigegeben"
|
||||||
|
|
||||||
#: intervention/views.py:222
|
#: intervention/views.py:252
|
||||||
msgid "Share link invalid"
|
msgid "Share link invalid"
|
||||||
msgstr "Freigabelink ungültig"
|
msgstr "Freigabelink ungültig"
|
||||||
|
|
||||||
#: intervention/views.py:246
|
#: intervention/views.py:276
|
||||||
msgid "Share settings updated"
|
msgid "Share settings updated"
|
||||||
msgstr "Freigabe Einstellungen aktualisiert"
|
msgstr "Freigabe Einstellungen aktualisiert"
|
||||||
|
|
||||||
|
#: intervention/views.py:307
|
||||||
|
msgid "Revocation added"
|
||||||
|
msgstr "Widerspruch hinzugefügt"
|
||||||
|
|
||||||
#: konova/decorators.py:29
|
#: konova/decorators.py:29
|
||||||
msgid "You need to be staff to perform this action!"
|
msgid "You need to be staff to perform this action!"
|
||||||
msgstr "Hierfür müssen Sie Mitarbeiter sein!"
|
msgstr "Hierfür müssen Sie Mitarbeiter sein!"
|
||||||
@ -764,10 +815,6 @@ msgstr "Wann wurde diese Datei erstellt oder das Foto aufgenommen?"
|
|||||||
msgid "File"
|
msgid "File"
|
||||||
msgstr "Datei"
|
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
|
#: konova/management/commands/setup_data.py:42
|
||||||
msgid "On new related data"
|
msgid "On new related data"
|
||||||
msgstr "Wenn neue Daten für mich angelegt werden"
|
msgstr "Wenn neue Daten für mich angelegt werden"
|
||||||
|
Loading…
Reference in New Issue
Block a user