Intervention check
* adds functionality for check button * adds highlighting of important data on detail view for intervention * adds deleting logic to BaseObject model and BaseResource model * adds RunCheckForm * adds check_validity() method to Intervention class * fixes wrong success msg for adding documents * adds/updates translations
This commit is contained in:
parent
6d75fdb7a7
commit
c8ede788e0
@ -17,7 +17,6 @@ from compensation.settings import COMPENSATION_IDENTIFIER_LENGTH, COMPENSATION_I
|
|||||||
from intervention.models import Intervention, ResponsibilityData
|
from intervention.models import Intervention, ResponsibilityData
|
||||||
from konova.models import BaseObject, BaseResource, Geometry, UuidModel
|
from konova.models import BaseObject, BaseResource, Geometry, UuidModel
|
||||||
from konova.utils.generators import generate_random_string
|
from konova.utils.generators import generate_random_string
|
||||||
from organisation.models import Organisation
|
|
||||||
from user.models import UserActionLogEntry, UserAction
|
from user.models import UserActionLogEntry, UserAction
|
||||||
|
|
||||||
|
|
||||||
@ -154,29 +153,6 @@ class Compensation(AbstractCompensation):
|
|||||||
_str = "{}{}{}".format(curr_month, curr_year, rand_str)
|
_str = "{}{}{}".format(curr_month, curr_year, rand_str)
|
||||||
return COMPENSATION_IDENTIFIER_TEMPLATE.format(_str)
|
return COMPENSATION_IDENTIFIER_TEMPLATE.format(_str)
|
||||||
|
|
||||||
def delete(self, *args, **kwargs):
|
|
||||||
""" Custom delete functionality
|
|
||||||
|
|
||||||
Does not delete from database but sets a timestamp for being deleted on and which user deleted the object
|
|
||||||
|
|
||||||
Args:
|
|
||||||
*args ():
|
|
||||||
**kwargs ():
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
"""
|
|
||||||
_now = timezone.now()
|
|
||||||
_user = kwargs.get("user", None)
|
|
||||||
with transaction.atomic():
|
|
||||||
action = UserActionLogEntry.objects.create(
|
|
||||||
user=_user,
|
|
||||||
timestamp=_now,
|
|
||||||
action=UserAction.DELETED
|
|
||||||
)
|
|
||||||
self.deleted = action
|
|
||||||
self.save()
|
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
if self.identifier is None or len(self.identifier) == 0:
|
if self.identifier is None or len(self.identifier) == 0:
|
||||||
# Create new identifier
|
# Create new identifier
|
||||||
|
@ -6,6 +6,7 @@ from intervention.models import Intervention, ResponsibilityData, LegalData, Rev
|
|||||||
class InterventionAdmin(admin.ModelAdmin):
|
class InterventionAdmin(admin.ModelAdmin):
|
||||||
list_display = [
|
list_display = [
|
||||||
"id",
|
"id",
|
||||||
|
"identifier",
|
||||||
"title",
|
"title",
|
||||||
"created",
|
"created",
|
||||||
"deleted",
|
"deleted",
|
||||||
|
@ -383,3 +383,42 @@ class NewRevocationForm(BaseModalForm):
|
|||||||
self.instance.legal.revocation = revocation
|
self.instance.legal.revocation = revocation
|
||||||
self.instance.legal.save()
|
self.instance.legal.save()
|
||||||
return revocation
|
return revocation
|
||||||
|
|
||||||
|
|
||||||
|
class RunCheckForm(BaseModalForm):
|
||||||
|
checked_intervention = forms.BooleanField(
|
||||||
|
label=_("Checked intervention data"),
|
||||||
|
label_suffix="",
|
||||||
|
widget=forms.CheckboxInput(),
|
||||||
|
required=True,
|
||||||
|
)
|
||||||
|
checked_comps = forms.BooleanField(
|
||||||
|
label=_("Checked compensations data and payments"),
|
||||||
|
label_suffix="",
|
||||||
|
widget=forms.CheckboxInput(),
|
||||||
|
required=True
|
||||||
|
)
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
self.form_title = _("Run check")
|
||||||
|
self.form_caption = _("I, {} {}, confirm that all necessary control steps have been performed by myself.").format(self.user.first_name, self.user.last_name)
|
||||||
|
|
||||||
|
def is_valid(self):
|
||||||
|
super_result = super().is_valid()
|
||||||
|
# Perform check
|
||||||
|
result, msgs = self.instance.check_validity()
|
||||||
|
self.errors.update(msgs)
|
||||||
|
return result & super_result
|
||||||
|
|
||||||
|
def save(self):
|
||||||
|
with transaction.atomic():
|
||||||
|
user_action = UserActionLogEntry.objects.create(
|
||||||
|
user=self.user,
|
||||||
|
action=UserAction.CHECKED
|
||||||
|
)
|
||||||
|
# Replace old checked
|
||||||
|
if self.instance.checked:
|
||||||
|
self.instance.checked.delete()
|
||||||
|
self.instance.checked = user_action
|
||||||
|
self.instance.save()
|
@ -9,6 +9,7 @@ from django.contrib.auth.models import User
|
|||||||
from django.contrib.gis.db import models
|
from django.contrib.gis.db import models
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
from django.utils.translation import gettext_lazy as _
|
||||||
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
|
||||||
@ -133,36 +134,6 @@ class Intervention(BaseObject):
|
|||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "{} ({})".format(self.identifier, self.title)
|
return "{} ({})".format(self.identifier, self.title)
|
||||||
|
|
||||||
def delete(self, *args, **kwargs):
|
|
||||||
""" Custom delete functionality
|
|
||||||
|
|
||||||
Does not delete from database but sets a timestamp for being deleted on and which user deleted the object
|
|
||||||
|
|
||||||
Args:
|
|
||||||
*args ():
|
|
||||||
**kwargs ():
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
"""
|
|
||||||
_now = timezone.now()
|
|
||||||
_user = kwargs.get("user", None)
|
|
||||||
|
|
||||||
with transaction.atomic():
|
|
||||||
# "Delete" related compensations as well
|
|
||||||
coms = self.compensations.all()
|
|
||||||
action = UserActionLogEntry.objects.create(
|
|
||||||
user=_user,
|
|
||||||
timestamp=_now,
|
|
||||||
action=UserAction.DELETED
|
|
||||||
)
|
|
||||||
for com in coms:
|
|
||||||
com.deleted = action
|
|
||||||
com.save()
|
|
||||||
|
|
||||||
self.deleted = action
|
|
||||||
self.save()
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _generate_new_identifier() -> str:
|
def _generate_new_identifier() -> str:
|
||||||
""" Generates a new identifier for the intervention object
|
""" Generates a new identifier for the intervention object
|
||||||
@ -234,3 +205,37 @@ class Intervention(BaseObject):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
return self.users.filter(username=user.username).exists()
|
return self.users.filter(username=user.username).exists()
|
||||||
|
|
||||||
|
def check_validity(self) -> (bool, dict):
|
||||||
|
""" Validity check
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
"""
|
||||||
|
ret_msgs = {}
|
||||||
|
missing_str = _("Missing")
|
||||||
|
not_missing_str = _("Exists")
|
||||||
|
|
||||||
|
# Check responsible data
|
||||||
|
if self.responsible:
|
||||||
|
if self.responsible.registration_file_number is None or len(self.responsible.registration_file_number) == 0:
|
||||||
|
ret_msgs["Registration office file number"] = missing_str
|
||||||
|
if self.responsible.conservation_file_number is None or len(self.responsible.conservation_file_number) == 0:
|
||||||
|
ret_msgs["Conversation office file number"] = missing_str
|
||||||
|
else:
|
||||||
|
ret_msgs["responsible"] = missing_str
|
||||||
|
|
||||||
|
# Check revocation
|
||||||
|
if self.legal.revocation:
|
||||||
|
ret_msgs["Revocation"] = not_missing_str
|
||||||
|
|
||||||
|
if self.legal:
|
||||||
|
if self.legal.registration_date is None:
|
||||||
|
ret_msgs["Registration date"] = missing_str
|
||||||
|
if self.legal.binding_date is None:
|
||||||
|
ret_msgs["Binding on"] = missing_str
|
||||||
|
else:
|
||||||
|
ret_msgs["legal"] = missing_str
|
||||||
|
|
||||||
|
ret_result = len(ret_msgs) == 0
|
||||||
|
return ret_result, ret_msgs
|
@ -16,11 +16,9 @@
|
|||||||
{% fa5_icon 'share-alt' %}
|
{% fa5_icon 'share-alt' %}
|
||||||
</button>
|
</button>
|
||||||
{% if is_zb_member %}
|
{% if is_zb_member %}
|
||||||
<a href="{% url 'home' %}" class="mr-2">
|
<button class="btn btn-default btn-modal mr-2" title="{% trans 'Run check' %}" data-form-url="{% url 'intervention:run-check' intervention.id %}">
|
||||||
<button class="btn btn-default" title="{% trans 'Run check' %}">
|
|
||||||
{% fa5_icon 'star' %}
|
{% fa5_icon 'star' %}
|
||||||
</button>
|
</button>
|
||||||
</a>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if is_ets_member %}
|
{% if is_ets_member %}
|
||||||
<a href="{% url 'home' %}" class="mr-2">
|
<a href="{% url 'home' %}" class="mr-2">
|
||||||
|
@ -20,15 +20,15 @@
|
|||||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||||
<div class="table-container">
|
<div class="table-container">
|
||||||
<table class="table table-hover">
|
<table class="table table-hover">
|
||||||
<tr>
|
<tr {% if not intervention.title %}class="alert alert-danger"{% endif %}>
|
||||||
<th class="w-25" scope="row">{% trans 'Title' %}</th>
|
<th class="w-25" scope="row">{% trans 'Title' %}</th>
|
||||||
<td class="align-middle">{{intervention.title}}</td>
|
<td class="align-middle">{{intervention.title|default_if_none:""}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr {% if not intervention.legal.process_type %}class="alert alert-danger"{% endif %}>
|
||||||
<th scope="row">{% trans 'Process type' %}</th>
|
<th scope="row">{% trans 'Process type' %}</th>
|
||||||
<td class="align-middle">{{intervention.legal.process_type|default_if_none:""}}</td>
|
<td class="align-middle">{{intervention.legal.process_type|default_if_none:""}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr {% if not intervention.legal.law %}class="alert alert-danger"{% endif %}>
|
||||||
<th scope="row">{% trans 'Law' %}</th>
|
<th scope="row">{% trans 'Law' %}</th>
|
||||||
<td class="align-middle">{{intervention.legal.law|default_if_none:""}}</td>
|
<td class="align-middle">{{intervention.legal.law|default_if_none:""}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -36,7 +36,7 @@
|
|||||||
<th scope="row">{% trans 'Registration office' %}</th>
|
<th scope="row">{% trans 'Registration office' %}</th>
|
||||||
<td class="align-middle">{{intervention.responsible.registration_office|default_if_none:""}}</td>
|
<td class="align-middle">{{intervention.responsible.registration_office|default_if_none:""}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr {% if not intervention.responsible.registration_file_number %}class="alert alert-danger"{% endif %}>
|
||||||
<th scope="row">{% trans 'Registration office file number' %}</th>
|
<th scope="row">{% trans 'Registration office file number' %}</th>
|
||||||
<td class="align-middle">{{intervention.responsible.registration_file_number|default_if_none:""}}</td>
|
<td class="align-middle">{{intervention.responsible.registration_file_number|default_if_none:""}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -44,11 +44,11 @@
|
|||||||
<th scope="row">{% trans 'Conservation office' %}</th>
|
<th scope="row">{% trans 'Conservation office' %}</th>
|
||||||
<td class="align-middle">{{intervention.responsible.conservation_office|default_if_none:""}}</td>
|
<td class="align-middle">{{intervention.responsible.conservation_office|default_if_none:""}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr{% if not intervention.responsible.conservation_file_number %}class="alert alert-danger"{% endif %}>
|
||||||
<th scope="row">{% trans 'Conversation office file number' %}</th>
|
<th scope="row">{% trans 'Conversation office file number' %}</th>
|
||||||
<td class="align-middle">{{intervention.responsible.conservation_file_number|default_if_none:""}}</td>
|
<td class="align-middle">{{intervention.responsible.conservation_file_number|default_if_none:""}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr {% if not intervention.responsible.handler %}class="alert alert-danger"{% endif %}>
|
||||||
<th scope="row">{% trans 'Intervention handler' %}</th>
|
<th scope="row">{% trans 'Intervention handler' %}</th>
|
||||||
<td class="align-middle">{{intervention.responsible.handler|default_if_none:""}}</td>
|
<td class="align-middle">{{intervention.responsible.handler|default_if_none:""}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -80,11 +80,11 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr {% if not intervention.legal.registration_date %}class="alert alert-danger"{% endif %}>
|
||||||
<th scope="row">{% trans 'Registration date' %}</th>
|
<th scope="row">{% trans 'Registration date' %}</th>
|
||||||
<td class="align-middle">{{intervention.legal.registration_date|default_if_none:""}}</td>
|
<td class="align-middle">{{intervention.legal.registration_date|default_if_none:""}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr {% if not intervention.legal.binding_date %}class="alert alert-danger"{% endif %}>
|
||||||
<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>
|
||||||
|
@ -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, remove_revocation_view, new_revocation_view
|
create_share_view, remove_revocation_view, new_revocation_view, run_check_view
|
||||||
|
|
||||||
app_name = "intervention"
|
app_name = "intervention"
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
@ -20,6 +20,7 @@ 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'),
|
||||||
|
path('<id>/check', run_check_view, name='run-check'),
|
||||||
|
|
||||||
# Revocation routes
|
# Revocation routes
|
||||||
path('<id>/revocation/new', new_revocation_view, name='revocation-new'),
|
path('<id>/revocation/new', new_revocation_view, name='revocation-new'),
|
||||||
|
@ -4,7 +4,8 @@ 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, NewRevocationForm
|
from intervention.forms import NewInterventionForm, EditInterventionForm, ShareInterventionForm, NewRevocationForm, \
|
||||||
|
RunCheckForm
|
||||||
from intervention.models import Intervention, Revocation
|
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
|
||||||
@ -90,7 +91,10 @@ def new_document_view(request: HttpRequest, id: str):
|
|||||||
"""
|
"""
|
||||||
intervention = get_object_or_404(Intervention, id=id)
|
intervention = get_object_or_404(Intervention, id=id)
|
||||||
form = NewDocumentForm(request.POST or None, request.FILES or None, instance=intervention, user=request.user)
|
form = NewDocumentForm(request.POST or None, request.FILES or None, instance=intervention, user=request.user)
|
||||||
return form.process_request(request)
|
return form.process_request(
|
||||||
|
request,
|
||||||
|
msg_success=_("Document added")
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@ -286,6 +290,49 @@ def create_share_view(request: HttpRequest, id: str):
|
|||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
@login_required
|
||||||
|
def run_check_view(request: HttpRequest, id: str):
|
||||||
|
""" Renders check 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 = RunCheckForm(request.POST or None, instance=intervention, user=request.user)
|
||||||
|
if request.method == "POST":
|
||||||
|
if form.is_valid():
|
||||||
|
form.save()
|
||||||
|
messages.info(
|
||||||
|
request,
|
||||||
|
_("Check performed")
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
messages.error(
|
||||||
|
request,
|
||||||
|
_("There has been errors on this intervention:"),
|
||||||
|
extra_tags="danger"
|
||||||
|
)
|
||||||
|
for error_name, error_val in form.errors.items():
|
||||||
|
messages.error(
|
||||||
|
request,
|
||||||
|
_("{}: {}").format(_(error_name), _(error_val)),
|
||||||
|
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
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def new_revocation_view(request: HttpRequest, id: str):
|
def new_revocation_view(request: HttpRequest, id: str):
|
||||||
""" Renders sharing form for an intervention
|
""" Renders sharing form for an intervention
|
||||||
|
@ -313,7 +313,7 @@ class NewDocumentForm(BaseModalForm):
|
|||||||
created=action,
|
created=action,
|
||||||
title=self.cleaned_data["title"],
|
title=self.cleaned_data["title"],
|
||||||
comment=self.cleaned_data["comment"],
|
comment=self.cleaned_data["comment"],
|
||||||
document=self.cleaned_data["file"],
|
file=self.cleaned_data["file"],
|
||||||
date_of_creation=self.cleaned_data["creation_date"],
|
date_of_creation=self.cleaned_data["creation_date"],
|
||||||
)
|
)
|
||||||
self.instance.documents.add(doc)
|
self.instance.documents.add(doc)
|
||||||
|
@ -10,9 +10,9 @@ import uuid
|
|||||||
|
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from django.contrib.gis.db.models import MultiPolygonField
|
from django.contrib.gis.db.models import MultiPolygonField
|
||||||
from django.db import models
|
from django.db import models, transaction
|
||||||
|
|
||||||
from user.models import UserActionLogEntry
|
from user.models import UserActionLogEntry, UserAction
|
||||||
|
|
||||||
|
|
||||||
class UuidModel(models.Model):
|
class UuidModel(models.Model):
|
||||||
@ -38,6 +38,11 @@ class BaseResource(UuidModel):
|
|||||||
class Meta:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
|
|
||||||
|
def delete(self, using=None, keep_parents=False):
|
||||||
|
if self.created:
|
||||||
|
self.created.delete()
|
||||||
|
super().delete()
|
||||||
|
|
||||||
|
|
||||||
class BaseObject(BaseResource):
|
class BaseObject(BaseResource):
|
||||||
"""
|
"""
|
||||||
@ -53,6 +58,31 @@ class BaseObject(BaseResource):
|
|||||||
class Meta:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
|
|
||||||
|
def delete(self, *args, **kwargs):
|
||||||
|
""" Custom delete functionality
|
||||||
|
|
||||||
|
Does not delete from database but sets a timestamp for being deleted on and which user deleted the object
|
||||||
|
|
||||||
|
Args:
|
||||||
|
*args ():
|
||||||
|
**kwargs ():
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
"""
|
||||||
|
if self.deleted:
|
||||||
|
# Nothing to do here
|
||||||
|
return
|
||||||
|
|
||||||
|
_user = kwargs.get("user", None)
|
||||||
|
with transaction.atomic():
|
||||||
|
action = UserActionLogEntry.objects.create(
|
||||||
|
user=_user,
|
||||||
|
action=UserAction.DELETED
|
||||||
|
)
|
||||||
|
self.deleted = action
|
||||||
|
self.save()
|
||||||
|
|
||||||
|
|
||||||
class DeadlineType(models.TextChoices):
|
class DeadlineType(models.TextChoices):
|
||||||
"""
|
"""
|
||||||
|
Binary file not shown.
@ -16,7 +16,7 @@ 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 13:27+0200\n"
|
"POT-Creation-Date: 2021-08-04 15:12+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"
|
||||||
@ -160,27 +160,27 @@ msgstr "Neue Maßnahme"
|
|||||||
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"
|
||||||
|
|
||||||
#: compensation/models.py:60
|
#: compensation/models.py:59
|
||||||
msgid "cm"
|
msgid "cm"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: compensation/models.py:61
|
#: compensation/models.py:60
|
||||||
msgid "m"
|
msgid "m"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: compensation/models.py:62
|
#: compensation/models.py:61
|
||||||
msgid "km"
|
msgid "km"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: compensation/models.py:63
|
#: compensation/models.py:62
|
||||||
msgid "m²"
|
msgid "m²"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: compensation/models.py:64
|
#: compensation/models.py:63
|
||||||
msgid "ha"
|
msgid "ha"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: compensation/models.py:65
|
#: compensation/models.py:64
|
||||||
msgid "Pieces"
|
msgid "Pieces"
|
||||||
msgstr "Stück"
|
msgstr "Stück"
|
||||||
|
|
||||||
@ -331,12 +331,12 @@ msgid "Public report"
|
|||||||
msgstr "Öffentlicher Bericht"
|
msgstr "Öffentlicher Bericht"
|
||||||
|
|
||||||
#: compensation/templates/compensation/detail/includes/controls.html:17
|
#: compensation/templates/compensation/detail/includes/controls.html:17
|
||||||
#: intervention/templates/intervention/detail/includes/controls.html:34
|
#: intervention/templates/intervention/detail/includes/controls.html:32
|
||||||
msgid "Edit"
|
msgid "Edit"
|
||||||
msgstr "Bearbeiten"
|
msgstr "Bearbeiten"
|
||||||
|
|
||||||
#: compensation/templates/compensation/detail/includes/controls.html:21
|
#: compensation/templates/compensation/detail/includes/controls.html:21
|
||||||
#: intervention/templates/intervention/detail/includes/controls.html:38
|
#: intervention/templates/intervention/detail/includes/controls.html:36
|
||||||
#: venv/lib/python3.7/site-packages/django/forms/formsets.py:391
|
#: venv/lib/python3.7/site-packages/django/forms/formsets.py:391
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr "Löschen"
|
msgstr "Löschen"
|
||||||
@ -461,7 +461,7 @@ msgstr "Zahlung gelöscht"
|
|||||||
msgid "Withdraw removed"
|
msgid "Withdraw removed"
|
||||||
msgstr "Abbuchung entfernt"
|
msgstr "Abbuchung entfernt"
|
||||||
|
|
||||||
#: compensation/views.py:280
|
#: compensation/views.py:280 intervention/views.py:96
|
||||||
msgid "Document added"
|
msgid "Document added"
|
||||||
msgstr "Dokument hinzugefügt"
|
msgstr "Dokument hinzugefügt"
|
||||||
|
|
||||||
@ -606,6 +606,35 @@ msgstr "Muss kleiner als 15 Mb sein"
|
|||||||
msgid "Add revocation"
|
msgid "Add revocation"
|
||||||
msgstr "Widerspruch hinzufügen"
|
msgstr "Widerspruch hinzufügen"
|
||||||
|
|
||||||
|
#: intervention/forms.py:390
|
||||||
|
msgid "Checked intervention data"
|
||||||
|
msgstr "Eingriffsdaten geprüft"
|
||||||
|
|
||||||
|
#: intervention/forms.py:396
|
||||||
|
msgid "Checked compensations data and payments"
|
||||||
|
msgstr "Kompensationen und Zahlungen geprüft"
|
||||||
|
|
||||||
|
#: intervention/forms.py:404
|
||||||
|
#: intervention/templates/intervention/detail/includes/controls.html:19
|
||||||
|
msgid "Run check"
|
||||||
|
msgstr "Prüfung vornehmen"
|
||||||
|
|
||||||
|
#: intervention/forms.py:405
|
||||||
|
msgid ""
|
||||||
|
"I, {} {}, confirm that all necessary control steps have been performed by "
|
||||||
|
"myself."
|
||||||
|
msgstr ""
|
||||||
|
"Ich, {} {}, bestätige, dass die notwendigen Kontrollschritte durchgeführt "
|
||||||
|
"wurden:"
|
||||||
|
|
||||||
|
#: intervention/models.py:216
|
||||||
|
msgid "Missing"
|
||||||
|
msgstr "Fehlt"
|
||||||
|
|
||||||
|
#: intervention/models.py:217
|
||||||
|
msgid "Exists"
|
||||||
|
msgstr "Existiert"
|
||||||
|
|
||||||
#: intervention/tables.py:70
|
#: intervention/tables.py:70
|
||||||
msgid "Interventions"
|
msgid "Interventions"
|
||||||
msgstr "Eingriffe"
|
msgstr "Eingriffe"
|
||||||
@ -624,11 +653,7 @@ 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
|
#: intervention/templates/intervention/detail/includes/controls.html:25
|
||||||
msgid "Run check"
|
|
||||||
msgstr "Prüfung vornehmen"
|
|
||||||
|
|
||||||
#: intervention/templates/intervention/detail/includes/controls.html:27
|
|
||||||
msgid "Record"
|
msgid "Record"
|
||||||
msgstr "Verzeichnen"
|
msgstr "Verzeichnen"
|
||||||
|
|
||||||
@ -711,19 +736,19 @@ msgstr "Datum Zulassung bzw. Satzungsbeschluss"
|
|||||||
msgid "Binding on"
|
msgid "Binding on"
|
||||||
msgstr "Datum Bestandskraft"
|
msgstr "Datum Bestandskraft"
|
||||||
|
|
||||||
#: intervention/views.py:67
|
#: intervention/views.py:68
|
||||||
msgid "Intervention {} added"
|
msgid "Intervention {} added"
|
||||||
msgstr "Eingriff {} hinzugefügt"
|
msgstr "Eingriff {} hinzugefügt"
|
||||||
|
|
||||||
#: intervention/views.py:70 intervention/views.py:167
|
#: intervention/views.py:71 intervention/views.py:171
|
||||||
msgid "Invalid input"
|
msgid "Invalid input"
|
||||||
msgstr "Eingabe fehlerhaft"
|
msgstr "Eingabe fehlerhaft"
|
||||||
|
|
||||||
#: intervention/views.py:126
|
#: intervention/views.py:130
|
||||||
msgid "This intervention has a revocation from {}"
|
msgid "This intervention has a revocation from {}"
|
||||||
msgstr "Es existiert ein Widerspruch vom {}"
|
msgstr "Es existiert ein Widerspruch vom {}"
|
||||||
|
|
||||||
#: intervention/views.py:141
|
#: intervention/views.py:145
|
||||||
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 "
|
||||||
@ -733,35 +758,47 @@ 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:164
|
#: intervention/views.py:168
|
||||||
msgid "{} edited"
|
msgid "{} edited"
|
||||||
msgstr "{} bearbeitet"
|
msgstr "{} bearbeitet"
|
||||||
|
|
||||||
#: intervention/views.py:193
|
#: intervention/views.py:197
|
||||||
msgid "{} removed"
|
msgid "{} removed"
|
||||||
msgstr "{} entfernt"
|
msgstr "{} entfernt"
|
||||||
|
|
||||||
#: intervention/views.py:214
|
#: intervention/views.py:218
|
||||||
msgid "Revocation removed"
|
msgid "Revocation removed"
|
||||||
msgstr "Widerspruch entfernt"
|
msgstr "Widerspruch entfernt"
|
||||||
|
|
||||||
#: intervention/views.py:240
|
#: intervention/views.py:244
|
||||||
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:245
|
#: intervention/views.py:249
|
||||||
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:252
|
#: intervention/views.py:256
|
||||||
msgid "Share link invalid"
|
msgid "Share link invalid"
|
||||||
msgstr "Freigabelink ungültig"
|
msgstr "Freigabelink ungültig"
|
||||||
|
|
||||||
#: intervention/views.py:276
|
#: intervention/views.py:280
|
||||||
msgid "Share settings updated"
|
msgid "Share settings updated"
|
||||||
msgstr "Freigabe Einstellungen aktualisiert"
|
msgstr "Freigabe Einstellungen aktualisiert"
|
||||||
|
|
||||||
#: intervention/views.py:307
|
#: intervention/views.py:311
|
||||||
|
msgid "Check performed"
|
||||||
|
msgstr "Prüfung durchgeführt"
|
||||||
|
|
||||||
|
#: intervention/views.py:316
|
||||||
|
msgid "There has been errors on this intervention:"
|
||||||
|
msgstr "Es liegen Fehler in diesem Eingriff vor:"
|
||||||
|
|
||||||
|
#: intervention/views.py:322
|
||||||
|
msgid "{}: {}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: intervention/views.py:354
|
||||||
msgid "Revocation added"
|
msgid "Revocation added"
|
||||||
msgstr "Widerspruch hinzugefügt"
|
msgstr "Widerspruch hinzugefügt"
|
||||||
|
|
||||||
@ -839,19 +876,19 @@ msgstr "Wenn meine freigegebenen Daten gelöscht wurden"
|
|||||||
msgid "On registered data edited"
|
msgid "On registered data edited"
|
||||||
msgstr "Wenn meine freigegebenen Daten bearbeitet wurden"
|
msgstr "Wenn meine freigegebenen Daten bearbeitet wurden"
|
||||||
|
|
||||||
#: konova/models.py:61
|
#: konova/models.py:92
|
||||||
msgid "Finished"
|
msgid "Finished"
|
||||||
msgstr "Umgesetzt bis"
|
msgstr "Umgesetzt bis"
|
||||||
|
|
||||||
#: konova/models.py:62
|
#: konova/models.py:93
|
||||||
msgid "Maintain"
|
msgid "Maintain"
|
||||||
msgstr "Unterhaltung bis"
|
msgstr "Unterhaltung bis"
|
||||||
|
|
||||||
#: konova/models.py:63
|
#: konova/models.py:94
|
||||||
msgid "Control"
|
msgid "Control"
|
||||||
msgstr "Kontrolle am"
|
msgstr "Kontrolle am"
|
||||||
|
|
||||||
#: konova/models.py:64
|
#: konova/models.py:95
|
||||||
msgid "Other"
|
msgid "Other"
|
||||||
msgstr "Sonstige"
|
msgstr "Sonstige"
|
||||||
|
|
||||||
@ -2365,9 +2402,6 @@ msgstr ""
|
|||||||
#~ msgid "Show intervention"
|
#~ msgid "Show intervention"
|
||||||
#~ msgstr "Zeige Eingriffe"
|
#~ msgstr "Zeige Eingriffe"
|
||||||
|
|
||||||
#~ msgid "Compensation management"
|
|
||||||
#~ msgstr "Kompensationsverwaltung"
|
|
||||||
|
|
||||||
#~ msgid "Show compensation"
|
#~ msgid "Show compensation"
|
||||||
#~ msgstr "Zeige Kompensationen"
|
#~ msgstr "Zeige Kompensationen"
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user