EcoAccount index

* renames eco_withdraws to withdraws
* adds EcoAccountTableFilter
* changes percentage withdraw to surface withdraw --> renames amount to surface
* updates EcoAccountTable
  * adds column for rendering rest of available account using a progress bar
* adds progressbar.html to konova/custom_widgets
* adds/updates translations
This commit is contained in:
mipel 2021-08-09 14:16:54 +02:00
parent a7aeecde2e
commit 93c02a72ca
9 changed files with 279 additions and 112 deletions

View File

@ -52,7 +52,7 @@ class EcoAccountWithdrawAdmin(admin.ModelAdmin):
"id", "id",
"account", "account",
"intervention", "intervention",
"amount", "surface",
] ]

View File

@ -53,3 +53,48 @@ class CompensationTableFilter(InterventionTableFilter):
) )
else: else:
return queryset 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

View File

@ -175,6 +175,16 @@ class EcoAccount(AbstractCompensation):
help_text="Users having access (shared with)" 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): def __str__(self):
return "{}".format(self.identifier) return "{}".format(self.identifier)
@ -189,15 +199,14 @@ class EcoAccountWithdraw(BaseResource):
null=True, null=True,
blank=True, blank=True,
help_text="Withdrawn from", help_text="Withdrawn from",
related_name="eco_withdraws", related_name="withdraws",
) )
amount = models.FloatField( surface = models.FloatField(
null=True, null=True,
blank=True, blank=True,
help_text="Amount withdrawn (percentage)", help_text="Amount withdrawn ()",
validators=[ validators=[
MinValueValidator(limit_value=0.00), MinValueValidator(limit_value=0.00),
MaxValueValidator(limit_value=100),
] ]
) )
intervention = models.ForeignKey( intervention = models.ForeignKey(
@ -206,8 +215,8 @@ class EcoAccountWithdraw(BaseResource):
null=True, null=True,
blank=True, blank=True,
help_text="Withdrawn for", help_text="Withdrawn for",
related_name="eco_withdraws", related_name="withdraws",
) )
def __str__(self): def __str__(self):
return "{} of {}".format(self.amount, self.account) return "{} of {}".format(self.surface, self.account)

View File

@ -5,14 +5,16 @@ Contact: michel.peltriaux@sgdnord.rlp.de
Created on: 01.12.20 Created on: 01.12.20
""" """
from django.db.models import Sum
from django.http import HttpRequest from django.http import HttpRequest
from django.template.loader import render_to_string
from django.urls import reverse from django.urls import reverse
from django.utils.html import format_html from django.utils.html import format_html
from django.utils.timezone import localtime from django.utils.timezone import localtime
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from compensation.filters import CompensationTableFilter from compensation.filters import CompensationTableFilter, EcoAccountTableFilter
from compensation.models import Compensation from compensation.models import Compensation, EcoAccount
from intervention.filters import InterventionTableFilter from intervention.filters import InterventionTableFilter
from konova.sub_settings.django_settings import DEFAULT_DATE_TIME_FORMAT from konova.sub_settings.django_settings import DEFAULT_DATE_TIME_FORMAT
from konova.utils.tables import BaseTable from konova.utils.tables import BaseTable
@ -57,7 +59,7 @@ class CompensationTable(BaseTable):
class Meta(BaseTable.Meta): class Meta(BaseTable.Meta):
template_name = "django_tables2/bootstrap4.html" template_name = "django_tables2/bootstrap4.html"
def __init__(self, request:HttpRequest, *args, **kwargs): def __init__(self, request: HttpRequest, *args, **kwargs):
self.title = _("Compensations") self.title = _("Compensations")
self.add_new_url = reverse("compensation:new") self.add_new_url = reverse("compensation:new")
qs = kwargs.get("queryset", None) qs = kwargs.get("queryset", None)
@ -170,43 +172,120 @@ class EcoAccountTable(BaseTable):
orderable=True, orderable=True,
accessor="title", accessor="title",
) )
d = tables.Column( av = tables.Column(
verbose_name=_("Created on"), 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, orderable=True,
accessor="created__timestamp", accessor="created__timestamp",
) )
ac = tables.Column(
verbose_name=_("Actions"),
orderable=False,
empty_values=[],
attrs={"td": {"class": "action-col"}}
)
class Meta(BaseTable.Meta): class Meta(BaseTable.Meta):
pass template_name = "django_tables2/bootstrap4.html"
def __init__(self, *args, **kwargs): def __init__(self, request: HttpRequest, *args, **kwargs):
super().__init__(*args, **kwargs)
self.title = _("Eco Accounts") self.title = _("Eco Accounts")
self.add_new_url = reverse("compensation:acc-new") 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 = ""
html += self.render_open_btn( html += self.render_link(
_("Open {}").format(intervention), tooltip=_("Open {}").format(_("Eco-account")),
reverse("compensation:open", args=(record.id,)), href=reverse("compensation:acc-open", args=(record.id,)),
new_tab=True txt=value,
) new_tab=False,
html += self.render_edit_btn( )
_("Edit {}").format(intervention), return format_html(html)
reverse("compensation:edit", args=(record.id,)),
) def render_av(self, value, record: EcoAccount):
html += self.render_delete_btn( """ Renders the available column for an eco account
_("Delete {}").format(intervention),
reverse("compensation:remove", args=(record.id,)), Args:
value (str): The identifier value
record (EcoAccount): The eco account record
Returns:
"""
withdraws = record.withdraws.all()
withdraw_surfaces = withdraws.aggregate(Sum("amount"))["amount__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) return format_html(html)

View File

@ -90,7 +90,7 @@ def withdraw_remove_view(request: HttpRequest, id: str, withdraw_id: str):
""" """
acc = get_object_or_404(EcoAccount, id=id) acc = get_object_or_404(EcoAccount, id=id)
try: try:
eco_withdraw = acc.eco_withdraws.get(id=withdraw_id) eco_withdraw = acc.withdraws.get(id=withdraw_id)
except ObjectDoesNotExist: except ObjectDoesNotExist:
raise Http404("Unknown withdraw") raise Http404("Unknown withdraw")

View File

@ -4,7 +4,7 @@
<div class="row"> <div class="row">
<div class="col-sm-6"> <div class="col-sm-6">
<h5> <h5>
<span class="badge badge-light">{{intervention.eco_withdraws.count}}</span> <span class="badge badge-light">{{intervention.withdraws.count}}</span>
{% trans 'Eco Account Withdraws' %} {% trans 'Eco Account Withdraws' %}
</h5> </h5>
</div> </div>
@ -38,7 +38,7 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{% for withdraw in intervention.eco_withdraws.all %} {% for withdraw in intervention.withdraws.all %}
<tr> <tr>
<td class="align-middle"> <td class="align-middle">
<a href="{% url 'compensation:acc-open' withdraw.account.id %}"> <a href="{% url 'compensation:acc-open' withdraw.account.id %}">

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

View File

@ -8,15 +8,15 @@
#: intervention/filters.py:26 intervention/filters.py:40 #: intervention/filters.py:26 intervention/filters.py:40
#: intervention/filters.py:47 intervention/filters.py:48 #: intervention/filters.py:47 intervention/filters.py:48
#: intervention/forms.py:318 intervention/forms.py:330 #: intervention/forms.py:318 intervention/forms.py:330
#: intervention/forms.py:342 konova/forms.py:92 konova/forms.py:228 #: intervention/forms.py:342 konova/forms.py:91 konova/forms.py:227
#: konova/forms.py:261 konova/forms.py:266 konova/forms.py:278 #: konova/forms.py:260 konova/forms.py:265 konova/forms.py:277
#: konova/forms.py:290 konova/forms.py:303 user/forms.py:38 #: konova/forms.py:289 konova/forms.py:302 user/forms.py:38
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-08-05 12:43+0200\n" "POT-Creation-Date: 2021-08-09 14:12+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -94,7 +94,7 @@ msgstr "Geben Sie die Daten des neuen Zustandes ein"
msgid "Added state" msgid "Added state"
msgstr "Zustand hinzugefügt" msgstr "Zustand hinzugefügt"
#: compensation/forms.py:133 konova/forms.py:142 #: compensation/forms.py:133 konova/forms.py:141
msgid "Object removed" msgid "Object removed"
msgstr "Objekt entfernt" msgstr "Objekt entfernt"
@ -123,12 +123,12 @@ msgstr "Datum wählen"
#: intervention/forms.py:341 #: intervention/forms.py:341
#: intervention/templates/intervention/detail/includes/documents.html:31 #: intervention/templates/intervention/detail/includes/documents.html:31
#: intervention/templates/intervention/detail/includes/revocation.html:35 #: intervention/templates/intervention/detail/includes/revocation.html:35
#: konova/forms.py:289 #: konova/forms.py:288
msgid "Comment" msgid "Comment"
msgstr "Kommentar" msgstr "Kommentar"
#: compensation/forms.py:204 compensation/forms.py:272 #: 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" msgid "Additional comment, maximum {} letters"
msgstr "Zusätzlicher Kommentar, maximal {} Zeichen" msgstr "Zusätzlicher Kommentar, maximal {} Zeichen"
@ -200,106 +200,109 @@ msgstr ""
msgid "Pieces" msgid "Pieces"
msgstr "Stück" 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/forms.py:28 intervention/tables.py:23
#: intervention/templates/intervention/detail/includes/compensations.html:30 #: intervention/templates/intervention/detail/includes/compensations.html:30
msgid "Identifier" msgid "Identifier"
msgstr "Kennung" msgstr "Kennung"
#: compensation/tables.py:29 compensation/tables.py:169 #: compensation/tables.py:31 compensation/tables.py:171
#: compensation/templates/compensation/detail/includes/documents.html:28 #: compensation/templates/compensation/detail/includes/documents.html:28
#: compensation/templates/compensation/detail/view.html:24 #: compensation/templates/compensation/detail/view.html:24
#: intervention/forms.py:35 intervention/tables.py:28 #: intervention/forms.py:35 intervention/tables.py:28
#: intervention/templates/intervention/detail/includes/compensations.html:33 #: intervention/templates/intervention/detail/includes/compensations.html:33
#: intervention/templates/intervention/detail/includes/documents.html:28 #: intervention/templates/intervention/detail/includes/documents.html:28
#: intervention/templates/intervention/detail/view.html:24 konova/forms.py:260 #: intervention/templates/intervention/detail/view.html:24 konova/forms.py:259
msgid "Title" msgid "Title"
msgstr "Bezeichnung" msgstr "Bezeichnung"
#: compensation/tables.py:34 #: compensation/tables.py:36
#: compensation/templates/compensation/detail/view.html:36 #: compensation/templates/compensation/detail/view.html:36
#: intervention/tables.py:33 #: intervention/tables.py:33
#: intervention/templates/intervention/detail/view.html:56 user/models.py:48 #: intervention/templates/intervention/detail/view.html:56 user/models.py:48
msgid "Checked" msgid "Checked"
msgstr "Geprüft" msgstr "Geprüft"
#: compensation/tables.py:40 #: compensation/tables.py:42 compensation/tables.py:181
#: compensation/templates/compensation/detail/view.html:50 #: compensation/templates/compensation/detail/view.html:50
#: intervention/tables.py:39 #: intervention/tables.py:39
#: intervention/templates/intervention/detail/view.html:70 user/models.py:49 #: intervention/templates/intervention/detail/view.html:70 user/models.py:49
msgid "Recorded" msgid "Recorded"
msgstr "Verzeichnet" msgstr "Verzeichnet"
#: compensation/tables.py:46 intervention/tables.py:45 #: compensation/tables.py:48 compensation/tables.py:187
#: intervention/tables.py:45
msgid "Editable" msgid "Editable"
msgstr "Freigegeben" 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" msgid "Last edit"
msgstr "Zuletzt bearbeitet" msgstr "Zuletzt bearbeitet"
#: compensation/tables.py:61 #: compensation/tables.py:63
#: intervention/templates/intervention/detail/includes/compensations.html:8 #: intervention/templates/intervention/detail/includes/compensations.html:8
msgid "Compensations" msgid "Compensations"
msgstr "Kompensationen" 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 #: intervention/tables.py:92 intervention/tables.py:175
msgid "Open {}" msgid "Open {}"
msgstr "Öffne {}" msgstr "Öffne {}"
#: compensation/tables.py:83 compensation/tables.py:197 #: compensation/tables.py:85
#: compensation/templates/compensation/detail/view.html:12 #: compensation/templates/compensation/detail/view.html:12
#: konova/templates/konova/home.html:49 templates/navbar.html:28 #: konova/templates/konova/home.html:49 templates/navbar.html:28
msgid "Compensation" msgid "Compensation"
msgstr "Kompensation" msgstr "Kompensation"
#: compensation/tables.py:104 intervention/tables.py:111 #: compensation/tables.py:106 intervention/tables.py:111
msgid "Not checked yet" msgid "Not checked yet"
msgstr "Noch nicht geprüft" 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 {}" msgid "Checked on {} by {}"
msgstr "Am {} von {} geprüft worden" msgstr "Am {} von {} geprüft worden"
#: compensation/tables.py:128 #: compensation/tables.py:130
#: compensation/templates/compensation/detail/view.html:53 #: compensation/templates/compensation/detail/view.html:53
#: intervention/tables.py:135 #: intervention/tables.py:135
#: intervention/templates/intervention/detail/view.html:73 #: intervention/templates/intervention/detail/view.html:73
msgid "Not recorded yet" msgid "Not recorded yet"
msgstr "Noch nicht verzeichnet" 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 {}" msgid "Recorded on {} by {}"
msgstr "Am {} von {} verzeichnet worden" 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" msgid "Full access granted"
msgstr "Für Sie freigegeben - Datensatz kann bearbeitet werden" 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" msgid "Access not granted"
msgstr "Nicht freigegeben - Datensatz nur lesbar" msgstr "Nicht freigegeben - Datensatz nur lesbar"
#: compensation/tables.py:174 konova/forms.py:265 #: compensation/tables.py:176
msgid "Created on" msgid "Available"
msgstr "Erstellt" msgstr "Verfügbar"
#: compensation/tables.py:179 #: compensation/tables.py:202
msgid "Actions"
msgstr "Aktionen"
#: compensation/tables.py:190
msgid "Eco Accounts" msgid "Eco Accounts"
msgstr "Ökokonten" msgstr "Ökokonten"
#: compensation/tables.py:205 intervention/tables.py:179 #: compensation/tables.py:224 konova/templates/konova/home.html:88
msgid "Edit {}" #: templates/navbar.html:34
msgstr "Bearbeite {}" msgid "Eco-account"
msgstr "Ökokonto"
#: compensation/tables.py:209 intervention/tables.py:183 #: compensation/tables.py:260
msgid "Delete {}" msgid "Not recorded yet. Can not be used for withdraws, yet."
msgstr "Lösche {}" msgstr ""
"Noch nicht verzeichnet. Kann noch nicht für Abbuchungen genutzt werden."
#: compensation/templates/compensation/detail/includes/actions.html:8 #: compensation/templates/compensation/detail/includes/actions.html:8
msgctxt "Compensation" msgctxt "Compensation"
@ -353,11 +356,12 @@ msgid "Edit"
msgstr "Bearbeiten" msgstr "Bearbeiten"
#: compensation/templates/compensation/detail/includes/controls.html:21 #: compensation/templates/compensation/detail/includes/controls.html:21
#: intervention/templates/intervention/detail/includes/controls.html:36
msgid "Show log" msgid "Show log"
msgstr "Log anzeigen" msgstr "Log anzeigen"
#: compensation/templates/compensation/detail/includes/controls.html:24 #: compensation/templates/compensation/detail/includes/controls.html:24
#: intervention/templates/intervention/detail/includes/controls.html:36 #: intervention/templates/intervention/detail/includes/controls.html:39
#: venv/lib/python3.7/site-packages/django/forms/formsets.py:391 #: venv/lib/python3.7/site-packages/django/forms/formsets.py:391
msgid "Delete" msgid "Delete"
msgstr "Löschen" msgstr "Löschen"
@ -386,7 +390,7 @@ msgstr "Dokumente"
#: compensation/templates/compensation/detail/includes/documents.html:14 #: compensation/templates/compensation/detail/includes/documents.html:14
#: intervention/templates/intervention/detail/includes/documents.html:14 #: intervention/templates/intervention/detail/includes/documents.html:14
#: konova/forms.py:302 #: konova/forms.py:301
msgid "Add new document" msgid "Add new document"
msgstr "Neues Dokument hinzufügen" msgstr "Neues Dokument hinzufügen"
@ -466,50 +470,50 @@ msgstr "Freigegeben für"
msgid "No geometry added, yet." msgid "No geometry added, yet."
msgstr "Keine Geometrie vorhanden" msgstr "Keine Geometrie vorhanden"
#: compensation/views.py:127 #: compensation/views/compensation_views.py:121 intervention/views.py:391
msgid "Log" msgid "Log"
msgstr "Log" msgstr "Log"
#: compensation/views.py:148 #: compensation/views/compensation_views.py:142
msgid "Compensation removed" msgid "Compensation removed"
msgstr "Kompensation entfernt" msgstr "Kompensation entfernt"
#: compensation/views.py:228 #: compensation/views/compensation_views.py:159 intervention/views.py:96
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
msgid "Document added" msgid "Document added"
msgstr "Dokument hinzugefügt" msgstr "Dokument hinzugefügt"
#: compensation/views.py:326 #: compensation/views/compensation_views.py:178
msgid "State added" msgid "State added"
msgstr "Zustand hinzugefügt" msgstr "Zustand hinzugefügt"
#: compensation/views.py:345 #: compensation/views/compensation_views.py:197
msgid "Action added" msgid "Action added"
msgstr "Maßnahme hinzugefügt" msgstr "Maßnahme hinzugefügt"
#: compensation/views.py:364 #: compensation/views/compensation_views.py:216
msgid "Deadline added" msgid "Deadline added"
msgstr "Frist hinzugefügt" msgstr "Frist hinzugefügt"
#: compensation/views.py:383 #: compensation/views/compensation_views.py:235
msgid "State removed" msgid "State removed"
msgstr "Zustand gelöscht" msgstr "Zustand gelöscht"
#: compensation/views.py:402 #: compensation/views/compensation_views.py:254
msgid "Action removed" msgid "Action removed"
msgstr "Maßnahme entfernt" msgstr "Maßnahme entfernt"
#: compensation/views/eco_account_views.py:100
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 #: intervention/filters.py:25
msgid "Show unshared" msgid "Show unshared"
msgstr "Nicht freigegebene anzeigen" msgstr "Nicht freigegebene anzeigen"
@ -622,7 +626,7 @@ msgstr "Datum des Widerspruchs"
msgid "Document" msgid "Document"
msgstr "Dokument" 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" msgid "Must be smaller than 15 Mb"
msgstr "Muss kleiner als 15 Mb sein" msgstr "Muss kleiner als 15 Mb sein"
@ -653,6 +657,14 @@ msgstr ""
"wurden:" "wurden:"
#: intervention/models.py:216 #: intervention/models.py:216
#: 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" msgid "Missing"
msgstr "Fehlt" msgstr "Fehlt"
@ -670,6 +682,14 @@ msgstr "Eingriffe"
msgid "Intervention" msgid "Intervention"
msgstr "Eingriff" 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 #: intervention/templates/intervention/detail/includes/compensations.html:14
msgid "Add new compensation" msgid "Add new compensation"
msgstr "Neue Kompensation hinzufügen" msgstr "Neue Kompensation hinzufügen"
@ -848,36 +868,40 @@ msgstr ""
msgid "You need to be part of another user group." msgid "You need to be part of another user group."
msgstr "Hierfür müssen Sie einer anderen Nutzergruppe angehören!" msgstr "Hierfür müssen Sie einer anderen Nutzergruppe angehören!"
#: konova/forms.py:65 #: konova/forms.py:64
msgid "Not editable" msgid "Not editable"
msgstr "Nicht editierbar" msgstr "Nicht editierbar"
#: konova/forms.py:91 konova/forms.py:227 #: konova/forms.py:90 konova/forms.py:226
msgid "Confirm" msgid "Confirm"
msgstr "Bestätige" msgstr "Bestätige"
#: konova/forms.py:103 konova/forms.py:236 #: konova/forms.py:102 konova/forms.py:235
msgid "Remove" msgid "Remove"
msgstr "Löschen" msgstr "Löschen"
#: konova/forms.py:105 #: konova/forms.py:104
msgid "You are about to remove {} {}" msgid "You are about to remove {} {}"
msgstr "Sie sind dabei {} {} zu löschen" msgstr "Sie sind dabei {} {} zu löschen"
#: konova/forms.py:237 #: konova/forms.py:236
msgid "Are you sure?" msgid "Are you sure?"
msgstr "Sind Sie sicher?" 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." msgid "When has this file been created? Important for photos."
msgstr "Wann wurde diese Datei erstellt oder das Foto aufgenommen?" 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 #: venv/lib/python3.7/site-packages/django/db/models/fields/files.py:231
msgid "File" msgid "File"
msgstr "Datei" msgstr "Datei"
#: konova/forms.py:327 #: konova/forms.py:326
msgid "Added document" msgid "Added document"
msgstr "Dokument hinzugefügt" msgstr "Dokument hinzugefügt"
@ -921,6 +945,10 @@ msgstr "Kontrolle am"
msgid "Other" msgid "Other"
msgstr "Sonstige" msgstr "Sonstige"
#: konova/templates/konova/custom_widgets/progressbar.html:3
msgid "Available: "
msgstr ""
#: konova/templates/konova/custom_widgets/text-to-clipboard-input.html:6 #: konova/templates/konova/custom_widgets/text-to-clipboard-input.html:6
msgid "Copy to clipboard" msgid "Copy to clipboard"
msgstr "In Zwischenablage kopieren" msgstr "In Zwischenablage kopieren"
@ -949,10 +977,6 @@ msgstr "Neu"
msgid "Show" msgid "Show"
msgstr "Anzeigen" msgstr "Anzeigen"
#: konova/templates/konova/home.html:88 templates/navbar.html:34
msgid "Eco-account"
msgstr "Ökokonto"
#: konova/templates/konova/home.html:130 #: konova/templates/konova/home.html:130
msgid "Withdraw" msgid "Withdraw"
msgstr "Abbuchen" msgstr "Abbuchen"
@ -2377,6 +2401,9 @@ msgstr ""
msgid "A fontawesome icon field" msgid "A fontawesome icon field"
msgstr "" msgstr ""
#~ msgid "Actions"
#~ msgstr "Aktionen"
#~ msgid "Additional comment" #~ msgid "Additional comment"
#~ msgstr "Zusätzlicher Kommentar" #~ msgstr "Zusätzlicher Kommentar"