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:
mipel 2021-08-04 13:32:35 +02:00
parent d7c95c9e70
commit 6818ef290e
25 changed files with 495 additions and 197 deletions

View File

@ -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")

View File

@ -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">

View File

@ -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>

View File

@ -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">

View File

@ -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">

View File

@ -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">

View File

@ -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">

View File

@ -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>

View File

@ -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)

View File

@ -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

View File

@ -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,

View File

@ -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">

View File

@ -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>

View File

@ -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">

View File

@ -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">

View File

@ -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">

View File

@ -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>

View File

@ -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>

View File

@ -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'),
] ]

View File

@ -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

View File

@ -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):

View File

@ -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)

View File

@ -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.

View File

@ -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"