Compare commits
4 Commits
5efa755188
...
58510eee50
Author | SHA1 | Date | |
---|---|---|---|
|
58510eee50 | ||
|
abdc574ea2 | ||
|
93c02a72ca | ||
|
a7aeecde2e |
@ -52,7 +52,7 @@ class EcoAccountWithdrawAdmin(admin.ModelAdmin):
|
||||
"id",
|
||||
"account",
|
||||
"intervention",
|
||||
"amount",
|
||||
"surface",
|
||||
]
|
||||
|
||||
|
||||
|
@ -53,3 +53,48 @@ class CompensationTableFilter(InterventionTableFilter):
|
||||
)
|
||||
else:
|
||||
return queryset
|
||||
|
||||
|
||||
class EcoAccountTableFilter(InterventionTableFilter):
|
||||
""" TableFilter for eco accounts
|
||||
|
||||
Based widely on InterventionTableFilter.
|
||||
Just some minor changes for EcoAccount model.
|
||||
|
||||
"""
|
||||
|
||||
def _filter_show_all(self, queryset, name, value) -> QuerySet:
|
||||
""" Filters queryset depending on value of 'show_all' setting
|
||||
|
||||
Args:
|
||||
queryset ():
|
||||
name ():
|
||||
value ():
|
||||
|
||||
Returns:
|
||||
|
||||
"""
|
||||
if not value:
|
||||
return queryset.filter(
|
||||
users__in=[self.user], # requesting user has access
|
||||
)
|
||||
else:
|
||||
return queryset
|
||||
|
||||
def _filter_show_recorded(self, queryset, name, value) -> QuerySet:
|
||||
""" Filters queryset depending on value of 'show_recorded' setting
|
||||
|
||||
Args:
|
||||
queryset ():
|
||||
name ():
|
||||
value ():
|
||||
|
||||
Returns:
|
||||
|
||||
"""
|
||||
if not value:
|
||||
return queryset.filter(
|
||||
recorded=None,
|
||||
)
|
||||
else:
|
||||
return queryset
|
||||
|
@ -17,7 +17,7 @@ from compensation.settings import COMPENSATION_IDENTIFIER_LENGTH, COMPENSATION_I
|
||||
from intervention.models import Intervention, ResponsibilityData
|
||||
from konova.models import BaseObject, BaseResource, Geometry, UuidModel
|
||||
from konova.utils.generators import generate_random_string
|
||||
from user.models import UserActionLogEntry, UserAction
|
||||
from user.models import UserActionLogEntry
|
||||
|
||||
|
||||
class Payment(BaseResource):
|
||||
@ -175,6 +175,16 @@ class EcoAccount(AbstractCompensation):
|
||||
help_text="Users having access (shared with)"
|
||||
)
|
||||
|
||||
# Refers to "verzeichnen"
|
||||
recorded = models.OneToOneField(
|
||||
UserActionLogEntry,
|
||||
on_delete=models.SET_NULL,
|
||||
null=True,
|
||||
blank=True,
|
||||
help_text="Holds data on user and timestamp of this action",
|
||||
related_name="+"
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return "{}".format(self.identifier)
|
||||
|
||||
@ -189,15 +199,14 @@ class EcoAccountWithdraw(BaseResource):
|
||||
null=True,
|
||||
blank=True,
|
||||
help_text="Withdrawn from",
|
||||
related_name="eco_withdraws",
|
||||
related_name="withdraws",
|
||||
)
|
||||
amount = models.FloatField(
|
||||
surface = models.FloatField(
|
||||
null=True,
|
||||
blank=True,
|
||||
help_text="Amount withdrawn (percentage)",
|
||||
help_text="Amount withdrawn (m²)",
|
||||
validators=[
|
||||
MinValueValidator(limit_value=0.00),
|
||||
MaxValueValidator(limit_value=100),
|
||||
]
|
||||
)
|
||||
intervention = models.ForeignKey(
|
||||
@ -206,8 +215,8 @@ class EcoAccountWithdraw(BaseResource):
|
||||
null=True,
|
||||
blank=True,
|
||||
help_text="Withdrawn for",
|
||||
related_name="eco_withdraws",
|
||||
related_name="withdraws",
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return "{} of {}".format(self.amount, self.account)
|
||||
return "{} of {}".format(self.surface, self.account)
|
||||
|
@ -5,14 +5,16 @@ Contact: michel.peltriaux@sgdnord.rlp.de
|
||||
Created on: 01.12.20
|
||||
|
||||
"""
|
||||
from django.db.models import Sum
|
||||
from django.http import HttpRequest
|
||||
from django.template.loader import render_to_string
|
||||
from django.urls import reverse
|
||||
from django.utils.html import format_html
|
||||
from django.utils.timezone import localtime
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from compensation.filters import CompensationTableFilter
|
||||
from compensation.models import Compensation
|
||||
from compensation.filters import CompensationTableFilter, EcoAccountTableFilter
|
||||
from compensation.models import Compensation, EcoAccount
|
||||
from intervention.filters import InterventionTableFilter
|
||||
from konova.sub_settings.django_settings import DEFAULT_DATE_TIME_FORMAT
|
||||
from konova.utils.tables import BaseTable
|
||||
@ -57,7 +59,7 @@ class CompensationTable(BaseTable):
|
||||
class Meta(BaseTable.Meta):
|
||||
template_name = "django_tables2/bootstrap4.html"
|
||||
|
||||
def __init__(self, request:HttpRequest, *args, **kwargs):
|
||||
def __init__(self, request: HttpRequest, *args, **kwargs):
|
||||
self.title = _("Compensations")
|
||||
self.add_new_url = reverse("compensation:new")
|
||||
qs = kwargs.get("queryset", None)
|
||||
@ -170,43 +172,120 @@ class EcoAccountTable(BaseTable):
|
||||
orderable=True,
|
||||
accessor="title",
|
||||
)
|
||||
d = tables.Column(
|
||||
verbose_name=_("Created on"),
|
||||
av = tables.Column(
|
||||
verbose_name=_("Available"),
|
||||
orderable=True,
|
||||
empty_values=[],
|
||||
)
|
||||
r = tables.Column(
|
||||
verbose_name=_("Recorded"),
|
||||
orderable=True,
|
||||
empty_values=[],
|
||||
accessor="recorded",
|
||||
)
|
||||
e = tables.Column(
|
||||
verbose_name=_("Editable"),
|
||||
orderable=True,
|
||||
empty_values=[],
|
||||
accessor="users",
|
||||
)
|
||||
lm = tables.Column(
|
||||
verbose_name=_("Last edit"),
|
||||
orderable=True,
|
||||
accessor="created__timestamp",
|
||||
)
|
||||
ac = tables.Column(
|
||||
verbose_name=_("Actions"),
|
||||
orderable=False,
|
||||
empty_values=[],
|
||||
attrs={"td": {"class": "action-col"}}
|
||||
)
|
||||
|
||||
class Meta(BaseTable.Meta):
|
||||
pass
|
||||
template_name = "django_tables2/bootstrap4.html"
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
def __init__(self, request: HttpRequest, *args, **kwargs):
|
||||
self.title = _("Eco Accounts")
|
||||
self.add_new_url = reverse("compensation:acc-new")
|
||||
qs = kwargs.get("queryset", None)
|
||||
self.filter = EcoAccountTableFilter(
|
||||
user=request.user,
|
||||
data=request.GET,
|
||||
queryset=qs,
|
||||
)
|
||||
super().__init__(request, self.filter, *args, **kwargs)
|
||||
|
||||
def render_id(self, value, record: EcoAccount):
|
||||
""" Renders the id column for an eco account
|
||||
|
||||
Args:
|
||||
value (str): The identifier value
|
||||
record (EcoAccount): The eco account record
|
||||
|
||||
Returns:
|
||||
|
||||
def render_ac(self, value, record):
|
||||
"""
|
||||
Renders possible actions for this record, such as delete.
|
||||
"""
|
||||
intervention = _("Compensation")
|
||||
html = ""
|
||||
html += self.render_open_btn(
|
||||
_("Open {}").format(intervention),
|
||||
reverse("compensation:open", args=(record.id,)),
|
||||
new_tab=True
|
||||
)
|
||||
html += self.render_edit_btn(
|
||||
_("Edit {}").format(intervention),
|
||||
reverse("compensation:edit", args=(record.id,)),
|
||||
)
|
||||
html += self.render_delete_btn(
|
||||
_("Delete {}").format(intervention),
|
||||
reverse("compensation:remove", args=(record.id,)),
|
||||
html += self.render_link(
|
||||
tooltip=_("Open {}").format(_("Eco-account")),
|
||||
href=reverse("compensation:acc-open", args=(record.id,)),
|
||||
txt=value,
|
||||
new_tab=False,
|
||||
)
|
||||
return format_html(html)
|
||||
|
||||
def render_av(self, value, record: EcoAccount):
|
||||
""" Renders the available column for an eco account
|
||||
|
||||
Args:
|
||||
value (str): The identifier value
|
||||
record (EcoAccount): The eco account record
|
||||
|
||||
Returns:
|
||||
|
||||
"""
|
||||
withdraws = record.withdraws.all()
|
||||
withdraw_surfaces = withdraws.aggregate(Sum("surface"))["surface__sum"] or 0
|
||||
after_states_surfaces = record.after_states.all().aggregate(Sum("surface"))["surface__sum"] or withdraw_surfaces ## no division by zero
|
||||
value = int(((after_states_surfaces - withdraw_surfaces) / after_states_surfaces) * 100)
|
||||
html = render_to_string("konova/custom_widgets/progressbar.html", {"value": value})
|
||||
return format_html(html)
|
||||
|
||||
def render_r(self, value, record: EcoAccount):
|
||||
""" Renders the registered column for an eco account
|
||||
|
||||
Args:
|
||||
value (str): The identifier value
|
||||
record (EcoAccount): The eco account record
|
||||
|
||||
Returns:
|
||||
|
||||
"""
|
||||
html = ""
|
||||
checked = value is not None
|
||||
tooltip = _("Not recorded yet. Can not be used for withdraws, yet.")
|
||||
if checked:
|
||||
value = value.timestamp
|
||||
value = localtime(value)
|
||||
on = value.strftime(DEFAULT_DATE_TIME_FORMAT)
|
||||
tooltip = _("Recorded on {} by {}").format(on, record.recorded.user)
|
||||
html += self.render_bookmark(
|
||||
tooltip=tooltip,
|
||||
icn_filled=checked,
|
||||
)
|
||||
return format_html(html)
|
||||
|
||||
def render_e(self, value, record: EcoAccount):
|
||||
""" Renders the registered column for an eco account
|
||||
|
||||
Args:
|
||||
value (str): The identifier value
|
||||
record (EcoAccount): The eco account record
|
||||
|
||||
Returns:
|
||||
|
||||
"""
|
||||
html = ""
|
||||
has_access = value.filter(
|
||||
username=self.user.username
|
||||
).exists()
|
||||
|
||||
html += self.render_icn(
|
||||
tooltip=_("Full access granted") if has_access else _("Access not granted"),
|
||||
icn_class="fas fa-edit rlp-r-inv" if has_access else "far fa-edit",
|
||||
)
|
||||
return format_html(html)
|
||||
|
@ -4,14 +4,14 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<h5>
|
||||
<span class="badge badge-light">{{comp.actions.count}}</span>
|
||||
<span class="badge badge-light">{{obj.actions.count}}</span>
|
||||
{% trans 'Actions' context 'Compensation' %}
|
||||
</h5>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="d-flex justify-content-end">
|
||||
{% if is_default_member and has_access %}
|
||||
<button class="btn btn-outline-default btn-modal" data-form-url="{% url 'compensation:new-action' comp.id %}" title="{% trans 'Add new action' %}">
|
||||
<button class="btn btn-outline-default btn-modal" data-form-url="{% url 'compensation:new-action' obj.id %}" title="{% trans 'Add new action' %}">
|
||||
{% fa5_icon 'plus' %}
|
||||
{% fa5_icon 'seedling' %}
|
||||
</button>
|
||||
@ -39,7 +39,7 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for action in comp.actions.all %}
|
||||
{% for action in obj.actions.all %}
|
||||
<tr>
|
||||
<td class="align-middle">
|
||||
{{ action.action_type }}
|
@ -18,10 +18,10 @@
|
||||
{% fa5_icon 'edit' %}
|
||||
</button>
|
||||
</a>
|
||||
<button class="btn btn-default btn-modal mr-2" data-form-url="{% url 'compensation:log' comp.id %}" title="{% trans 'Show log' %}">
|
||||
<button class="btn btn-default btn-modal mr-2" data-form-url="{% url 'compensation:log' obj.id %}" title="{% trans 'Show log' %}">
|
||||
{% fa5_icon 'history' %}
|
||||
</button>
|
||||
<button class="btn btn-default btn-modal" data-form-url="{% url 'compensation:remove' comp.id %}" title="{% trans 'Delete' %}">
|
||||
<button class="btn btn-default btn-modal" data-form-url="{% url 'compensation:remove' obj.id %}" title="{% trans 'Delete' %}">
|
||||
{% fa5_icon 'trash' %}
|
||||
</button>
|
||||
{% endif %}
|
@ -4,14 +4,14 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<h5>
|
||||
<span class="badge badge-light">{{comp.deadlines.count}}</span>
|
||||
<span class="badge badge-light">{{obj.deadlines.count}}</span>
|
||||
{% trans 'Deadlines' %}
|
||||
</h5>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="d-flex justify-content-end">
|
||||
{% if is_default_member and has_access %}
|
||||
<button class="btn btn-outline-default btn-modal" data-form-url="{% url 'compensation:new-deadline' comp.id %}" title="{% trans 'Add new deadline' %}">
|
||||
<button class="btn btn-outline-default btn-modal" data-form-url="{% url 'compensation:new-deadline' obj.id %}" title="{% trans 'Add new deadline' %}">
|
||||
{% fa5_icon 'plus' %}
|
||||
{% fa5_icon 'calendar-check' %}
|
||||
</button>
|
||||
@ -39,7 +39,7 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for deadline in comp.deadlines.all %}
|
||||
{% for deadline in obj.deadlines.all %}
|
||||
<tr>
|
||||
<td class="align-middle">
|
||||
{% trans deadline.type_humanized %}
|
@ -4,14 +4,14 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<h5>
|
||||
<span class="badge badge-light">{{comp.documents.count}}</span>
|
||||
<span class="badge badge-light">{{obj.documents.count}}</span>
|
||||
{% trans 'Documents' %}
|
||||
</h5>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="d-flex justify-content-end">
|
||||
{% if is_default_member and has_access %}
|
||||
<button class="btn btn-outline-default btn-modal" data-form-url="{% url 'compensation:new-doc' comp.id %}" title="{% trans 'Add new document' %}">
|
||||
<button class="btn btn-outline-default btn-modal" data-form-url="{% url 'compensation:new-doc' obj.id %}" title="{% trans 'Add new document' %}">
|
||||
{% fa5_icon 'plus' %}
|
||||
{% fa5_icon 'file' %}
|
||||
</button>
|
||||
@ -36,7 +36,7 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for doc in comp.documents.all %}
|
||||
{% for doc in obj.documents.all %}
|
||||
<tr>
|
||||
<td class="align-middle">
|
||||
<a href="{% url 'doc-open' doc.id %}">
|
@ -4,14 +4,14 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<h5>
|
||||
<span class="badge badge-light">{{comp.after_states.count}}</span>
|
||||
<span class="badge badge-light">{{obj.after_states.count}}</span>
|
||||
{% trans 'States after' %}
|
||||
</h5>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="d-flex justify-content-end">
|
||||
{% if is_default_member and has_access %}
|
||||
<button class="btn btn-outline-default btn-modal" data-form-url="{% url 'compensation:new-state' comp.id %}" title="{% trans 'Add new state after' %}">
|
||||
<button class="btn btn-outline-default btn-modal" data-form-url="{% url 'compensation:new-state' obj.id %}" title="{% trans 'Add new state after' %}">
|
||||
{% fa5_icon 'plus' %}
|
||||
{% fa5_icon 'layer-group' %}
|
||||
</button>
|
@ -4,14 +4,14 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<h5>
|
||||
<span class="badge badge-light">{{comp.before_states.count}}</span>
|
||||
<span class="badge badge-light">{{obj.before_states.count}}</span>
|
||||
{% trans 'States before' %}
|
||||
</h5>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="d-flex justify-content-end">
|
||||
{% if is_default_member and has_access %}
|
||||
<button class="btn btn-outline-default btn-modal" data-form-url="{% url 'compensation:new-state' comp.id %}?before=true" title="{% trans 'Add new state before' %}">
|
||||
<button class="btn btn-outline-default btn-modal" data-form-url="{% url 'compensation:new-state' obj.id %}?before=true" title="{% trans 'Add new state before' %}">
|
||||
{% fa5_icon 'plus' %}
|
||||
{% fa5_icon 'layer-group' %}
|
||||
</button>
|
@ -9,10 +9,10 @@
|
||||
|
||||
<div id="detail-header" class="row">
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
<h3>{% trans 'Compensation' %} {{comp.identifier}}</h3>
|
||||
<h3>{% trans 'Compensation' %} {{obj.identifier}}</h3>
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
{% include 'compensation/detail/includes/controls.html' %}
|
||||
{% include 'compensation/detail/compensation/includes/controls.html' %}
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
@ -22,25 +22,25 @@
|
||||
<table class="table table-hover">
|
||||
<tr>
|
||||
<th class="w-25" scope="row">{% trans 'Title' %}</th>
|
||||
<td class="align-middle">{{comp.title}}</td>
|
||||
<td class="align-middle">{{obj.title}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{% trans 'compensates intervention' %}</th>
|
||||
<td class="align-middle">
|
||||
<a href="{% url 'intervention:open' comp.intervention.id %}">
|
||||
{{comp.intervention.identifier}}
|
||||
<a href="{% url 'intervention:open' obj.intervention.id %}">
|
||||
{{obj.intervention.identifier}}
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{% trans 'Checked' %}</th>
|
||||
<td class="align-middle">
|
||||
{% if comp.intervention.checked is None %}
|
||||
{% if obj.intervention.checked is None %}
|
||||
<span>
|
||||
{% fa5_icon 'star' 'far' %}
|
||||
</span>
|
||||
{% else %}
|
||||
<span class="check-star" title="{% trans 'Checked on '%} {{comp.intervention.checked.timestamp}} {% trans 'by' %} {{comp.intervention.checked.user}}">
|
||||
<span class="check-star" title="{% trans 'Checked on '%} {{obj.intervention.checked.timestamp}} {% trans 'by' %} {{obj.intervention.checked.user}}">
|
||||
{% fa5_icon 'star' %}
|
||||
</span>
|
||||
{% endif %}
|
||||
@ -49,12 +49,12 @@
|
||||
<tr>
|
||||
<th scope="row">{% trans 'Recorded' %}</th>
|
||||
<td class="align-middle">
|
||||
{% if comp.intervention.recorded is None %}
|
||||
{% if obj.intervention.recorded is None %}
|
||||
<span title="{% trans 'Not recorded yet' %}">
|
||||
{% fa5_icon 'bookmark' 'far' %}
|
||||
</span>
|
||||
{% else %}
|
||||
<span class="registered-bookmark" title="{% trans 'Recorded on '%} {{comp.intervention.recorded.timestamp}} {% trans 'by' %} {{comp.intervention.recorded.user}}">
|
||||
<span class="registered-bookmark" title="{% trans 'Recorded on '%} {{obj.intervention.recorded.timestamp}} {% trans 'by' %} {{obj.intervention.recorded.user}}">
|
||||
{% fa5_icon 'bookmark' %}
|
||||
</span>
|
||||
{% endif %}
|
||||
@ -63,15 +63,15 @@
|
||||
<tr>
|
||||
<th scope="row">{% trans 'Last modified' %}</th>
|
||||
<td class="align-middle">
|
||||
{{comp.created.timestamp|default_if_none:""|naturalday}}
|
||||
{{obj.created.timestamp|default_if_none:""|naturalday}}
|
||||
<br>
|
||||
{{comp.created.user.username}}
|
||||
{{obj.created.user.username}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{% trans 'Shared with' %}</th>
|
||||
<td class="align-middle">
|
||||
{% for user in comp.intervention.users.all %}
|
||||
{% for user in obj.intervention.users.all %}
|
||||
{% include 'user/includes/contact_modal_button.html' %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
@ -91,23 +91,23 @@
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
{% include 'compensation/detail/includes/states-before.html' %}
|
||||
{% include 'compensation/detail/compensation/includes/states-before.html' %}
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
{% include 'compensation/detail/includes/states-after.html' %}
|
||||
{% include 'compensation/detail/compensation/includes/states-after.html' %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
{% include 'compensation/detail/includes/actions.html' %}
|
||||
{% include 'compensation/detail/compensation/includes/actions.html' %}
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
{% include 'compensation/detail/includes/deadlines.html' %}
|
||||
{% include 'compensation/detail/compensation/includes/deadlines.html' %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
{% include 'compensation/detail/includes/documents.html' %}
|
||||
{% include 'compensation/detail/compensation/includes/documents.html' %}
|
||||
</div>
|
||||
</div>
|
||||
|
@ -0,0 +1,61 @@
|
||||
{% load i18n l10n fontawesome_5 humanize %}
|
||||
<div id="actions" class="card">
|
||||
<div class="card-header rlp-r">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<h5>
|
||||
<span class="badge badge-light">{{obj.actions.count}}</span>
|
||||
{% trans 'Actions' context 'Compensation' %}
|
||||
</h5>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="d-flex justify-content-end">
|
||||
{% if is_default_member and has_access %}
|
||||
<button class="btn btn-outline-default btn-modal" data-form-url="{% url 'compensation:acc-new-action' obj.id %}" title="{% trans 'Add new action' %}">
|
||||
{% fa5_icon 'plus' %}
|
||||
{% fa5_icon 'seedling' %}
|
||||
</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body scroll-300">
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">
|
||||
{% trans 'Action type' %}
|
||||
</th>
|
||||
<th scope="col">
|
||||
{% trans 'Amount' context 'Compensation' %}
|
||||
</th>
|
||||
<th scope="col">
|
||||
{% trans 'Comment' %}
|
||||
</th>
|
||||
<th scope="col">
|
||||
{% trans 'Action' %}
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for action in obj.actions.all %}
|
||||
<tr>
|
||||
<td class="align-middle">
|
||||
{{ action.action_type }}
|
||||
</td>
|
||||
<td class="align-middle">{{ action.amount|floatformat:2|intcomma }} {{ action.unit_humanize }}</td>
|
||||
<td class="align-middle">{{ action.comment|default_if_none:"" }}</td>
|
||||
<td>
|
||||
{% if is_default_member and has_access %}
|
||||
<button data-form-url="{% url 'compensation:action-remove' action.id %}" class="btn btn-default btn-modal" title="{% trans 'Remove action' %}">
|
||||
{% fa5_icon 'trash' %}
|
||||
</button>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,29 @@
|
||||
{% 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 mr-2" data-form-url="{% url 'compensation:acc-log' obj.id %}" title="{% trans 'Show log' %}">
|
||||
{% fa5_icon 'history' %}
|
||||
</button>
|
||||
<button class="btn btn-default btn-modal" data-form-url="{% url 'compensation:acc-remove' obj.id %}" title="{% trans 'Delete' %}">
|
||||
{% fa5_icon 'trash' %}
|
||||
</button>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
@ -0,0 +1,61 @@
|
||||
{% load i18n l10n fontawesome_5 %}
|
||||
<div id="deadlines" class="card">
|
||||
<div class="card-header rlp-r">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<h5>
|
||||
<span class="badge badge-light">{{obj.deadlines.count}}</span>
|
||||
{% trans 'Deadlines' %}
|
||||
</h5>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="d-flex justify-content-end">
|
||||
{% if is_default_member and has_access %}
|
||||
<button class="btn btn-outline-default btn-modal" data-form-url="{% url 'compensation:acc-new-deadline' obj.id %}" title="{% trans 'Add new deadline' %}">
|
||||
{% fa5_icon 'plus' %}
|
||||
{% fa5_icon 'calendar-check' %}
|
||||
</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body scroll-300">
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">
|
||||
{% trans 'Type' %}
|
||||
</th>
|
||||
<th scope="col">
|
||||
{% trans 'Date' %}
|
||||
</th>
|
||||
<th scope="col">
|
||||
{% trans 'Comment' %}
|
||||
</th>
|
||||
<th scope="col">
|
||||
{% trans 'Action' %}
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for deadline in obj.deadlines.all %}
|
||||
<tr>
|
||||
<td class="align-middle">
|
||||
{% trans deadline.type_humanized %}
|
||||
</td>
|
||||
<td class="align-middle">{{ deadline.date }}</td>
|
||||
<td class="align-middle">{{ deadline.comment }}</td>
|
||||
<td>
|
||||
{% if is_default_member and has_access %}
|
||||
<button data-form-url="{% url 'deadline-remove' deadline.id %}" class="btn btn-default btn-modal" title="{% trans 'Remove deadline' %}">
|
||||
{% fa5_icon 'trash' %}
|
||||
</button>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,59 @@
|
||||
{% load i18n l10n fontawesome_5 %}
|
||||
<div id="documents" class="card">
|
||||
<div class="card-header rlp-r">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<h5>
|
||||
<span class="badge badge-light">{{obj.documents.count}}</span>
|
||||
{% trans 'Documents' %}
|
||||
</h5>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="d-flex justify-content-end">
|
||||
{% if is_default_member and has_access %}
|
||||
<button class="btn btn-outline-default btn-modal" data-form-url="{% url 'compensation:acc-new-doc' obj.id %}" title="{% trans 'Add new document' %}">
|
||||
{% fa5_icon 'plus' %}
|
||||
{% fa5_icon 'file' %}
|
||||
</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body scroll-300">
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">
|
||||
{% trans 'Title' %}
|
||||
</th>
|
||||
<th scope="col">
|
||||
{% trans 'Comment' %}
|
||||
</th>
|
||||
<th scope="col">
|
||||
{% trans 'Action' %}
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for doc in obj.documents.all %}
|
||||
<tr>
|
||||
<td class="align-middle">
|
||||
<a href="{% url 'doc-open' doc.id %}">
|
||||
{{ doc.title }}
|
||||
</a>
|
||||
</td>
|
||||
<td class="align-middle">{{ doc.comment }}</td>
|
||||
<td>
|
||||
{% if is_default_member and has_access %}
|
||||
<button data-form-url="{% url 'doc-remove' doc.id %}" class="btn btn-default btn-modal" title="{% trans 'Remove document' %}">
|
||||
{% fa5_icon 'trash' %}
|
||||
</button>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,62 @@
|
||||
{% load i18n l10n fontawesome_5 %}
|
||||
<div id="states-after" class="card">
|
||||
<div class="card-header rlp-r">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<h5>
|
||||
<span class="badge badge-light">{{obj.after_states.count}}</span>
|
||||
{% trans 'States after' %}
|
||||
</h5>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="d-flex justify-content-end">
|
||||
{% if is_default_member and has_access %}
|
||||
<button class="btn btn-outline-default btn-modal" data-form-url="{% url 'compensation:acc-new-state' obj.id %}" title="{% trans 'Add new state after' %}">
|
||||
{% fa5_icon 'plus' %}
|
||||
{% fa5_icon 'layer-group' %}
|
||||
</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body scroll-300">
|
||||
{% if sum_before_states > sum_after_states %}
|
||||
<div class="row alert alert-danger">
|
||||
{% trans 'Missing surfaces according to states before: ' %}{{ diff_states|floatformat:2 }} m²
|
||||
</div>
|
||||
{% endif %}
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">
|
||||
{% trans 'Biotope type' %}
|
||||
</th>
|
||||
<th scope="col">
|
||||
{% trans 'Surface' %}
|
||||
</th>
|
||||
<th scope="col">
|
||||
{% trans 'Action' %}
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for state in after_states %}
|
||||
<tr>
|
||||
<td class="align-middle">
|
||||
{{ state.biotope_type }}
|
||||
</td>
|
||||
<td class="align-middle">{{ state.surface|floatformat:2 }} m²</td>
|
||||
<td>
|
||||
{% if is_default_member and has_access %}
|
||||
<button data-form-url="{% url 'compensation:state-remove' state.id %}" class="btn btn-default btn-modal" title="{% trans 'Remove state' %}">
|
||||
{% fa5_icon 'trash' %}
|
||||
</button>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,62 @@
|
||||
{% load i18n l10n fontawesome_5 %}
|
||||
<div id="states-before" class="card">
|
||||
<div class="card-header rlp-r">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<h5>
|
||||
<span class="badge badge-light">{{obj.before_states.count}}</span>
|
||||
{% trans 'States before' %}
|
||||
</h5>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="d-flex justify-content-end">
|
||||
{% if is_default_member and has_access %}
|
||||
<button class="btn btn-outline-default btn-modal" data-form-url="{% url 'compensation:acc-new-state' obj.id %}?before=true" title="{% trans 'Add new state before' %}">
|
||||
{% fa5_icon 'plus' %}
|
||||
{% fa5_icon 'layer-group' %}
|
||||
</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body scroll-300">
|
||||
{% if sum_before_states < sum_after_states %}
|
||||
<div class="row alert alert-danger">
|
||||
{% trans 'Missing surfaces according to states after: ' %}{{ diff_states|floatformat:2 }} m²
|
||||
</div>
|
||||
{% endif %}
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">
|
||||
{% trans 'Biotope type' %}
|
||||
</th>
|
||||
<th scope="col">
|
||||
{% trans 'Surface' %}
|
||||
</th>
|
||||
<th scope="col">
|
||||
{% trans 'Action' %}
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for state in before_states %}
|
||||
<tr>
|
||||
<td class="align-middle">
|
||||
{{ state.biotope_type }}
|
||||
</td>
|
||||
<td class="align-middle">{{ state.surface|floatformat:2 }} m²</td>
|
||||
<td>
|
||||
{% if is_default_member and has_access %}
|
||||
<button data-form-url="{% url 'compensation:state-remove' state.id %}" class="btn btn-default btn-modal" title="{% trans 'Remove state' %}">
|
||||
{% fa5_icon 'trash' %}
|
||||
</button>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,61 @@
|
||||
{% load i18n l10n fontawesome_5 humanize %}
|
||||
<div id="eco-account-withdraws" class="card">
|
||||
<div class="card-header rlp-r">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<h5>
|
||||
<span class="badge badge-light">{{obj.withdraws.count}}</span>
|
||||
{% trans 'Eco Account Withdraws' %}
|
||||
</h5>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="d-flex justify-content-end">
|
||||
{% if is_default_member and has_access %}
|
||||
<a href="{% url 'compensation:new' %}" title="{% trans 'Add new withdraw' %}">
|
||||
<button class="btn btn-outline-default">
|
||||
{% fa5_icon 'plus' %}
|
||||
{% fa5_icon 'tree' %}
|
||||
</button>
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body scroll-300">
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">
|
||||
{% trans 'Intervention Identifier' %}
|
||||
</th>
|
||||
<th scope="col">
|
||||
{% trans 'Amount' %}
|
||||
</th>
|
||||
<th scope="col">
|
||||
{% trans 'Action' %}
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for withdraw in obj.withdraws.all %}
|
||||
<tr>
|
||||
<td class="align-middle">
|
||||
<a href="{% url 'intervention:open' withdraw.intervention.id %}">
|
||||
{{ withdraw.intervention.identifier }}
|
||||
</a>
|
||||
</td>
|
||||
<td class="align-middle">{{ withdraw.surface|floatformat:2|intcomma }} m²</td>
|
||||
<td>
|
||||
{% if is_default_member and has_access %}
|
||||
<button data-form-url="{% url 'compensation:withdraw-remove' withdraw.account.id withdraw.id %}" class="btn btn-default btn-modal" title="{% trans 'Remove Withdraw' %}">
|
||||
{% fa5_icon 'trash' %}
|
||||
</button>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
108
compensation/templates/compensation/detail/eco_account/view.html
Normal file
108
compensation/templates/compensation/detail/eco_account/view.html
Normal file
@ -0,0 +1,108 @@
|
||||
{% extends 'base.html' %}
|
||||
{% load i18n l10n static fontawesome_5 humanize %}
|
||||
|
||||
{% block head %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
|
||||
<div id="detail-header" class="row">
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
<h3>{% trans 'Eco-account' %} {{obj.identifier}}</h3>
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
{% include 'compensation/detail/eco_account/includes/controls.html' %}
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div id="data" class="row">
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
<div class="table-container">
|
||||
<table class="table table-hover">
|
||||
<tr>
|
||||
<th class="w-25" scope="row">{% trans 'Title' %}</th>
|
||||
<td class="align-middle">{{obj.title}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{% trans 'Available' %}</th>
|
||||
<td class="align-middle">
|
||||
{% with available as value %}
|
||||
{% include 'konova/custom_widgets/progressbar.html' %}
|
||||
{% endwith %}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{% trans 'Recorded' %}</th>
|
||||
<td class="align-middle">
|
||||
{% if obj.recorded is None %}
|
||||
<span title="{% trans 'Not recorded yet' %}">
|
||||
{% fa5_icon 'bookmark' 'far' %}
|
||||
</span>
|
||||
{% else %}
|
||||
<span class="registered-bookmark" title="{% trans 'Recorded on '%} {{obj.recorded.timestamp}} {% trans 'by' %} {{obj.recorded.user}}">
|
||||
{% fa5_icon 'bookmark' %}
|
||||
</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{% trans 'Last modified' %}</th>
|
||||
<td class="align-middle">
|
||||
{{obj.created.timestamp|default_if_none:""|naturalday}}
|
||||
<br>
|
||||
{{obj.created.user.username}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{% trans 'Shared with' %}</th>
|
||||
<td class="align-middle">
|
||||
{% for user in obj.users.all %}
|
||||
{% include 'user/includes/contact_modal_button.html' %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
{% if geom_form.area == 0 %}
|
||||
<div class="alert alert-info">{% trans 'No geometry added, yet.' %}</div>
|
||||
{% endif %}
|
||||
{{geom_form.media}}
|
||||
{{geom_form.geom}}
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
{% include 'compensation/detail/eco_account/includes/states-before.html' %}
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
{% include 'compensation/detail/eco_account/includes/states-after.html' %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
{% include 'compensation/detail/eco_account/includes/actions.html' %}
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
{% include 'compensation/detail/eco_account/includes/deadlines.html' %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
{% include 'compensation/detail/eco_account/includes/documents.html' %}
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
{% include 'compensation/detail/eco_account/includes/withdraws.html' %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{% with 'btn-modal' as btn_class %}
|
||||
{% include 'modal/modal_form_script.html' %}
|
||||
{% endwith %}
|
||||
|
||||
{% endblock %}
|
@ -7,43 +7,60 @@ Created on: 30.11.20
|
||||
"""
|
||||
from django.urls import path
|
||||
|
||||
from compensation.views import *
|
||||
from compensation.views import compensation_views
|
||||
from compensation.views import payment_views
|
||||
from compensation.views import eco_account_views
|
||||
|
||||
app_name = "compensation"
|
||||
urlpatterns = [
|
||||
# Main compensation
|
||||
path("", index_view, name="index"),
|
||||
path('new', new_view, name='new'),
|
||||
path('<id>', open_view, name='open'),
|
||||
path('<id>/log', log_view, name='log'),
|
||||
path('<id>/edit', edit_view, name='edit'),
|
||||
path('<id>/remove', remove_view, name='remove'),
|
||||
path('<id>/state/new', state_new_view, name='new-state'),
|
||||
path('<id>/action/new', action_new_view, name='new-action'),
|
||||
path('<id>/deadline/new', deadline_new_view, name="new-deadline"),
|
||||
|
||||
# Split lists for each sub-component for better overview
|
||||
urlpatterns_payment = [
|
||||
path('pay/<intervention_id>/new', payment_views.new_payment_view, name='pay-new'),
|
||||
path('pay/<id>/remove', payment_views.payment_remove_view, name='pay-remove'),
|
||||
]
|
||||
|
||||
urlaptterns_eco_acc = [
|
||||
path("acc/", eco_account_views.index_view, name="acc-index"),
|
||||
path('acc/new/', eco_account_views.new_view, name='acc-new'),
|
||||
path('acc/<id>', eco_account_views.open_view, name='acc-open'),
|
||||
path('acc/<id>/log', eco_account_views.log_view, name='acc-log'),
|
||||
path('acc/<id>/edit', eco_account_views.edit_view, name='acc-edit'),
|
||||
path('acc/<id>/remove', eco_account_views.remove_view, name='acc-remove'),
|
||||
path('acc/<id>/state/new', eco_account_views.state_new_view, name='acc-new-state'),
|
||||
path('acc/<id>/action/new', eco_account_views.action_new_view, name='acc-new-action'),
|
||||
path('acc/<id>/deadline/new', eco_account_views.deadline_new_view, name="acc-new-deadline"),
|
||||
|
||||
# Documents
|
||||
path('<id>/document/new/', new_document_view, name='new-doc'),
|
||||
|
||||
# Payment
|
||||
path('pay/<intervention_id>/new', new_payment_view, name='pay-new'),
|
||||
path('pay/<id>', open_view, name='pay-open'),
|
||||
path('pay/<id>/edit', edit_view, name='pay-edit'),
|
||||
path('pay/<id>/remove', payment_remove_view, name='pay-remove'),
|
||||
|
||||
# Eco-account
|
||||
path("acc/", account_index_view, name="acc-index"),
|
||||
path('acc/new/', account_new_view, name='acc-new'),
|
||||
path('acc/<id>', account_open_view, name='acc-open'),
|
||||
path('acc/<id>/edit', account_edit_view, name='acc-edit'),
|
||||
path('acc/<id>/remove', account_remove_view, name='acc-remove'),
|
||||
# Document remove route can be found in konova/urls.py
|
||||
path('acc/<id>/document/new/', eco_account_views.new_document_view, name='acc-new-doc'),
|
||||
|
||||
# Eco-account withdraws
|
||||
path('acc/<id>/remove/<withdraw_id>', withdraw_remove_view, name='withdraw-remove'),
|
||||
path('acc/<id>/remove/<withdraw_id>', eco_account_views.withdraw_remove_view, name='withdraw-remove'),
|
||||
|
||||
]
|
||||
urlpatterns_compensation = [
|
||||
# Main compensation
|
||||
path("", compensation_views.index_view, name="index"),
|
||||
path('new', compensation_views.new_view, name='new'),
|
||||
path('<id>', compensation_views.open_view, name='open'),
|
||||
path('<id>/log', compensation_views.log_view, name='log'),
|
||||
path('<id>/edit', compensation_views.edit_view, name='edit'),
|
||||
path('<id>/remove', compensation_views.remove_view, name='remove'),
|
||||
path('<id>/state/new', compensation_views.state_new_view, name='new-state'),
|
||||
path('<id>/action/new', compensation_views.action_new_view, name='new-action'),
|
||||
path('<id>/deadline/new', compensation_views.deadline_new_view, name="new-deadline"),
|
||||
|
||||
# Documents
|
||||
# Document remove route can be found in konova/urls.py
|
||||
path('<id>/document/new/', compensation_views.new_document_view, name='new-doc'),
|
||||
|
||||
# Generic state routes
|
||||
path('state/<id>/remove', state_remove_view, name='state-remove'),
|
||||
path('state/<id>/remove', compensation_views.state_remove_view, name='state-remove'),
|
||||
|
||||
# Generic action routes
|
||||
path('action/<id>/remove', action_remove_view, name='action-remove'),
|
||||
path('action/<id>/remove', compensation_views.action_remove_view, name='action-remove'),
|
||||
|
||||
]
|
||||
|
||||
# Merge all together in the end
|
||||
urlpatterns = urlpatterns_compensation + urlaptterns_eco_acc + urlpatterns_payment
|
||||
|
@ -1,18 +1,15 @@
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from django.db.models import Sum
|
||||
from django.http import HttpRequest, Http404
|
||||
from django.http import HttpRequest
|
||||
from django.shortcuts import render, get_object_or_404
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from compensation.forms import NewPaymentForm, NewStateModalForm, NewDeadlineModalForm, NewActionModalForm
|
||||
from compensation.models import Compensation, EcoAccount, Payment, CompensationState, CompensationAction
|
||||
from compensation.tables import CompensationTable, EcoAccountTable
|
||||
from intervention.models import Intervention
|
||||
from compensation.forms import NewStateModalForm, NewDeadlineModalForm, NewActionModalForm
|
||||
from compensation.models import Compensation, CompensationState, CompensationAction
|
||||
from compensation.tables import CompensationTable
|
||||
from konova.contexts import BaseContext
|
||||
from konova.decorators import *
|
||||
from konova.forms import RemoveModalForm, SimpleGeomForm, NewDocumentForm
|
||||
from konova.utils.message_templates import FORM_INVALID
|
||||
from konova.utils.user_checks import in_group
|
||||
|
||||
|
||||
@ -70,7 +67,7 @@ def open_view(request: HttpRequest, id: str):
|
||||
Returns:
|
||||
|
||||
"""
|
||||
template = "compensation/detail/view.html"
|
||||
template = "compensation/detail/compensation/view.html"
|
||||
comp = get_object_or_404(Compensation, id=id)
|
||||
geom_form = SimpleGeomForm(instance=comp)
|
||||
_user = request.user
|
||||
@ -87,7 +84,7 @@ def open_view(request: HttpRequest, id: str):
|
||||
diff_states = abs(sum_before_states - sum_after_states)
|
||||
|
||||
context = {
|
||||
"comp": comp,
|
||||
"obj": comp,
|
||||
"geom_form": geom_form,
|
||||
"has_access": is_data_shared,
|
||||
"before_states": before_states,
|
||||
@ -147,146 +144,6 @@ def remove_view(request: HttpRequest, id: str):
|
||||
)
|
||||
|
||||
|
||||
@login_required
|
||||
@any_group_check
|
||||
def account_index_view(request: HttpRequest):
|
||||
"""
|
||||
Renders the index view for eco accounts
|
||||
|
||||
Args:
|
||||
request (HttpRequest): The incoming request
|
||||
|
||||
Returns:
|
||||
A rendered view
|
||||
"""
|
||||
template = "generic_index.html"
|
||||
user = request.user
|
||||
eco_accounts = EcoAccount.objects.filter(
|
||||
deleted=None,
|
||||
)
|
||||
table = EcoAccountTable(
|
||||
request=request,
|
||||
queryset=eco_accounts
|
||||
)
|
||||
context = {
|
||||
"table": table,
|
||||
}
|
||||
context = BaseContext(request, context).context
|
||||
return render(request, template, context)
|
||||
|
||||
|
||||
@login_required
|
||||
@default_group_required
|
||||
def account_new_view(request: HttpRequest):
|
||||
# ToDo
|
||||
pass
|
||||
|
||||
|
||||
@login_required
|
||||
@default_group_required
|
||||
def account_edit_view(request: HttpRequest, id: str):
|
||||
# ToDo
|
||||
pass
|
||||
|
||||
|
||||
@login_required
|
||||
@any_group_check
|
||||
def account_open_view(request: HttpRequest, id: str):
|
||||
# ToDo
|
||||
pass
|
||||
|
||||
|
||||
@login_required
|
||||
def account_remove_view(request: HttpRequest, id: str):
|
||||
# ToDo
|
||||
pass
|
||||
|
||||
|
||||
@login_required
|
||||
@default_group_required
|
||||
def new_payment_view(request: HttpRequest, intervention_id: str):
|
||||
""" Renders a modal view for adding new payments
|
||||
|
||||
Args:
|
||||
request (HttpRequest): The incoming request
|
||||
intervention_id (str): The intervention's id for which a new payment shall be added
|
||||
|
||||
Returns:
|
||||
|
||||
"""
|
||||
intervention = get_object_or_404(Intervention, id=intervention_id)
|
||||
form = NewPaymentForm(request.POST or None, instance=intervention, user=request.user)
|
||||
template = form.template
|
||||
if request.method == "POST":
|
||||
if form.is_valid():
|
||||
payment = form.save()
|
||||
messages.success(
|
||||
request,
|
||||
_("Payment added")
|
||||
)
|
||||
return redirect(request.META.get("HTTP_REFERER", "home"))
|
||||
else:
|
||||
messages.info(
|
||||
request,
|
||||
FORM_INVALID
|
||||
)
|
||||
return redirect(request.META.get("HTTP_REFERER", "home"))
|
||||
elif request.method == "GET":
|
||||
context = {
|
||||
"form": form,
|
||||
}
|
||||
context = BaseContext(request, context).context
|
||||
return render(request, template, context)
|
||||
else:
|
||||
raise NotImplementedError
|
||||
|
||||
|
||||
@login_required
|
||||
@default_group_required
|
||||
def payment_remove_view(request: HttpRequest, id: str):
|
||||
""" Renders a modal view for removing payments
|
||||
|
||||
Args:
|
||||
request (HttpRequest): The incoming request
|
||||
id (str): The payment's id
|
||||
|
||||
Returns:
|
||||
|
||||
"""
|
||||
payment = get_object_or_404(Payment, id=id)
|
||||
form = RemoveModalForm(request.POST or None, instance=payment, user=request.user)
|
||||
return form.process_request(
|
||||
request=request,
|
||||
msg_success=_("Payment removed"),
|
||||
)
|
||||
|
||||
|
||||
@login_required
|
||||
@default_group_required
|
||||
def withdraw_remove_view(request: HttpRequest, id: str, withdraw_id: str):
|
||||
""" Renders a modal view for removing withdraws
|
||||
|
||||
Args:
|
||||
request (HttpRequest): The incoming request
|
||||
id (str): The eco account's id
|
||||
withdraw_id (str): The withdraw's id
|
||||
|
||||
Returns:
|
||||
|
||||
"""
|
||||
acc = get_object_or_404(EcoAccount, id=id)
|
||||
try:
|
||||
eco_withdraw = acc.eco_withdraws.get(id=withdraw_id)
|
||||
except ObjectDoesNotExist:
|
||||
raise Http404("Unknown withdraw")
|
||||
|
||||
form = RemoveModalForm(request.POST or None, instance=eco_withdraw, user=request.user)
|
||||
return form.process_request(
|
||||
request=request,
|
||||
msg_success=_("Withdraw removed")
|
||||
)
|
||||
|
||||
|
||||
@login_required
|
||||
def new_document_view(request: HttpRequest, id: str):
|
||||
""" Renders a form for uploading new documents
|
262
compensation/views/eco_account_views.py
Normal file
262
compensation/views/eco_account_views.py
Normal file
@ -0,0 +1,262 @@
|
||||
"""
|
||||
Author: Michel Peltriaux
|
||||
Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany
|
||||
Contact: michel.peltriaux@sgdnord.rlp.de
|
||||
Created on: 09.08.21
|
||||
|
||||
"""
|
||||
from django.db.models import Sum
|
||||
from django.urls import reverse
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from django.http import HttpRequest, Http404
|
||||
from django.shortcuts import render, get_object_or_404
|
||||
|
||||
from compensation.forms import NewStateModalForm, NewActionModalForm, NewDeadlineModalForm
|
||||
from compensation.models import EcoAccount
|
||||
from compensation.tables import EcoAccountTable
|
||||
from konova.contexts import BaseContext
|
||||
from konova.decorators import any_group_check, default_group_required
|
||||
from konova.forms import RemoveModalForm, SimpleGeomForm, NewDocumentForm
|
||||
from konova.settings import DEFAULT_GROUP, ZB_GROUP, ETS_GROUP
|
||||
from konova.utils.user_checks import in_group
|
||||
|
||||
|
||||
@login_required
|
||||
@any_group_check
|
||||
def index_view(request: HttpRequest):
|
||||
"""
|
||||
Renders the index view for eco accounts
|
||||
|
||||
Args:
|
||||
request (HttpRequest): The incoming request
|
||||
|
||||
Returns:
|
||||
A rendered view
|
||||
"""
|
||||
template = "generic_index.html"
|
||||
user = request.user
|
||||
eco_accounts = EcoAccount.objects.filter(
|
||||
deleted=None,
|
||||
)
|
||||
table = EcoAccountTable(
|
||||
request=request,
|
||||
queryset=eco_accounts
|
||||
)
|
||||
context = {
|
||||
"table": table,
|
||||
}
|
||||
context = BaseContext(request, context).context
|
||||
return render(request, template, context)
|
||||
|
||||
|
||||
@login_required
|
||||
@default_group_required
|
||||
def new_view(request: HttpRequest):
|
||||
# ToDo
|
||||
pass
|
||||
|
||||
|
||||
@login_required
|
||||
@default_group_required
|
||||
def edit_view(request: HttpRequest, id: str):
|
||||
# ToDo
|
||||
pass
|
||||
|
||||
|
||||
@login_required
|
||||
@any_group_check
|
||||
def open_view(request: HttpRequest, id: str):
|
||||
""" Renders a detail view for a compensation
|
||||
|
||||
Args:
|
||||
request (HttpRequest): The incoming request
|
||||
id (str): The compensation's id
|
||||
|
||||
Returns:
|
||||
|
||||
"""
|
||||
template = "compensation/detail/eco_account/view.html"
|
||||
acc = get_object_or_404(EcoAccount, id=id)
|
||||
geom_form = SimpleGeomForm(instance=acc)
|
||||
_user = request.user
|
||||
is_data_shared = acc.is_shared_with(_user)
|
||||
|
||||
# Order states according to surface
|
||||
before_states = acc.before_states.all().order_by("-surface")
|
||||
after_states = acc.after_states.all().order_by("-surface")
|
||||
|
||||
# Precalculate logical errors between before- and after-states
|
||||
# Sum() returns None in case of no states, so we catch that and replace it with 0 for easier handling
|
||||
sum_before_states = before_states.aggregate(Sum("surface"))["surface__sum"] or 0
|
||||
sum_after_states = after_states.aggregate(Sum("surface"))["surface__sum"] or 0
|
||||
diff_states = abs(sum_before_states - sum_after_states)
|
||||
|
||||
# Calculate rest of available surface for withdraws
|
||||
withdraws = acc.withdraws.all()
|
||||
withdraw_surfaces = withdraws.aggregate(Sum("surface"))["surface__sum"] or 0
|
||||
available = int(((sum_after_states - withdraw_surfaces) / sum_after_states) * 100)
|
||||
|
||||
context = {
|
||||
"obj": acc,
|
||||
"geom_form": geom_form,
|
||||
"has_access": is_data_shared,
|
||||
"before_states": before_states,
|
||||
"after_states": after_states,
|
||||
"sum_before_states": sum_before_states,
|
||||
"sum_after_states": sum_after_states,
|
||||
"available": available,
|
||||
"diff_states": diff_states,
|
||||
"is_default_member": in_group(_user, DEFAULT_GROUP),
|
||||
"is_zb_member": in_group(_user, ZB_GROUP),
|
||||
"is_ets_member": in_group(_user, ETS_GROUP),
|
||||
}
|
||||
context = BaseContext(request, context).context
|
||||
return render(request, template, context)
|
||||
|
||||
|
||||
@login_required
|
||||
def remove_view(request: HttpRequest, id: str):
|
||||
""" Renders a modal view for removing the eco account
|
||||
|
||||
Args:
|
||||
request (HttpRequest): The incoming request
|
||||
id (str): The account's id
|
||||
|
||||
Returns:
|
||||
|
||||
"""
|
||||
acc = get_object_or_404(EcoAccount, id=id)
|
||||
form = RemoveModalForm(request.POST or None, instance=acc, user=request.user)
|
||||
return form.process_request(
|
||||
request=request,
|
||||
msg_success=_("Eco-account removed"),
|
||||
redirect_url=reverse("compensation:acc-index"),
|
||||
)
|
||||
|
||||
|
||||
@login_required
|
||||
@default_group_required
|
||||
def withdraw_remove_view(request: HttpRequest, id: str, withdraw_id: str):
|
||||
""" Renders a modal view for removing withdraws
|
||||
|
||||
Args:
|
||||
request (HttpRequest): The incoming request
|
||||
id (str): The eco account's id
|
||||
withdraw_id (str): The withdraw's id
|
||||
|
||||
Returns:
|
||||
|
||||
"""
|
||||
acc = get_object_or_404(EcoAccount, id=id)
|
||||
try:
|
||||
eco_withdraw = acc.withdraws.get(id=withdraw_id)
|
||||
except ObjectDoesNotExist:
|
||||
raise Http404("Unknown withdraw")
|
||||
|
||||
form = RemoveModalForm(request.POST or None, instance=eco_withdraw, user=request.user)
|
||||
return form.process_request(
|
||||
request=request,
|
||||
msg_success=_("Withdraw removed")
|
||||
)
|
||||
|
||||
|
||||
@login_required
|
||||
@default_group_required
|
||||
def log_view(request: HttpRequest, id: str):
|
||||
""" Renders a log view using modal
|
||||
|
||||
Args:
|
||||
request (HttpRequest): The incoming request
|
||||
id (str): The eco acount's id
|
||||
|
||||
Returns:
|
||||
|
||||
"""
|
||||
comp = get_object_or_404(EcoAccount, id=id)
|
||||
template = "modal/modal_generic.html"
|
||||
body_template = "log.html"
|
||||
|
||||
context = {
|
||||
"modal_body_template": body_template,
|
||||
"log": comp.log.all().order_by("-timestamp"),
|
||||
"modal_title": _("Log"),
|
||||
}
|
||||
context = BaseContext(request, context).context
|
||||
return render(request, template, context)
|
||||
|
||||
|
||||
@login_required
|
||||
def state_new_view(request: HttpRequest, id: str):
|
||||
""" Renders a form for adding new states for an eco account
|
||||
|
||||
Args:
|
||||
request (HttpRequest): The incoming request
|
||||
id (str): The account's id to which the new state will be related
|
||||
|
||||
Returns:
|
||||
|
||||
"""
|
||||
acc = get_object_or_404(EcoAccount, id=id)
|
||||
form = NewStateModalForm(request.POST or None, instance=acc, user=request.user)
|
||||
return form.process_request(
|
||||
request,
|
||||
msg_success=_("State added")
|
||||
)
|
||||
|
||||
|
||||
@login_required
|
||||
def action_new_view(request: HttpRequest, id: str):
|
||||
""" Renders a form for adding new actions for an eco account
|
||||
|
||||
Args:
|
||||
request (HttpRequest): The incoming request
|
||||
id (str): The account's id to which the new state will be related
|
||||
|
||||
Returns:
|
||||
|
||||
"""
|
||||
acc = get_object_or_404(EcoAccount, id=id)
|
||||
form = NewActionModalForm(request.POST or None, instance=acc, user=request.user)
|
||||
return form.process_request(
|
||||
request,
|
||||
msg_success=_("Action added")
|
||||
)
|
||||
|
||||
|
||||
@login_required
|
||||
def deadline_new_view(request: HttpRequest, id: str):
|
||||
""" Renders a form for adding new states for an eco account
|
||||
|
||||
Args:
|
||||
request (HttpRequest): The incoming request
|
||||
id (str): The account's id to which the new state will be related
|
||||
|
||||
Returns:
|
||||
|
||||
"""
|
||||
acc = get_object_or_404(EcoAccount, id=id)
|
||||
form = NewDeadlineModalForm(request.POST or None, instance=acc, user=request.user)
|
||||
return form.process_request(
|
||||
request,
|
||||
msg_success=_("Deadline added")
|
||||
)
|
||||
|
||||
|
||||
@login_required
|
||||
def new_document_view(request: HttpRequest, id: str):
|
||||
""" Renders a form for uploading new documents
|
||||
|
||||
Args:
|
||||
request (HttpRequest): The incoming request
|
||||
id (str): The account's id to which the new document will be related
|
||||
Returns:
|
||||
|
||||
"""
|
||||
acc = get_object_or_404(EcoAccount, id=id)
|
||||
form = NewDocumentForm(request.POST or None, request.FILES or None, instance=acc, user=request.user)
|
||||
return form.process_request(
|
||||
request,
|
||||
msg_success=_("Document added")
|
||||
)
|
80
compensation/views/payment_views.py
Normal file
80
compensation/views/payment_views.py
Normal file
@ -0,0 +1,80 @@
|
||||
"""
|
||||
Author: Michel Peltriaux
|
||||
Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany
|
||||
Contact: michel.peltriaux@sgdnord.rlp.de
|
||||
Created on: 09.08.21
|
||||
|
||||
"""
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.contrib import messages
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.http import HttpRequest
|
||||
from django.shortcuts import get_object_or_404, render, redirect
|
||||
|
||||
from compensation.forms import NewPaymentForm
|
||||
from compensation.models import Payment
|
||||
from intervention.models import Intervention
|
||||
from konova.contexts import BaseContext
|
||||
from konova.decorators import default_group_required
|
||||
from konova.forms import RemoveModalForm
|
||||
from konova.utils.message_templates import FORM_INVALID
|
||||
|
||||
|
||||
@login_required
|
||||
@default_group_required
|
||||
def new_payment_view(request: HttpRequest, intervention_id: str):
|
||||
""" Renders a modal view for adding new payments
|
||||
|
||||
Args:
|
||||
request (HttpRequest): The incoming request
|
||||
intervention_id (str): The intervention's id for which a new payment shall be added
|
||||
|
||||
Returns:
|
||||
|
||||
"""
|
||||
intervention = get_object_or_404(Intervention, id=intervention_id)
|
||||
form = NewPaymentForm(request.POST or None, instance=intervention, user=request.user)
|
||||
template = form.template
|
||||
if request.method == "POST":
|
||||
if form.is_valid():
|
||||
payment = form.save()
|
||||
messages.success(
|
||||
request,
|
||||
_("Payment added")
|
||||
)
|
||||
return redirect(request.META.get("HTTP_REFERER", "home"))
|
||||
else:
|
||||
messages.info(
|
||||
request,
|
||||
FORM_INVALID
|
||||
)
|
||||
return redirect(request.META.get("HTTP_REFERER", "home"))
|
||||
elif request.method == "GET":
|
||||
context = {
|
||||
"form": form,
|
||||
}
|
||||
context = BaseContext(request, context).context
|
||||
return render(request, template, context)
|
||||
else:
|
||||
raise NotImplementedError
|
||||
|
||||
|
||||
@login_required
|
||||
@default_group_required
|
||||
def payment_remove_view(request: HttpRequest, id: str):
|
||||
""" Renders a modal view for removing payments
|
||||
|
||||
Args:
|
||||
request (HttpRequest): The incoming request
|
||||
id (str): The payment's id
|
||||
|
||||
Returns:
|
||||
|
||||
"""
|
||||
payment = get_object_or_404(Payment, id=id)
|
||||
form = RemoveModalForm(request.POST or None, instance=payment, user=request.user)
|
||||
return form.process_request(
|
||||
request=request,
|
||||
msg_success=_("Payment removed"),
|
||||
)
|
||||
|
@ -193,19 +193,6 @@ class Intervention(BaseObject):
|
||||
self.identifier = new_id
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
def is_shared_with(self, user: User):
|
||||
""" Access check
|
||||
|
||||
Checks whether a given user has access to this intervention
|
||||
|
||||
Args:
|
||||
user ():
|
||||
|
||||
Returns:
|
||||
|
||||
"""
|
||||
return self.users.filter(username=user.username).exists()
|
||||
|
||||
def check_validity(self) -> (bool, dict):
|
||||
""" Validity check
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
{% load i18n l10n fontawesome_5 %}
|
||||
{% load i18n l10n fontawesome_5 humanize %}
|
||||
<div id="eco-account-withdraws" class="card">
|
||||
<div class="card-header rlp-r">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<h5>
|
||||
<span class="badge badge-light">{{intervention.eco_withdraws.count}}</span>
|
||||
<span class="badge badge-light">{{intervention.withdraws.count}}</span>
|
||||
{% trans 'Eco Account Withdraws' %}
|
||||
</h5>
|
||||
</div>
|
||||
@ -38,14 +38,17 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for withdraw in intervention.eco_withdraws.all %}
|
||||
<tr>
|
||||
{% for withdraw in intervention.withdraws.all %}
|
||||
<tr {% if withdraw.account.deleted %}class="align-middle alert-danger" title="{% trans 'Eco-account deleted! Withdraw invalid!' %}" {% endif %}>
|
||||
<td class="align-middle">
|
||||
<a href="{% url 'compensation:acc-open' withdraw.account.id %}">
|
||||
{% if withdraw.account.deleted %}
|
||||
{% fa5_icon 'exclamation-triangle' %}
|
||||
{% endif %}
|
||||
{{ withdraw.account.identifier }}
|
||||
</a>
|
||||
</td>
|
||||
<td class="align-middle">{{ withdraw.amount|floatformat:2 }} %</td>
|
||||
<td class="align-middle">{{ withdraw.surface|floatformat:2|intcomma }} m²</td>
|
||||
<td>
|
||||
{% if is_default_member and has_access %}
|
||||
<button data-form-url="{% url 'compensation:withdraw-remove' withdraw.account.id withdraw.id %}" class="btn btn-default btn-modal" title="{% trans 'Remove Withdraw' %}">
|
@ -131,7 +131,7 @@
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
{% include 'intervention/detail/includes/eco-account-withdraws.html' %}
|
||||
{% include 'intervention/detail/includes/withdraws.html' %}
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-12 col-lg-6">
|
||||
{% include 'intervention/detail/includes/revocation.html' %}
|
||||
|
@ -102,6 +102,22 @@ class BaseObject(BaseResource):
|
||||
)
|
||||
self.log.add(user_action)
|
||||
|
||||
def is_shared_with(self, user: User):
|
||||
""" Access check
|
||||
|
||||
Checks whether a given user has access to this object
|
||||
|
||||
Args:
|
||||
user ():
|
||||
|
||||
Returns:
|
||||
|
||||
"""
|
||||
if hasattr(self, "users"):
|
||||
return self.users.filter(username=user.username).exists()
|
||||
else:
|
||||
return User.objects.none()
|
||||
|
||||
|
||||
class DeadlineType(models.TextChoices):
|
||||
"""
|
||||
|
7
konova/templates/konova/custom_widgets/progressbar.html
Normal file
7
konova/templates/konova/custom_widgets/progressbar.html
Normal file
@ -0,0 +1,7 @@
|
||||
{% load i18n %}
|
||||
|
||||
<div class="progress" title="{% trans 'Available' %}: {{ value }}%">
|
||||
<div class="progress-bar rlp-r" role="progressbar" style="width: {{ value }}%" aria-valuenow="{{ value }}" aria-valuemin="0" aria-valuemax="100">
|
||||
{{ value }} %
|
||||
</div>
|
||||
</div>
|
Binary file not shown.
@ -8,15 +8,15 @@
|
||||
#: intervention/filters.py:26 intervention/filters.py:40
|
||||
#: intervention/filters.py:47 intervention/filters.py:48
|
||||
#: intervention/forms.py:318 intervention/forms.py:330
|
||||
#: intervention/forms.py:342 konova/forms.py:92 konova/forms.py:228
|
||||
#: konova/forms.py:261 konova/forms.py:266 konova/forms.py:278
|
||||
#: konova/forms.py:290 konova/forms.py:303 user/forms.py:38
|
||||
#: intervention/forms.py:342 konova/forms.py:91 konova/forms.py:227
|
||||
#: konova/forms.py:260 konova/forms.py:265 konova/forms.py:277
|
||||
#: konova/forms.py:289 konova/forms.py:302 user/forms.py:38
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-08-05 12:43+0200\n"
|
||||
"POT-Creation-Date: 2021-08-09 15:06+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -27,7 +27,8 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: compensation/forms.py:41 compensation/forms.py:260
|
||||
#: intervention/templates/intervention/detail/includes/eco-account-withdraws.html:33
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/withdraws.html:33
|
||||
#: intervention/templates/intervention/detail/includes/withdraws.html:33
|
||||
msgid "Amount"
|
||||
msgstr "Menge"
|
||||
|
||||
@ -73,8 +74,10 @@ msgid "Select the biotope type"
|
||||
msgstr "Biotoptyp wählen"
|
||||
|
||||
#: compensation/forms.py:103
|
||||
#: compensation/templates/compensation/detail/includes/states-after.html:36
|
||||
#: compensation/templates/compensation/detail/includes/states-before.html:36
|
||||
#: compensation/templates/compensation/detail/compensation/includes/states-after.html:36
|
||||
#: compensation/templates/compensation/detail/compensation/includes/states-before.html:36
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/states-after.html:36
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/states-before.html:36
|
||||
msgid "Surface"
|
||||
msgstr "Fläche"
|
||||
|
||||
@ -94,7 +97,7 @@ msgstr "Geben Sie die Daten des neuen Zustandes ein"
|
||||
msgid "Added state"
|
||||
msgstr "Zustand hinzugefügt"
|
||||
|
||||
#: compensation/forms.py:133 konova/forms.py:142
|
||||
#: compensation/forms.py:133 konova/forms.py:141
|
||||
msgid "Object removed"
|
||||
msgstr "Objekt entfernt"
|
||||
|
||||
@ -107,7 +110,8 @@ msgid "Select the deadline type"
|
||||
msgstr "Fristart wählen"
|
||||
|
||||
#: compensation/forms.py:187
|
||||
#: compensation/templates/compensation/detail/includes/deadlines.html:31
|
||||
#: compensation/templates/compensation/detail/compensation/includes/deadlines.html:31
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/deadlines.html:31
|
||||
#: intervention/forms.py:317
|
||||
msgid "Date"
|
||||
msgstr "Datum"
|
||||
@ -117,18 +121,21 @@ msgid "Select date"
|
||||
msgstr "Datum wählen"
|
||||
|
||||
#: compensation/forms.py:202 compensation/forms.py:270
|
||||
#: compensation/templates/compensation/detail/includes/actions.html:34
|
||||
#: compensation/templates/compensation/detail/includes/deadlines.html:34
|
||||
#: compensation/templates/compensation/detail/includes/documents.html:31
|
||||
#: compensation/templates/compensation/detail/compensation/includes/actions.html:34
|
||||
#: compensation/templates/compensation/detail/compensation/includes/deadlines.html:34
|
||||
#: compensation/templates/compensation/detail/compensation/includes/documents.html:31
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/actions.html:34
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/deadlines.html:34
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/documents.html:31
|
||||
#: intervention/forms.py:341
|
||||
#: intervention/templates/intervention/detail/includes/documents.html:31
|
||||
#: intervention/templates/intervention/detail/includes/revocation.html:35
|
||||
#: konova/forms.py:289
|
||||
#: konova/forms.py:288
|
||||
msgid "Comment"
|
||||
msgstr "Kommentar"
|
||||
|
||||
#: compensation/forms.py:204 compensation/forms.py:272
|
||||
#: intervention/forms.py:343 konova/forms.py:291
|
||||
#: intervention/forms.py:343 konova/forms.py:290
|
||||
msgid "Additional comment, maximum {} letters"
|
||||
msgstr "Zusätzlicher Kommentar, maximal {} Zeichen"
|
||||
|
||||
@ -200,316 +207,393 @@ msgstr ""
|
||||
msgid "Pieces"
|
||||
msgstr "Stück"
|
||||
|
||||
#: compensation/tables.py:24 compensation/tables.py:164
|
||||
#: compensation/tables.py:26 compensation/tables.py:166
|
||||
#: intervention/forms.py:28 intervention/tables.py:23
|
||||
#: intervention/templates/intervention/detail/includes/compensations.html:30
|
||||
msgid "Identifier"
|
||||
msgstr "Kennung"
|
||||
|
||||
#: compensation/tables.py:29 compensation/tables.py:169
|
||||
#: compensation/templates/compensation/detail/includes/documents.html:28
|
||||
#: compensation/templates/compensation/detail/view.html:24
|
||||
#: compensation/tables.py:31 compensation/tables.py:171
|
||||
#: compensation/templates/compensation/detail/compensation/includes/documents.html:28
|
||||
#: compensation/templates/compensation/detail/compensation/view.html:24
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/documents.html:28
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:24
|
||||
#: intervention/forms.py:35 intervention/tables.py:28
|
||||
#: intervention/templates/intervention/detail/includes/compensations.html:33
|
||||
#: intervention/templates/intervention/detail/includes/documents.html:28
|
||||
#: intervention/templates/intervention/detail/view.html:24 konova/forms.py:260
|
||||
#: intervention/templates/intervention/detail/view.html:24 konova/forms.py:259
|
||||
msgid "Title"
|
||||
msgstr "Bezeichnung"
|
||||
|
||||
#: compensation/tables.py:34
|
||||
#: compensation/templates/compensation/detail/view.html:36
|
||||
#: compensation/tables.py:36
|
||||
#: compensation/templates/compensation/detail/compensation/view.html:36
|
||||
#: intervention/tables.py:33
|
||||
#: intervention/templates/intervention/detail/view.html:56 user/models.py:48
|
||||
msgid "Checked"
|
||||
msgstr "Geprüft"
|
||||
|
||||
#: compensation/tables.py:40
|
||||
#: compensation/templates/compensation/detail/view.html:50
|
||||
#: compensation/tables.py:42 compensation/tables.py:181
|
||||
#: compensation/templates/compensation/detail/compensation/view.html:50
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:36
|
||||
#: intervention/tables.py:39
|
||||
#: intervention/templates/intervention/detail/view.html:70 user/models.py:49
|
||||
msgid "Recorded"
|
||||
msgstr "Verzeichnet"
|
||||
|
||||
#: compensation/tables.py:46 intervention/tables.py:45
|
||||
#: compensation/tables.py:48 compensation/tables.py:187
|
||||
#: intervention/tables.py:45
|
||||
msgid "Editable"
|
||||
msgstr "Freigegeben"
|
||||
|
||||
#: compensation/tables.py:52 intervention/tables.py:51
|
||||
#: compensation/tables.py:54 compensation/tables.py:193
|
||||
#: intervention/tables.py:51
|
||||
msgid "Last edit"
|
||||
msgstr "Zuletzt bearbeitet"
|
||||
|
||||
#: compensation/tables.py:61
|
||||
#: compensation/tables.py:63
|
||||
#: intervention/templates/intervention/detail/includes/compensations.html:8
|
||||
msgid "Compensations"
|
||||
msgstr "Kompensationen"
|
||||
|
||||
#: compensation/tables.py:83 compensation/tables.py:200
|
||||
#: compensation/tables.py:85 compensation/tables.py:224
|
||||
#: intervention/tables.py:92 intervention/tables.py:175
|
||||
msgid "Open {}"
|
||||
msgstr "Öffne {}"
|
||||
|
||||
#: compensation/tables.py:83 compensation/tables.py:197
|
||||
#: compensation/templates/compensation/detail/view.html:12
|
||||
#: compensation/tables.py:85
|
||||
#: compensation/templates/compensation/detail/compensation/view.html:12
|
||||
#: konova/templates/konova/home.html:49 templates/navbar.html:28
|
||||
msgid "Compensation"
|
||||
msgstr "Kompensation"
|
||||
|
||||
#: compensation/tables.py:104 intervention/tables.py:111
|
||||
#: compensation/tables.py:106 intervention/tables.py:111
|
||||
msgid "Not checked yet"
|
||||
msgstr "Noch nicht geprüft"
|
||||
|
||||
#: compensation/tables.py:109 intervention/tables.py:116
|
||||
#: compensation/tables.py:111 intervention/tables.py:116
|
||||
msgid "Checked on {} by {}"
|
||||
msgstr "Am {} von {} geprüft worden"
|
||||
|
||||
#: compensation/tables.py:128
|
||||
#: compensation/templates/compensation/detail/view.html:53
|
||||
#: compensation/tables.py:130
|
||||
#: compensation/templates/compensation/detail/compensation/view.html:53
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:39
|
||||
#: intervention/tables.py:135
|
||||
#: intervention/templates/intervention/detail/view.html:73
|
||||
msgid "Not recorded yet"
|
||||
msgstr "Noch nicht verzeichnet"
|
||||
|
||||
#: compensation/tables.py:133 intervention/tables.py:140
|
||||
#: compensation/tables.py:135 compensation/tables.py:265
|
||||
#: intervention/tables.py:140
|
||||
msgid "Recorded on {} by {}"
|
||||
msgstr "Am {} von {} verzeichnet worden"
|
||||
|
||||
#: compensation/tables.py:156 intervention/tables.py:163
|
||||
#: compensation/tables.py:158 compensation/tables.py:288
|
||||
#: intervention/tables.py:163
|
||||
msgid "Full access granted"
|
||||
msgstr "Für Sie freigegeben - Datensatz kann bearbeitet werden"
|
||||
|
||||
#: compensation/tables.py:156 intervention/tables.py:163
|
||||
#: compensation/tables.py:158 compensation/tables.py:288
|
||||
#: intervention/tables.py:163
|
||||
msgid "Access not granted"
|
||||
msgstr "Nicht freigegeben - Datensatz nur lesbar"
|
||||
|
||||
#: compensation/tables.py:174 konova/forms.py:265
|
||||
msgid "Created on"
|
||||
msgstr "Erstellt"
|
||||
#: compensation/tables.py:176
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:28
|
||||
#: konova/templates/konova/custom_widgets/progressbar.html:3
|
||||
msgid "Available"
|
||||
msgstr "Verfügbar"
|
||||
|
||||
#: compensation/tables.py:179
|
||||
msgid "Actions"
|
||||
msgstr "Aktionen"
|
||||
|
||||
#: compensation/tables.py:190
|
||||
#: compensation/tables.py:202
|
||||
msgid "Eco Accounts"
|
||||
msgstr "Ökokonten"
|
||||
|
||||
#: compensation/tables.py:205 intervention/tables.py:179
|
||||
msgid "Edit {}"
|
||||
msgstr "Bearbeite {}"
|
||||
#: compensation/tables.py:224
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:12
|
||||
#: konova/templates/konova/home.html:88 templates/navbar.html:34
|
||||
msgid "Eco-account"
|
||||
msgstr "Ökokonto"
|
||||
|
||||
#: compensation/tables.py:209 intervention/tables.py:183
|
||||
msgid "Delete {}"
|
||||
msgstr "Lösche {}"
|
||||
#: compensation/tables.py:260
|
||||
msgid "Not recorded yet. Can not be used for withdraws, yet."
|
||||
msgstr ""
|
||||
"Noch nicht verzeichnet. Kann noch nicht für Abbuchungen genutzt werden."
|
||||
|
||||
#: compensation/templates/compensation/detail/includes/actions.html:8
|
||||
#: compensation/templates/compensation/detail/compensation/includes/actions.html:8
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/actions.html:8
|
||||
msgctxt "Compensation"
|
||||
msgid "Actions"
|
||||
msgstr "Maßnahmen"
|
||||
|
||||
#: compensation/templates/compensation/detail/includes/actions.html:14
|
||||
#: compensation/templates/compensation/detail/compensation/includes/actions.html:14
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/actions.html:14
|
||||
msgid "Add new action"
|
||||
msgstr "Neue Maßnahme hinzufügen"
|
||||
|
||||
#: compensation/templates/compensation/detail/includes/actions.html:28
|
||||
#: compensation/templates/compensation/detail/compensation/includes/actions.html:28
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/actions.html:28
|
||||
msgid "Action type"
|
||||
msgstr "Maßnahmentyp"
|
||||
|
||||
#: compensation/templates/compensation/detail/includes/actions.html:31
|
||||
#: compensation/templates/compensation/detail/compensation/includes/actions.html:31
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/actions.html:31
|
||||
msgctxt "Compensation"
|
||||
msgid "Amount"
|
||||
msgstr "Menge"
|
||||
|
||||
#: compensation/templates/compensation/detail/includes/actions.html:37
|
||||
#: compensation/templates/compensation/detail/includes/deadlines.html:37
|
||||
#: compensation/templates/compensation/detail/includes/documents.html:34
|
||||
#: compensation/templates/compensation/detail/includes/states-after.html:39
|
||||
#: compensation/templates/compensation/detail/includes/states-before.html:39
|
||||
#: compensation/templates/compensation/detail/compensation/includes/actions.html:37
|
||||
#: compensation/templates/compensation/detail/compensation/includes/deadlines.html:37
|
||||
#: compensation/templates/compensation/detail/compensation/includes/documents.html:34
|
||||
#: compensation/templates/compensation/detail/compensation/includes/states-after.html:39
|
||||
#: compensation/templates/compensation/detail/compensation/includes/states-before.html:39
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/actions.html:37
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/deadlines.html:37
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/documents.html:34
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/states-after.html:39
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/states-before.html:39
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/withdraws.html:36
|
||||
#: intervention/templates/intervention/detail/includes/compensations.html:36
|
||||
#: intervention/templates/intervention/detail/includes/documents.html:34
|
||||
#: intervention/templates/intervention/detail/includes/eco-account-withdraws.html:36
|
||||
#: intervention/templates/intervention/detail/includes/payments.html:37
|
||||
#: intervention/templates/intervention/detail/includes/revocation.html:41
|
||||
#: intervention/templates/intervention/detail/includes/withdraws.html:36
|
||||
#: templates/log.html:10
|
||||
msgid "Action"
|
||||
msgstr "Aktionen"
|
||||
|
||||
#: compensation/templates/compensation/detail/includes/actions.html:51
|
||||
#: compensation/templates/compensation/detail/compensation/includes/actions.html:51
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/actions.html:51
|
||||
msgid "Remove action"
|
||||
msgstr "Maßnahme entfernen"
|
||||
|
||||
#: compensation/templates/compensation/detail/includes/controls.html:5
|
||||
#: compensation/templates/compensation/detail/compensation/includes/controls.html:5
|
||||
#: compensation/templates/compensation/detail/eco_account/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
|
||||
#: compensation/templates/compensation/detail/compensation/includes/controls.html:10
|
||||
#: compensation/templates/compensation/detail/eco_account/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
|
||||
#: compensation/templates/compensation/detail/compensation/includes/controls.html:17
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/controls.html:17
|
||||
#: intervention/templates/intervention/detail/includes/controls.html:32
|
||||
msgid "Edit"
|
||||
msgstr "Bearbeiten"
|
||||
|
||||
#: compensation/templates/compensation/detail/includes/controls.html:21
|
||||
#: compensation/templates/compensation/detail/compensation/includes/controls.html:21
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/controls.html:21
|
||||
#: intervention/templates/intervention/detail/includes/controls.html:36
|
||||
msgid "Show log"
|
||||
msgstr "Log anzeigen"
|
||||
|
||||
#: compensation/templates/compensation/detail/includes/controls.html:24
|
||||
#: intervention/templates/intervention/detail/includes/controls.html:36
|
||||
#: compensation/templates/compensation/detail/compensation/includes/controls.html:24
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/controls.html:24
|
||||
#: intervention/templates/intervention/detail/includes/controls.html:39
|
||||
#: 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/compensation/includes/deadlines.html:8
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/deadlines.html:8
|
||||
msgid "Deadlines"
|
||||
msgstr "Termine und Fristen"
|
||||
|
||||
#: compensation/templates/compensation/detail/includes/deadlines.html:14
|
||||
#: compensation/templates/compensation/detail/compensation/includes/deadlines.html:14
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/deadlines.html:14
|
||||
msgid "Add new deadline"
|
||||
msgstr "Neue Frist hinzufügen"
|
||||
|
||||
#: compensation/templates/compensation/detail/includes/deadlines.html:28
|
||||
#: compensation/templates/compensation/detail/compensation/includes/deadlines.html:28
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/deadlines.html:28
|
||||
#: intervention/forms.py:40
|
||||
msgid "Type"
|
||||
msgstr "Typ"
|
||||
|
||||
#: compensation/templates/compensation/detail/includes/deadlines.html:51
|
||||
#: compensation/templates/compensation/detail/compensation/includes/deadlines.html:51
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/deadlines.html:51
|
||||
msgid "Remove deadline"
|
||||
msgstr "Frist löschen"
|
||||
|
||||
#: compensation/templates/compensation/detail/includes/documents.html:8
|
||||
#: compensation/templates/compensation/detail/compensation/includes/documents.html:8
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/documents.html:8
|
||||
#: intervention/templates/intervention/detail/includes/documents.html:8
|
||||
msgid "Documents"
|
||||
msgstr "Dokumente"
|
||||
|
||||
#: compensation/templates/compensation/detail/includes/documents.html:14
|
||||
#: compensation/templates/compensation/detail/compensation/includes/documents.html:14
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/documents.html:14
|
||||
#: intervention/templates/intervention/detail/includes/documents.html:14
|
||||
#: konova/forms.py:302
|
||||
#: konova/forms.py:301
|
||||
msgid "Add new document"
|
||||
msgstr "Neues Dokument hinzufügen"
|
||||
|
||||
#: compensation/templates/compensation/detail/includes/documents.html:49
|
||||
#: compensation/templates/compensation/detail/compensation/includes/documents.html:49
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/documents.html:49
|
||||
#: intervention/templates/intervention/detail/includes/documents.html:49
|
||||
msgid "Remove document"
|
||||
msgstr "Dokument löschen"
|
||||
|
||||
#: compensation/templates/compensation/detail/includes/states-after.html:8
|
||||
#: compensation/templates/compensation/detail/compensation/includes/states-after.html:8
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/states-after.html:8
|
||||
msgid "States after"
|
||||
msgstr "Zielzustand"
|
||||
|
||||
#: compensation/templates/compensation/detail/includes/states-after.html:14
|
||||
#: compensation/templates/compensation/detail/compensation/includes/states-after.html:14
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/states-after.html:14
|
||||
msgid "Add new state after"
|
||||
msgstr "Neuen Zielzustand hinzufügen"
|
||||
|
||||
#: compensation/templates/compensation/detail/includes/states-after.html:26
|
||||
#: compensation/templates/compensation/detail/compensation/includes/states-after.html:26
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/states-after.html:26
|
||||
msgid "Missing surfaces according to states before: "
|
||||
msgstr "Fehlende Flächenmengen aus Ausgangszustand: "
|
||||
|
||||
#: compensation/templates/compensation/detail/includes/states-after.html:33
|
||||
#: compensation/templates/compensation/detail/includes/states-before.html:33
|
||||
#: compensation/templates/compensation/detail/compensation/includes/states-after.html:33
|
||||
#: compensation/templates/compensation/detail/compensation/includes/states-before.html:33
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/states-after.html:33
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/states-before.html:33
|
||||
msgid "Biotope type"
|
||||
msgstr "Biotoptyp"
|
||||
|
||||
#: compensation/templates/compensation/detail/includes/states-after.html:52
|
||||
#: compensation/templates/compensation/detail/includes/states-before.html:52
|
||||
#: compensation/templates/compensation/detail/compensation/includes/states-after.html:52
|
||||
#: compensation/templates/compensation/detail/compensation/includes/states-before.html:52
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/states-after.html:52
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/states-before.html:52
|
||||
msgid "Remove state"
|
||||
msgstr "Zustand entfernen"
|
||||
|
||||
#: compensation/templates/compensation/detail/includes/states-before.html:8
|
||||
#: compensation/templates/compensation/detail/compensation/includes/states-before.html:8
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/states-before.html:8
|
||||
msgid "States before"
|
||||
msgstr "Ausgangszustand"
|
||||
|
||||
#: compensation/templates/compensation/detail/includes/states-before.html:14
|
||||
#: compensation/templates/compensation/detail/compensation/includes/states-before.html:14
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/states-before.html:14
|
||||
msgid "Add new state before"
|
||||
msgstr "Neuen Ausgangszustand hinzufügen"
|
||||
|
||||
#: compensation/templates/compensation/detail/includes/states-before.html:26
|
||||
#: compensation/templates/compensation/detail/compensation/includes/states-before.html:26
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/states-before.html:26
|
||||
msgid "Missing surfaces according to states after: "
|
||||
msgstr "Fehlende Flächenmengen aus Zielzustand: "
|
||||
|
||||
#: compensation/templates/compensation/detail/view.html:28
|
||||
#: compensation/templates/compensation/detail/compensation/view.html:28
|
||||
msgid "compensates intervention"
|
||||
msgstr "kompensiert Eingriff"
|
||||
|
||||
#: compensation/templates/compensation/detail/view.html:43
|
||||
#: compensation/templates/compensation/detail/compensation/view.html:43
|
||||
#: intervention/templates/intervention/detail/view.html:63
|
||||
msgid "Checked on "
|
||||
msgstr "Geprüft am "
|
||||
|
||||
#: compensation/templates/compensation/detail/view.html:43
|
||||
#: compensation/templates/compensation/detail/view.html:57
|
||||
#: compensation/templates/compensation/detail/compensation/view.html:43
|
||||
#: compensation/templates/compensation/detail/compensation/view.html:57
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:43
|
||||
#: intervention/templates/intervention/detail/view.html:63
|
||||
#: intervention/templates/intervention/detail/view.html:77
|
||||
msgid "by"
|
||||
msgstr "von"
|
||||
|
||||
#: compensation/templates/compensation/detail/view.html:57
|
||||
#: compensation/templates/compensation/detail/compensation/view.html:57
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:43
|
||||
#: intervention/templates/intervention/detail/view.html:77
|
||||
msgid "Recorded on "
|
||||
msgstr "Verzeichnet am"
|
||||
|
||||
#: compensation/templates/compensation/detail/view.html:64
|
||||
#: compensation/templates/compensation/detail/compensation/view.html:64
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:50
|
||||
#: intervention/templates/intervention/detail/view.html:96
|
||||
msgid "Last modified"
|
||||
msgstr "Zuletzt bearbeitet"
|
||||
|
||||
#: compensation/templates/compensation/detail/view.html:72
|
||||
#: compensation/templates/compensation/detail/compensation/view.html:72
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:58
|
||||
#: intervention/forms.py:251
|
||||
#: intervention/templates/intervention/detail/view.html:104
|
||||
msgid "Shared with"
|
||||
msgstr "Freigegeben für"
|
||||
|
||||
#: compensation/templates/compensation/detail/view.html:84
|
||||
#: compensation/templates/compensation/detail/compensation/view.html:84
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:70
|
||||
#: intervention/templates/intervention/detail/view.html:116
|
||||
msgid "No geometry added, yet."
|
||||
msgstr "Keine Geometrie vorhanden"
|
||||
|
||||
#: compensation/views.py:127
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/withdraws.html:8
|
||||
#: intervention/templates/intervention/detail/includes/withdraws.html:8
|
||||
msgid "Eco Account Withdraws"
|
||||
msgstr "Ökokonto Abbuchungen"
|
||||
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/withdraws.html:14
|
||||
#: intervention/templates/intervention/detail/includes/withdraws.html:14
|
||||
msgid "Add new withdraw"
|
||||
msgstr "Neue Abbuchung hinzufügen"
|
||||
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/withdraws.html:30
|
||||
msgid "Intervention Identifier"
|
||||
msgstr "Eingriffskennung"
|
||||
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/withdraws.html:51
|
||||
#: intervention/templates/intervention/detail/includes/withdraws.html:54
|
||||
msgid "Remove Withdraw"
|
||||
msgstr "Abbuchung entfernen"
|
||||
|
||||
#: compensation/views/compensation_views.py:121
|
||||
#: compensation/views/eco_account_views.py:184 intervention/views.py:391
|
||||
msgid "Log"
|
||||
msgstr "Log"
|
||||
|
||||
#: compensation/views.py:148
|
||||
#: compensation/views/compensation_views.py:142
|
||||
msgid "Compensation removed"
|
||||
msgstr "Kompensation entfernt"
|
||||
|
||||
#: compensation/views.py:228
|
||||
msgid "Payment added"
|
||||
msgstr "Zahlung hinzugefügt"
|
||||
|
||||
#: compensation/views.py:263
|
||||
msgid "Payment removed"
|
||||
msgstr "Zahlung gelöscht"
|
||||
|
||||
#: compensation/views.py:289
|
||||
msgid "Withdraw removed"
|
||||
msgstr "Abbuchung entfernt"
|
||||
|
||||
#: compensation/views.py:307 intervention/views.py:96
|
||||
#: compensation/views/compensation_views.py:161
|
||||
#: compensation/views/eco_account_views.py:261 intervention/views.py:96
|
||||
msgid "Document added"
|
||||
msgstr "Dokument hinzugefügt"
|
||||
|
||||
#: compensation/views.py:326
|
||||
#: compensation/views/compensation_views.py:180
|
||||
#: compensation/views/eco_account_views.py:205
|
||||
msgid "State added"
|
||||
msgstr "Zustand hinzugefügt"
|
||||
|
||||
#: compensation/views.py:345
|
||||
#: compensation/views/compensation_views.py:199
|
||||
#: compensation/views/eco_account_views.py:224
|
||||
msgid "Action added"
|
||||
msgstr "Maßnahme hinzugefügt"
|
||||
|
||||
#: compensation/views.py:364
|
||||
#: compensation/views/compensation_views.py:218
|
||||
#: compensation/views/eco_account_views.py:243
|
||||
msgid "Deadline added"
|
||||
msgstr "Frist hinzugefügt"
|
||||
|
||||
#: compensation/views.py:383
|
||||
#: compensation/views/compensation_views.py:237
|
||||
msgid "State removed"
|
||||
msgstr "Zustand gelöscht"
|
||||
|
||||
#: compensation/views.py:402
|
||||
#: compensation/views/compensation_views.py:256
|
||||
msgid "Action removed"
|
||||
msgstr "Maßnahme entfernt"
|
||||
|
||||
#: compensation/views/eco_account_views.py:134
|
||||
msgid "Eco-account removed"
|
||||
msgstr "Ökokonto entfernt"
|
||||
|
||||
#: compensation/views/eco_account_views.py:161
|
||||
msgid "Withdraw removed"
|
||||
msgstr "Abbuchung entfernt"
|
||||
|
||||
#: compensation/views/payment_views.py:43
|
||||
msgid "Payment added"
|
||||
msgstr "Zahlung hinzugefügt"
|
||||
|
||||
#: compensation/views/payment_views.py:78
|
||||
msgid "Payment removed"
|
||||
msgstr "Zahlung gelöscht"
|
||||
|
||||
#: intervention/filters.py:25
|
||||
msgid "Show unshared"
|
||||
msgstr "Nicht freigegebene anzeigen"
|
||||
@ -622,7 +706,7 @@ msgstr "Datum des Widerspruchs"
|
||||
msgid "Document"
|
||||
msgstr "Dokument"
|
||||
|
||||
#: intervention/forms.py:331 konova/forms.py:279
|
||||
#: intervention/forms.py:331 konova/forms.py:278
|
||||
msgid "Must be smaller than 15 Mb"
|
||||
msgstr "Muss kleiner als 15 Mb sein"
|
||||
|
||||
@ -652,11 +736,19 @@ msgstr ""
|
||||
"Ich, {} {}, bestätige, dass die notwendigen Kontrollschritte durchgeführt "
|
||||
"wurden:"
|
||||
|
||||
#: intervention/models.py:216
|
||||
#: intervention/models.py:203
|
||||
#: intervention/templates/intervention/detail/view.html:23
|
||||
#: intervention/templates/intervention/detail/view.html:27
|
||||
#: intervention/templates/intervention/detail/view.html:31
|
||||
#: intervention/templates/intervention/detail/view.html:39
|
||||
#: intervention/templates/intervention/detail/view.html:51
|
||||
#: intervention/templates/intervention/detail/view.html:83
|
||||
#: intervention/templates/intervention/detail/view.html:87
|
||||
#: intervention/templates/intervention/detail/view.html:91
|
||||
msgid "Missing"
|
||||
msgstr "Fehlt"
|
||||
|
||||
#: intervention/models.py:217
|
||||
#: intervention/models.py:204
|
||||
msgid "Exists"
|
||||
msgstr "Existiert"
|
||||
|
||||
@ -670,6 +762,14 @@ msgstr "Eingriffe"
|
||||
msgid "Intervention"
|
||||
msgstr "Eingriff"
|
||||
|
||||
#: intervention/tables.py:179
|
||||
msgid "Edit {}"
|
||||
msgstr "Bearbeite {}"
|
||||
|
||||
#: intervention/tables.py:183
|
||||
msgid "Delete {}"
|
||||
msgstr "Lösche {}"
|
||||
|
||||
#: intervention/templates/intervention/detail/includes/compensations.html:14
|
||||
msgid "Add new compensation"
|
||||
msgstr "Neue Kompensation hinzufügen"
|
||||
@ -682,22 +782,6 @@ msgstr "Kompensation entfernen"
|
||||
msgid "Record"
|
||||
msgstr "Verzeichnen"
|
||||
|
||||
#: intervention/templates/intervention/detail/includes/eco-account-withdraws.html:8
|
||||
msgid "Eco Account Withdraws"
|
||||
msgstr "Ökokonto Abbuchungen"
|
||||
|
||||
#: intervention/templates/intervention/detail/includes/eco-account-withdraws.html:14
|
||||
msgid "Add new withdraw"
|
||||
msgstr "Neue Abbuchung hinzufügen"
|
||||
|
||||
#: intervention/templates/intervention/detail/includes/eco-account-withdraws.html:30
|
||||
msgid "Account Identifier"
|
||||
msgstr "Ökokonto Kennung"
|
||||
|
||||
#: intervention/templates/intervention/detail/includes/eco-account-withdraws.html:51
|
||||
msgid "Remove Withdraw"
|
||||
msgstr "Abbuchung entfernen"
|
||||
|
||||
#: intervention/templates/intervention/detail/includes/payments.html:8
|
||||
msgid "Payments"
|
||||
msgstr "Ersatzzahlungen"
|
||||
@ -733,6 +817,14 @@ msgstr "Vom"
|
||||
msgid "Remove revocation"
|
||||
msgstr "Widerspruch entfernen"
|
||||
|
||||
#: intervention/templates/intervention/detail/includes/withdraws.html:30
|
||||
msgid "Account Identifier"
|
||||
msgstr "Ökokonto Kennung"
|
||||
|
||||
#: intervention/templates/intervention/detail/includes/withdraws.html:42
|
||||
msgid "Eco-account deleted! Withdraw invalid!"
|
||||
msgstr "Ökokonto gelöscht! Abbuchung ungültig!"
|
||||
|
||||
#: intervention/templates/intervention/detail/view.html:28
|
||||
msgid "Process type"
|
||||
msgstr "Verfahrenstyp"
|
||||
@ -848,36 +940,40 @@ msgstr ""
|
||||
msgid "You need to be part of another user group."
|
||||
msgstr "Hierfür müssen Sie einer anderen Nutzergruppe angehören!"
|
||||
|
||||
#: konova/forms.py:65
|
||||
#: konova/forms.py:64
|
||||
msgid "Not editable"
|
||||
msgstr "Nicht editierbar"
|
||||
|
||||
#: konova/forms.py:91 konova/forms.py:227
|
||||
#: konova/forms.py:90 konova/forms.py:226
|
||||
msgid "Confirm"
|
||||
msgstr "Bestätige"
|
||||
|
||||
#: konova/forms.py:103 konova/forms.py:236
|
||||
#: konova/forms.py:102 konova/forms.py:235
|
||||
msgid "Remove"
|
||||
msgstr "Löschen"
|
||||
|
||||
#: konova/forms.py:105
|
||||
#: konova/forms.py:104
|
||||
msgid "You are about to remove {} {}"
|
||||
msgstr "Sie sind dabei {} {} zu löschen"
|
||||
|
||||
#: konova/forms.py:237
|
||||
#: konova/forms.py:236
|
||||
msgid "Are you sure?"
|
||||
msgstr "Sind Sie sicher?"
|
||||
|
||||
#: konova/forms.py:267
|
||||
#: konova/forms.py:264
|
||||
msgid "Created on"
|
||||
msgstr "Erstellt"
|
||||
|
||||
#: konova/forms.py:266
|
||||
msgid "When has this file been created? Important for photos."
|
||||
msgstr "Wann wurde diese Datei erstellt oder das Foto aufgenommen?"
|
||||
|
||||
#: konova/forms.py:277
|
||||
#: konova/forms.py:276
|
||||
#: venv/lib/python3.7/site-packages/django/db/models/fields/files.py:231
|
||||
msgid "File"
|
||||
msgstr "Datei"
|
||||
|
||||
#: konova/forms.py:327
|
||||
#: konova/forms.py:326
|
||||
msgid "Added document"
|
||||
msgstr "Dokument hinzugefügt"
|
||||
|
||||
@ -905,19 +1001,19 @@ msgstr "Wenn meine freigegebenen Daten gelöscht wurden"
|
||||
msgid "On registered data edited"
|
||||
msgstr "Wenn meine freigegebenen Daten bearbeitet wurden"
|
||||
|
||||
#: konova/models.py:110
|
||||
#: konova/models.py:126
|
||||
msgid "Finished"
|
||||
msgstr "Umgesetzt bis"
|
||||
|
||||
#: konova/models.py:111
|
||||
#: konova/models.py:127
|
||||
msgid "Maintain"
|
||||
msgstr "Unterhaltung bis"
|
||||
|
||||
#: konova/models.py:112
|
||||
#: konova/models.py:128
|
||||
msgid "Control"
|
||||
msgstr "Kontrolle am"
|
||||
|
||||
#: konova/models.py:113
|
||||
#: konova/models.py:129
|
||||
msgid "Other"
|
||||
msgstr "Sonstige"
|
||||
|
||||
@ -949,10 +1045,6 @@ msgstr "Neu"
|
||||
msgid "Show"
|
||||
msgstr "Anzeigen"
|
||||
|
||||
#: konova/templates/konova/home.html:88 templates/navbar.html:34
|
||||
msgid "Eco-account"
|
||||
msgstr "Ökokonto"
|
||||
|
||||
#: konova/templates/konova/home.html:130
|
||||
msgid "Withdraw"
|
||||
msgstr "Abbuchen"
|
||||
@ -2377,6 +2469,9 @@ msgstr ""
|
||||
msgid "A fontawesome icon field"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Actions"
|
||||
#~ msgstr "Aktionen"
|
||||
|
||||
#~ msgid "Additional comment"
|
||||
#~ msgstr "Zusätzlicher Kommentar"
|
||||
|
||||
@ -2523,9 +2618,6 @@ msgstr ""
|
||||
#~ msgid "official"
|
||||
#~ msgstr "bestandskräftig"
|
||||
|
||||
#~ msgid "Intervention identifier"
|
||||
#~ msgstr "Eingriffskennung"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "A process is based on an intervention. Please fill in the missing data "
|
||||
#~ "for this intervention"
|
||||
|
Loading…
Reference in New Issue
Block a user