Eco Account deduction
* adds deductable_surface to EcoAccount model to provide an easy way to change the deductable amount from an account -> depends on external funding e.g. with AktionBlau or similar * adds overview of deducted and deductable volume to detail view * adds check to eco account model, so the deductable_surface can never be larger than the total amount of after_state surface sum * adds german formating for python logic based number formating * adds/updates translations
This commit is contained in:
parent
e1ffc53958
commit
fbcb2d9afd
@ -9,6 +9,7 @@ import shutil
|
||||
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.gis.db import models
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.core.validators import MinValueValidator
|
||||
from django.db.models import Sum, QuerySet
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
@ -281,9 +282,22 @@ class EcoAccount(AbstractCompensation):
|
||||
related_name="+"
|
||||
)
|
||||
|
||||
deductable_surface = models.FloatField(
|
||||
blank=True,
|
||||
null=True,
|
||||
help_text="Amount of deductable surface - can be lower than the total surface due to deduction limitations",
|
||||
default=0,
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return "{}".format(self.identifier)
|
||||
|
||||
def clean(self):
|
||||
# Deductable surface can not be larger than added states after surface
|
||||
after_state_sum = self.get_state_after_surface_sum()
|
||||
if self.deductable_surface > after_state_sum:
|
||||
raise ValidationError(_("Deductable surface can not be larger than existing surfaces in after states"))
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
if self.identifier is None or len(self.identifier) == 0:
|
||||
# Create new identifier
|
||||
@ -293,15 +307,34 @@ class EcoAccount(AbstractCompensation):
|
||||
self.identifier = new_id
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
@property
|
||||
def deductions_surface_sum(self) -> float:
|
||||
""" Shortcut for get_deductions_surface.
|
||||
|
||||
Can be used in templates
|
||||
|
||||
Returns:
|
||||
sum_surface (float)
|
||||
"""
|
||||
return self.get_deductions_surface()
|
||||
|
||||
def get_deductions_surface(self) -> float:
|
||||
""" Calculates the account's deductions sum surface
|
||||
""" Calculates the account's deductions surface sum
|
||||
|
||||
Returns:
|
||||
sum_surface (float)
|
||||
"""
|
||||
return self.deductions.all().aggregate(Sum("surface"))["surface__sum"] or 0
|
||||
|
||||
def get_available_rest(self, as_percentage: bool = False):
|
||||
def get_state_after_surface_sum(self) -> float:
|
||||
""" Calculates the account's after state surface sum
|
||||
|
||||
Returns:
|
||||
sum_surface (float)
|
||||
"""
|
||||
return self.after_states.all().aggregate(Sum("surface"))["surface__sum"] or 0
|
||||
|
||||
def get_available_rest(self, as_percentage: bool = False) -> float:
|
||||
""" Calculates available rest surface of the eco account
|
||||
|
||||
Args:
|
||||
@ -310,17 +343,16 @@ class EcoAccount(AbstractCompensation):
|
||||
Returns:
|
||||
|
||||
"""
|
||||
ret_val = 0
|
||||
deductions = self.deductions.filter(
|
||||
intervention__deleted=None,
|
||||
)
|
||||
deductions_surfaces = deductions.aggregate(Sum("surface"))["surface__sum"] or 0
|
||||
after_states_surfaces = self.after_states.all().aggregate(Sum("surface"))["surface__sum"] or deductions_surfaces ## no division by zero
|
||||
ret_val = after_states_surfaces - deductions_surfaces
|
||||
available_surfaces = self.deductable_surface or deductions_surfaces ## no division by zero
|
||||
ret_val = available_surfaces - deductions_surfaces
|
||||
|
||||
if as_percentage:
|
||||
if after_states_surfaces > 0:
|
||||
ret_val = int((ret_val / after_states_surfaces) * 100)
|
||||
if available_surfaces > 0:
|
||||
ret_val = int((ret_val / available_surfaces) * 100)
|
||||
else:
|
||||
ret_val = 0
|
||||
return ret_val
|
||||
|
@ -33,6 +33,7 @@
|
||||
<tr>
|
||||
<th scope="row">{% trans 'Available' %}</th>
|
||||
<td class="align-middle">
|
||||
{{obj.deductions_surface_sum|floatformat:2}} / {{obj.deductable_surface|floatformat:2}} m²
|
||||
{% with available as value %}
|
||||
{% include 'konova/custom_widgets/progressbar.html' %}
|
||||
{% endwith %}
|
||||
|
@ -18,6 +18,7 @@ from compensation.models import EcoAccountDeduction, EcoAccount
|
||||
from intervention.models import Intervention, Revocation, RevocationDocument
|
||||
from konova.forms import BaseForm, BaseModalForm
|
||||
from konova.settings import DEFAULT_LAT, DEFAULT_LON, DEFAULT_ZOOM, ZB_GROUP, ETS_GROUP
|
||||
from konova.utils.general import format_german_float
|
||||
from konova.utils.messenger import Messenger
|
||||
from konova.utils.user_checks import in_group
|
||||
from organisation.models import Organisation
|
||||
@ -545,7 +546,11 @@ class NewDeductionForm(BaseModalForm):
|
||||
if not is_valid_surface:
|
||||
self.add_error(
|
||||
"surface",
|
||||
_("The account {} has not enough surface for a deduction of {} m². There are only {} m² left").format(acc.identifier, form_surface, rest_surface),
|
||||
_("The account {} has not enough surface for a deduction of {} m². There are only {} m² left").format(
|
||||
acc.identifier,
|
||||
format_german_float(form_surface),
|
||||
format_german_float(rest_surface),
|
||||
),
|
||||
)
|
||||
return is_valid_surface and super_result
|
||||
|
||||
|
21
konova/utils/general.py
Normal file
21
konova/utils/general.py
Normal file
@ -0,0 +1,21 @@
|
||||
"""
|
||||
Author: Michel Peltriaux
|
||||
Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany
|
||||
Contact: michel.peltriaux@sgdnord.rlp.de
|
||||
Created on: 17.09.21
|
||||
|
||||
"""
|
||||
|
||||
|
||||
def format_german_float(num) -> str:
|
||||
""" Writes a float into a string based on german float notation
|
||||
|
||||
10000.000 --> "10.000,00"
|
||||
|
||||
Args:
|
||||
num (float): The number
|
||||
|
||||
Returns:
|
||||
num (str): The number as german Gleitkommazahl
|
||||
"""
|
||||
return format(num, "0,.2f").replace(",", "X").replace(".", ",").replace("X", ".")
|
@ -7,16 +7,16 @@
|
||||
#: compensation/forms.py:67 compensation/forms.py:264 compensation/forms.py:345
|
||||
#: intervention/filters.py:26 intervention/filters.py:40
|
||||
#: intervention/filters.py:47 intervention/filters.py:48
|
||||
#: intervention/forms.py:322 intervention/forms.py:334
|
||||
#: intervention/forms.py:347 konova/forms.py:108 konova/forms.py:252
|
||||
#: intervention/forms.py:321 intervention/forms.py:333
|
||||
#: intervention/forms.py:346 konova/forms.py:108 konova/forms.py:252
|
||||
#: konova/forms.py:287 konova/forms.py:292 konova/forms.py:304
|
||||
#: konova/forms.py:316 konova/forms.py:329 user/forms.py:38
|
||||
#: konova/forms.py:316 konova/forms.py:336 user/forms.py:38
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-08-26 14:59+0200\n"
|
||||
"POT-Creation-Date: 2021-09-17 12:53+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"
|
||||
@ -53,16 +53,16 @@ msgstr "Zahlung wird an diesem Datum erwartet"
|
||||
#: ema/templates/ema/detail/includes/actions.html:34
|
||||
#: ema/templates/ema/detail/includes/deadlines.html:34
|
||||
#: ema/templates/ema/detail/includes/documents.html:31
|
||||
#: intervention/forms.py:346
|
||||
#: intervention/forms.py:345
|
||||
#: intervention/templates/intervention/detail/includes/documents.html:31
|
||||
#: intervention/templates/intervention/detail/includes/payments.html:34
|
||||
#: intervention/templates/intervention/detail/includes/revocation.html:35
|
||||
#: intervention/templates/intervention/detail/includes/revocation.html:38
|
||||
#: konova/forms.py:315
|
||||
msgid "Comment"
|
||||
msgstr "Kommentar"
|
||||
|
||||
#: compensation/forms.py:68 compensation/forms.py:265 compensation/forms.py:346
|
||||
#: intervention/forms.py:348 konova/forms.py:317
|
||||
#: intervention/forms.py:347 konova/forms.py:317
|
||||
msgid "Additional comment, maximum {} letters"
|
||||
msgstr "Zusätzlicher Kommentar, maximal {} Zeichen"
|
||||
|
||||
@ -133,7 +133,7 @@ msgstr "Fristart wählen"
|
||||
#: compensation/templates/compensation/detail/compensation/includes/deadlines.html:31
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/deadlines.html:31
|
||||
#: ema/templates/ema/detail/includes/deadlines.html:31
|
||||
#: intervention/forms.py:321
|
||||
#: intervention/forms.py:320
|
||||
msgid "Date"
|
||||
msgstr "Datum"
|
||||
|
||||
@ -169,20 +169,20 @@ msgstr "Maßnahmentyp wählen"
|
||||
#: 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/deductions.html:40
|
||||
#: 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/deductions.html:37
|
||||
#: ema/templates/ema/detail/includes/actions.html:37
|
||||
#: ema/templates/ema/detail/includes/deadlines.html:37
|
||||
#: ema/templates/ema/detail/includes/documents.html:34
|
||||
#: ema/templates/ema/detail/includes/states-after.html:39
|
||||
#: ema/templates/ema/detail/includes/states-before.html:39
|
||||
#: intervention/templates/intervention/detail/includes/compensations.html:36
|
||||
#: intervention/templates/intervention/detail/includes/deductions.html:37
|
||||
#: intervention/templates/intervention/detail/includes/documents.html:34
|
||||
#: intervention/templates/intervention/detail/includes/payments.html:37
|
||||
#: intervention/templates/intervention/detail/includes/revocation.html:41
|
||||
#: intervention/templates/intervention/detail/includes/deductions.html:37
|
||||
#: templates/log.html:10
|
||||
msgid "Action"
|
||||
msgstr "Aktionen"
|
||||
@ -196,7 +196,7 @@ msgid "Select the unit"
|
||||
msgstr "Einheit wählen"
|
||||
|
||||
#: compensation/forms.py:334
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:31
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:34
|
||||
#: intervention/templates/intervention/detail/includes/deductions.html:31
|
||||
msgid "Amount"
|
||||
msgstr "Menge"
|
||||
@ -217,32 +217,37 @@ msgstr "Geben Sie die Daten der neuen Maßnahme ein"
|
||||
msgid "Added action"
|
||||
msgstr "Maßnahme hinzugefügt"
|
||||
|
||||
#: compensation/models.py:67
|
||||
#: compensation/models.py:77
|
||||
msgid "cm"
|
||||
msgstr ""
|
||||
|
||||
#: compensation/models.py:68
|
||||
#: compensation/models.py:78
|
||||
msgid "m"
|
||||
msgstr ""
|
||||
|
||||
#: compensation/models.py:69
|
||||
#: compensation/models.py:79
|
||||
msgid "km"
|
||||
msgstr ""
|
||||
|
||||
#: compensation/models.py:70
|
||||
#: compensation/models.py:80
|
||||
msgid "m²"
|
||||
msgstr ""
|
||||
|
||||
#: compensation/models.py:71
|
||||
#: compensation/models.py:81
|
||||
msgid "ha"
|
||||
msgstr ""
|
||||
|
||||
#: compensation/models.py:72
|
||||
#: compensation/models.py:82
|
||||
msgid "Pieces"
|
||||
msgstr "Stück"
|
||||
|
||||
#: compensation/models.py:299
|
||||
msgid ""
|
||||
"Deductable surface can not be larger than existing surfaces in after states"
|
||||
msgstr ""
|
||||
|
||||
#: compensation/tables.py:24 compensation/tables.py:164 ema/tables.py:28
|
||||
#: intervention/forms.py:30 intervention/tables.py:24
|
||||
#: intervention/forms.py:29 intervention/tables.py:23
|
||||
#: intervention/templates/intervention/detail/includes/compensations.html:30
|
||||
msgid "Identifier"
|
||||
msgstr "Kennung"
|
||||
@ -253,8 +258,8 @@ msgstr "Kennung"
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/documents.html:28
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:31
|
||||
#: ema/tables.py:33 ema/templates/ema/detail/includes/documents.html:28
|
||||
#: ema/templates/ema/detail/view.html:24 intervention/forms.py:37
|
||||
#: intervention/tables.py:29
|
||||
#: ema/templates/ema/detail/view.html:24 intervention/forms.py:36
|
||||
#: 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:31 konova/forms.py:286
|
||||
@ -263,27 +268,28 @@ msgstr "Bezeichnung"
|
||||
|
||||
#: compensation/tables.py:34
|
||||
#: compensation/templates/compensation/detail/compensation/view.html:43
|
||||
#: intervention/tables.py:34
|
||||
#: intervention/tables.py:33
|
||||
#: intervention/templates/intervention/detail/view.html:63 user/models.py:48
|
||||
msgid "Checked"
|
||||
msgstr "Geprüft"
|
||||
|
||||
#: compensation/tables.py:40 compensation/tables.py:179
|
||||
#: compensation/templates/compensation/detail/compensation/view.html:57
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:43
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:31
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:44
|
||||
#: ema/tables.py:38 ema/templates/ema/detail/view.html:28
|
||||
#: intervention/tables.py:40
|
||||
#: intervention/tables.py:39
|
||||
#: intervention/templates/intervention/detail/view.html:77 user/models.py:49
|
||||
msgid "Recorded"
|
||||
msgstr "Verzeichnet"
|
||||
|
||||
#: compensation/tables.py:46 compensation/tables.py:185 ema/tables.py:44
|
||||
#: intervention/tables.py:52
|
||||
#: intervention/tables.py:51
|
||||
msgid "Editable"
|
||||
msgstr "Freigegeben"
|
||||
|
||||
#: compensation/tables.py:52 compensation/tables.py:191 ema/tables.py:50
|
||||
#: intervention/tables.py:58
|
||||
#: intervention/tables.py:57
|
||||
msgid "Last edit"
|
||||
msgstr "Zuletzt bearbeitet"
|
||||
|
||||
@ -293,7 +299,7 @@ msgid "Compensations"
|
||||
msgstr "Kompensationen"
|
||||
|
||||
#: compensation/tables.py:83 compensation/tables.py:222 ema/tables.py:82
|
||||
#: intervention/tables.py:89
|
||||
#: intervention/tables.py:88
|
||||
msgid "Open {}"
|
||||
msgstr "Öffne {}"
|
||||
|
||||
@ -303,35 +309,35 @@ msgstr "Öffne {}"
|
||||
msgid "Compensation"
|
||||
msgstr "Kompensation"
|
||||
|
||||
#: compensation/tables.py:104 intervention/tables.py:108
|
||||
#: compensation/tables.py:104 intervention/tables.py:107
|
||||
msgid "Not checked yet"
|
||||
msgstr "Noch nicht geprüft"
|
||||
|
||||
#: compensation/tables.py:109 intervention/tables.py:113
|
||||
#: compensation/tables.py:109 intervention/tables.py:112
|
||||
msgid "Checked on {} by {}"
|
||||
msgstr "Am {} von {} geprüft worden"
|
||||
|
||||
#: compensation/tables.py:128
|
||||
#: compensation/templates/compensation/detail/compensation/view.html:60
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:46
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:47
|
||||
#: ema/tables.py:101 ema/templates/ema/detail/view.html:31
|
||||
#: intervention/tables.py:132
|
||||
#: intervention/models.py:360 intervention/tables.py:131
|
||||
#: intervention/templates/intervention/detail/view.html:80
|
||||
msgid "Not recorded yet"
|
||||
msgstr "Noch nicht verzeichnet"
|
||||
|
||||
#: compensation/tables.py:133 compensation/tables.py:260 ema/tables.py:106
|
||||
#: intervention/tables.py:137
|
||||
#: intervention/models.py:365 intervention/tables.py:136
|
||||
msgid "Recorded on {} by {}"
|
||||
msgstr "Am {} von {} verzeichnet worden"
|
||||
|
||||
#: compensation/tables.py:156 compensation/tables.py:283 ema/tables.py:129
|
||||
#: intervention/tables.py:160
|
||||
#: intervention/tables.py:159
|
||||
msgid "Full access granted"
|
||||
msgstr "Für Sie freigegeben - Datensatz kann bearbeitet werden"
|
||||
|
||||
#: compensation/tables.py:156 compensation/tables.py:283 ema/tables.py:129
|
||||
#: intervention/tables.py:160
|
||||
#: intervention/tables.py:159
|
||||
msgid "Access not granted"
|
||||
msgstr "Nicht freigegeben - Datensatz nur lesbar"
|
||||
|
||||
@ -439,7 +445,7 @@ msgstr "Frist/Termin hinzufügen"
|
||||
|
||||
#: compensation/templates/compensation/detail/compensation/includes/deadlines.html:28
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/deadlines.html:28
|
||||
#: ema/templates/ema/detail/includes/deadlines.html:28 intervention/forms.py:42
|
||||
#: ema/templates/ema/detail/includes/deadlines.html:28 intervention/forms.py:41
|
||||
msgid "Type"
|
||||
msgstr "Typ"
|
||||
|
||||
@ -460,7 +466,7 @@ msgstr "Dokumente"
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/documents.html:14
|
||||
#: ema/templates/ema/detail/includes/documents.html:14
|
||||
#: intervention/templates/intervention/detail/includes/documents.html:14
|
||||
#: konova/forms.py:328
|
||||
#: konova/forms.py:335
|
||||
msgid "Add new document"
|
||||
msgstr "Neues Dokument hinzufügen"
|
||||
|
||||
@ -536,7 +542,7 @@ msgstr "Geprüft am "
|
||||
|
||||
#: compensation/templates/compensation/detail/compensation/view.html:50
|
||||
#: compensation/templates/compensation/detail/compensation/view.html:64
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:50
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:51
|
||||
#: ema/templates/ema/detail/view.html:35
|
||||
#: intervention/templates/intervention/detail/view.html:70
|
||||
#: intervention/templates/intervention/detail/view.html:84
|
||||
@ -544,22 +550,22 @@ msgid "by"
|
||||
msgstr "von"
|
||||
|
||||
#: compensation/templates/compensation/detail/compensation/view.html:64
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:50
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:51
|
||||
#: ema/templates/ema/detail/view.html:35
|
||||
#: intervention/templates/intervention/detail/view.html:84
|
||||
msgid "Recorded on "
|
||||
msgstr "Verzeichnet am"
|
||||
|
||||
#: compensation/templates/compensation/detail/compensation/view.html:71
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:69
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:70
|
||||
#: ema/templates/ema/detail/view.html:54
|
||||
#: intervention/templates/intervention/detail/view.html:103
|
||||
msgid "Last modified"
|
||||
msgstr "Zuletzt bearbeitet"
|
||||
|
||||
#: compensation/templates/compensation/detail/compensation/view.html:79
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:77
|
||||
#: ema/templates/ema/detail/view.html:69 intervention/forms.py:255
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:78
|
||||
#: ema/templates/ema/detail/view.html:69 intervention/forms.py:254
|
||||
#: intervention/templates/intervention/detail/view.html:111
|
||||
msgid "Shared with"
|
||||
msgstr "Freigegeben für"
|
||||
@ -590,40 +596,28 @@ msgstr "Neue Abbuchung hinzufügen"
|
||||
msgid "Intervention Identifier"
|
||||
msgstr "Eingriffskennung"
|
||||
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:34
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:37
|
||||
#: intervention/templates/intervention/detail/includes/deductions.html:34
|
||||
#: user/models.py:51
|
||||
msgid "Created"
|
||||
msgstr "Erstellt"
|
||||
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:43
|
||||
#: intervention/templates/intervention/detail/includes/deductions.html:43
|
||||
msgid "Eco-account deleted! Deduction invalid!"
|
||||
msgstr "Ökokonto gelöscht! Abbuchung ungültig!"
|
||||
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:43
|
||||
#: intervention/templates/intervention/detail/includes/deductions.html:43
|
||||
msgid "Eco-account not recorded! Deduction invalid!"
|
||||
msgstr "Ökokonto nicht verzeichnet! Abbuchung ungültig!"
|
||||
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:56
|
||||
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:63
|
||||
#: intervention/templates/intervention/detail/includes/deductions.html:56
|
||||
msgid "Remove Deduction"
|
||||
msgstr "Abbuchung entfernen"
|
||||
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:57
|
||||
#: ema/templates/ema/detail/view.html:42
|
||||
#: intervention/templates/intervention/detail/view.html:51
|
||||
msgid "Conservation office"
|
||||
msgstr "Naturschutzbehörde"
|
||||
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:60
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:64
|
||||
#: ema/templates/ema/detail/view.html:45 ema/templates/ema/detail/view.html:49
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:61
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:65
|
||||
#: ema/templates/ema/detail/view.html:41 ema/templates/ema/detail/view.html:45
|
||||
#: ema/templates/ema/detail/view.html:49
|
||||
#: intervention/templates/intervention/detail/view.html:30
|
||||
#: intervention/templates/intervention/detail/view.html:34
|
||||
#: intervention/templates/intervention/detail/view.html:38
|
||||
#: intervention/templates/intervention/detail/view.html:42
|
||||
#: intervention/templates/intervention/detail/view.html:46
|
||||
#: intervention/templates/intervention/detail/view.html:50
|
||||
#: intervention/templates/intervention/detail/view.html:54
|
||||
#: intervention/templates/intervention/detail/view.html:58
|
||||
#: intervention/templates/intervention/detail/view.html:90
|
||||
@ -631,76 +625,82 @@ msgstr "Naturschutzbehörde"
|
||||
msgid "Missing"
|
||||
msgstr "Fehlt"
|
||||
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:61
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:58
|
||||
#: ema/templates/ema/detail/view.html:42
|
||||
#: intervention/templates/intervention/detail/view.html:51
|
||||
msgid "Conservation office"
|
||||
msgstr "Naturschutzbehörde"
|
||||
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:62
|
||||
#: ema/templates/ema/detail/view.html:46
|
||||
#: intervention/templates/intervention/detail/view.html:55
|
||||
msgid "Conversation office file number"
|
||||
msgstr "Aktenzeichen Naturschutzbehörde"
|
||||
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:65
|
||||
#: ema/templates/ema/detail/view.html:50 intervention/forms.py:54
|
||||
#: compensation/templates/compensation/detail/eco_account/view.html:66
|
||||
#: ema/templates/ema/detail/view.html:50 intervention/forms.py:53
|
||||
#: intervention/templates/intervention/detail/view.html:59
|
||||
msgid "Intervention handler"
|
||||
msgstr "Eingriffsverursacher"
|
||||
|
||||
#: compensation/views/compensation_views.py:122
|
||||
#: compensation/views/eco_account_views.py:184 ema/views.py:127
|
||||
#: intervention/views.py:336
|
||||
#: compensation/views/compensation_views.py:123
|
||||
#: compensation/views/eco_account_views.py:190 ema/views.py:128
|
||||
#: intervention/views.py:391
|
||||
msgid "Log"
|
||||
msgstr "Log"
|
||||
|
||||
#: compensation/views/compensation_views.py:143
|
||||
#: compensation/views/compensation_views.py:144
|
||||
msgid "Compensation removed"
|
||||
msgstr "Kompensation entfernt"
|
||||
|
||||
#: compensation/views/compensation_views.py:162
|
||||
#: compensation/views/eco_account_views.py:283 ema/views.py:249
|
||||
#: intervention/views.py:93
|
||||
#: compensation/views/compensation_views.py:163
|
||||
#: compensation/views/eco_account_views.py:289 ema/views.py:250
|
||||
#: intervention/views.py:94
|
||||
msgid "Document added"
|
||||
msgstr "Dokument hinzugefügt"
|
||||
|
||||
#: compensation/views/compensation_views.py:181
|
||||
#: compensation/views/eco_account_views.py:227 ema/views.py:193
|
||||
#: compensation/views/compensation_views.py:219
|
||||
#: compensation/views/eco_account_views.py:233 ema/views.py:194
|
||||
msgid "State added"
|
||||
msgstr "Zustand hinzugefügt"
|
||||
|
||||
#: compensation/views/compensation_views.py:200
|
||||
#: compensation/views/eco_account_views.py:246 ema/views.py:212
|
||||
#: compensation/views/compensation_views.py:238
|
||||
#: compensation/views/eco_account_views.py:252 ema/views.py:213
|
||||
msgid "Action added"
|
||||
msgstr "Maßnahme hinzugefügt"
|
||||
|
||||
#: compensation/views/compensation_views.py:219
|
||||
#: compensation/views/eco_account_views.py:265 ema/views.py:231
|
||||
#: compensation/views/compensation_views.py:257
|
||||
#: compensation/views/eco_account_views.py:271 ema/views.py:232
|
||||
msgid "Deadline added"
|
||||
msgstr "Frist/Termin hinzugefügt"
|
||||
|
||||
#: compensation/views/compensation_views.py:238
|
||||
#: compensation/views/compensation_views.py:276
|
||||
msgid "State removed"
|
||||
msgstr "Zustand gelöscht"
|
||||
|
||||
#: compensation/views/compensation_views.py:257
|
||||
#: compensation/views/compensation_views.py:295
|
||||
msgid "Action removed"
|
||||
msgstr "Maßnahme entfernt"
|
||||
|
||||
#: compensation/views/eco_account_views.py:134
|
||||
#: compensation/views/eco_account_views.py:140
|
||||
msgid "Eco-account removed"
|
||||
msgstr "Ökokonto entfernt"
|
||||
|
||||
#: compensation/views/eco_account_views.py:161
|
||||
#: compensation/views/eco_account_views.py:167
|
||||
msgid "Deduction removed"
|
||||
msgstr "Abbuchung entfernt"
|
||||
|
||||
#: compensation/views/eco_account_views.py:204 ema/views.py:170
|
||||
#: intervention/views.py:376
|
||||
#: compensation/views/eco_account_views.py:210 ema/views.py:171
|
||||
#: intervention/views.py:431
|
||||
msgid "{} unrecorded"
|
||||
msgstr "{} entzeichnet"
|
||||
|
||||
#: compensation/views/eco_account_views.py:204 ema/views.py:170
|
||||
#: intervention/views.py:376
|
||||
#: compensation/views/eco_account_views.py:210 ema/views.py:171
|
||||
#: intervention/views.py:431
|
||||
msgid "{} recorded"
|
||||
msgstr "{} verzeichnet"
|
||||
|
||||
#: compensation/views/eco_account_views.py:303 intervention/views.py:358
|
||||
#: compensation/views/eco_account_views.py:346 intervention/views.py:413
|
||||
msgid "Deduction added"
|
||||
msgstr "Abbuchung hinzugefügt"
|
||||
|
||||
@ -732,7 +732,7 @@ msgstr ""
|
||||
msgid "Payment funded compensation"
|
||||
msgstr "Ersatzzahlungsmaßnahme"
|
||||
|
||||
#: ema/views.py:153
|
||||
#: ema/views.py:154
|
||||
msgid "EMA removed"
|
||||
msgstr "EMA entfernt"
|
||||
|
||||
@ -752,120 +752,120 @@ msgstr "Gemarkung"
|
||||
msgid "Search for district"
|
||||
msgstr "Nach Gemarkung suchen"
|
||||
|
||||
#: intervention/forms.py:33
|
||||
#: intervention/forms.py:32
|
||||
msgid "Generated automatically if none was given"
|
||||
msgstr "Wird automatisch erzeugt, falls nicht angegeben"
|
||||
|
||||
#: intervention/forms.py:45
|
||||
#: intervention/forms.py:44
|
||||
msgid "Which intervention type is this"
|
||||
msgstr "Welcher Eingriffstyp"
|
||||
|
||||
#: intervention/forms.py:48
|
||||
#: intervention/forms.py:47
|
||||
#: intervention/templates/intervention/detail/view.html:39
|
||||
msgid "Law"
|
||||
msgstr "Gesetz"
|
||||
|
||||
#: intervention/forms.py:51
|
||||
#: intervention/forms.py:50
|
||||
msgid "Based on which law"
|
||||
msgstr "Basiert auf welchem Recht"
|
||||
|
||||
#: intervention/forms.py:57
|
||||
#: intervention/forms.py:56
|
||||
msgid "Who performs the intervention"
|
||||
msgstr "Wer führt den Eingriff durch"
|
||||
|
||||
#: intervention/forms.py:60
|
||||
#: intervention/forms.py:59
|
||||
msgid "Data provider"
|
||||
msgstr "Datenbereitsteller"
|
||||
|
||||
#: intervention/forms.py:62
|
||||
#: intervention/forms.py:61
|
||||
msgid "Who provides the data for the intervention"
|
||||
msgstr "Wer stellt die Daten für den Eingriff zur Verfügung"
|
||||
|
||||
#: intervention/forms.py:67
|
||||
#: intervention/forms.py:66
|
||||
msgid "Organization"
|
||||
msgstr "Organisation"
|
||||
|
||||
#: intervention/forms.py:73
|
||||
#: intervention/forms.py:72
|
||||
msgid "Data provider details"
|
||||
msgstr "Datenbereitsteller Details"
|
||||
|
||||
#: intervention/forms.py:76
|
||||
#: intervention/forms.py:75
|
||||
msgid "Further details"
|
||||
msgstr "Weitere Details"
|
||||
|
||||
#: intervention/forms.py:89
|
||||
#: intervention/forms.py:88
|
||||
msgid "Map"
|
||||
msgstr "Karte"
|
||||
|
||||
#: intervention/forms.py:91
|
||||
#: intervention/forms.py:90
|
||||
msgid "Where does the intervention take place"
|
||||
msgstr "Wo findet der Eingriff statt"
|
||||
|
||||
#: intervention/forms.py:99
|
||||
#: intervention/forms.py:98
|
||||
msgid "Files"
|
||||
msgstr "Dateien"
|
||||
|
||||
#: intervention/forms.py:106
|
||||
#: intervention/forms.py:105
|
||||
msgid "New intervention"
|
||||
msgstr "Neuer Eingriff"
|
||||
|
||||
#: intervention/forms.py:148
|
||||
#: intervention/forms.py:147
|
||||
msgid "Edit intervention"
|
||||
msgstr "Eingriff bearbeiten"
|
||||
|
||||
#: intervention/forms.py:244
|
||||
#: intervention/forms.py:243
|
||||
msgid "Share link"
|
||||
msgstr "Freigabelink"
|
||||
|
||||
#: intervention/forms.py:246
|
||||
#: intervention/forms.py:245
|
||||
msgid "Send this link to users who you want to have writing access on the data"
|
||||
msgstr "Andere Nutzer erhalten über diesen Link Zugriff auf die Daten"
|
||||
|
||||
#: intervention/forms.py:258
|
||||
#: intervention/forms.py:257
|
||||
msgid "Remove check to remove access for this user"
|
||||
msgstr "Wählen Sie die Nutzer ab, die keinen Zugriff mehr haben sollen"
|
||||
|
||||
#: intervention/forms.py:269
|
||||
#: intervention/forms.py:268
|
||||
#: intervention/templates/intervention/detail/includes/controls.html:15
|
||||
msgid "Share"
|
||||
msgstr "Freigabe"
|
||||
|
||||
#: intervention/forms.py:270
|
||||
#: intervention/forms.py:269
|
||||
msgid "Share settings for {}"
|
||||
msgstr "Freigabe Einstellungen für {}"
|
||||
|
||||
#: intervention/forms.py:323
|
||||
#: intervention/forms.py:322
|
||||
msgid "Date of revocation"
|
||||
msgstr "Datum des Widerspruchs"
|
||||
|
||||
#: intervention/forms.py:333
|
||||
#: intervention/templates/intervention/detail/includes/revocation.html:38
|
||||
#: intervention/forms.py:332
|
||||
#: intervention/templates/intervention/detail/includes/revocation.html:35
|
||||
msgid "Document"
|
||||
msgstr "Dokument"
|
||||
|
||||
#: intervention/forms.py:336 konova/forms.py:305
|
||||
#: intervention/forms.py:335 konova/forms.py:305
|
||||
msgid "Must be smaller than 15 Mb"
|
||||
msgstr "Muss kleiner als 15 Mb sein"
|
||||
|
||||
#: intervention/forms.py:359
|
||||
#: intervention/forms.py:358
|
||||
#: intervention/templates/intervention/detail/includes/revocation.html:18
|
||||
msgid "Add revocation"
|
||||
msgstr "Widerspruch hinzufügen"
|
||||
|
||||
#: intervention/forms.py:400
|
||||
#: intervention/forms.py:398
|
||||
msgid "Checked intervention data"
|
||||
msgstr "Eingriffsdaten geprüft"
|
||||
|
||||
#: intervention/forms.py:406
|
||||
#: intervention/forms.py:404
|
||||
msgid "Checked compensations data and payments"
|
||||
msgstr "Kompensationen und Zahlungen geprüft"
|
||||
|
||||
#: intervention/forms.py:414
|
||||
#: intervention/forms.py:412
|
||||
#: intervention/templates/intervention/detail/includes/controls.html:19
|
||||
msgid "Run check"
|
||||
msgstr "Prüfung vornehmen"
|
||||
|
||||
#: intervention/forms.py:415 konova/forms.py:376
|
||||
#: intervention/forms.py:413 konova/forms.py:389
|
||||
msgid ""
|
||||
"I, {} {}, confirm that all necessary control steps have been performed by "
|
||||
"myself."
|
||||
@ -878,7 +878,7 @@ msgid "Only recorded accounts can be selected for deductions"
|
||||
msgstr "Nur verzeichnete Ökokonten können für Abbuchungen verwendet werden."
|
||||
|
||||
#: intervention/forms.py:483 intervention/forms.py:490
|
||||
#: intervention/tables.py:89
|
||||
#: intervention/tables.py:88
|
||||
#: intervention/templates/intervention/detail/view.html:19
|
||||
#: konova/templates/konova/home.html:11 templates/navbar.html:22
|
||||
msgid "Intervention"
|
||||
@ -912,49 +912,50 @@ msgstr ""
|
||||
"Das Ökokonto {} hat für eine Abbuchung von {} m² nicht ausreichend "
|
||||
"Restfläche. Es stehen noch {} m² zur Verfügung."
|
||||
|
||||
#: intervention/models.py:200
|
||||
#: intervention/models.py:306
|
||||
msgid "Registration office file number missing"
|
||||
msgstr "Aktenzeichen Zulassungsbehörde fehlt"
|
||||
|
||||
#: intervention/models.py:203
|
||||
#: intervention/models.py:309
|
||||
msgid "Conversation office file number missing"
|
||||
msgstr "Aktenzeichen Naturschutzbehörde fehlt"
|
||||
|
||||
#: intervention/models.py:206
|
||||
#: intervention/models.py:312
|
||||
msgid "Responsible data missing"
|
||||
msgstr "Daten zu Verantwortlichen fehlen"
|
||||
|
||||
#: intervention/models.py:220
|
||||
#: intervention/models.py:326
|
||||
msgid "Revocation exists"
|
||||
msgstr "Widerspruch liegt vor"
|
||||
|
||||
#: intervention/models.py:223
|
||||
#: intervention/models.py:329
|
||||
msgid "Registration date missing"
|
||||
msgstr "Datum Zulassung bzw. Satzungsbeschluss fehlt"
|
||||
|
||||
#: intervention/models.py:226
|
||||
#: intervention/models.py:332
|
||||
msgid "Binding on missing"
|
||||
msgstr "Datum Bestandskraft fehlt"
|
||||
|
||||
#: intervention/models.py:228
|
||||
#: intervention/models.py:334
|
||||
msgid "Legal data missing"
|
||||
msgstr "Rechtliche Daten fehlen"
|
||||
|
||||
#: intervention/tables.py:46
|
||||
#: intervention/tables.py:45
|
||||
#: intervention/templates/intervention/detail/includes/revocation.html:8
|
||||
#: intervention/templates/intervention/detail/includes/revocation.html:55
|
||||
#: intervention/templates/intervention/detail/view.html:99
|
||||
msgid "Revocation"
|
||||
msgstr "Widerspruch"
|
||||
|
||||
#: intervention/tables.py:67
|
||||
#: intervention/tables.py:66
|
||||
msgid "Interventions"
|
||||
msgstr "Eingriffe"
|
||||
|
||||
#: intervention/tables.py:177
|
||||
#: intervention/tables.py:176
|
||||
msgid "No revocation"
|
||||
msgstr "Kein Widerspruch"
|
||||
|
||||
#: intervention/tables.py:183
|
||||
#: intervention/tables.py:182
|
||||
msgid "Revocation from {}, added on {} by {}"
|
||||
msgstr "Widerspruch vom {}, am {} von {} hinzugefügt"
|
||||
|
||||
@ -966,6 +967,18 @@ msgstr "Neue Kompensation hinzufügen"
|
||||
msgid "Remove compensation"
|
||||
msgstr "Kompensation entfernen"
|
||||
|
||||
#: intervention/templates/intervention/detail/includes/deductions.html:28
|
||||
msgid "Account Identifier"
|
||||
msgstr "Ökokonto Kennung"
|
||||
|
||||
#: intervention/templates/intervention/detail/includes/deductions.html:43
|
||||
msgid "Eco-account deleted! Deduction invalid!"
|
||||
msgstr "Ökokonto gelöscht! Abbuchung ungültig!"
|
||||
|
||||
#: intervention/templates/intervention/detail/includes/deductions.html:43
|
||||
msgid "Eco-account not recorded! Deduction invalid!"
|
||||
msgstr "Ökokonto nicht verzeichnet! Abbuchung ungültig!"
|
||||
|
||||
#: intervention/templates/intervention/detail/includes/payments.html:8
|
||||
msgid "Payments"
|
||||
msgstr "Ersatzzahlungen"
|
||||
@ -992,10 +1005,6 @@ msgstr "Vom"
|
||||
msgid "Remove revocation"
|
||||
msgstr "Widerspruch entfernen"
|
||||
|
||||
#: intervention/templates/intervention/detail/includes/deductions.html:28
|
||||
msgid "Account Identifier"
|
||||
msgstr "Ökokonto Kennung"
|
||||
|
||||
#: intervention/templates/intervention/detail/view.html:35
|
||||
msgid "Process type"
|
||||
msgstr "Verfahrenstyp"
|
||||
@ -1020,19 +1029,19 @@ msgstr "Datum Bestandskraft"
|
||||
msgid "Exists"
|
||||
msgstr "vorhanden"
|
||||
|
||||
#: intervention/views.py:65
|
||||
#: intervention/views.py:66
|
||||
msgid "Intervention {} added"
|
||||
msgstr "Eingriff {} hinzugefügt"
|
||||
|
||||
#: intervention/views.py:68 intervention/views.py:169
|
||||
#: intervention/views.py:69 intervention/views.py:224
|
||||
msgid "Invalid input"
|
||||
msgstr "Eingabe fehlerhaft"
|
||||
|
||||
#: intervention/views.py:127
|
||||
#: intervention/views.py:182
|
||||
msgid "This intervention has a revocation from {}"
|
||||
msgstr "Es existiert ein Widerspruch vom {}"
|
||||
|
||||
#: intervention/views.py:143
|
||||
#: intervention/views.py:198
|
||||
msgid ""
|
||||
"Remember: This data has not been shared with you, yet. This means you can "
|
||||
"only read but can not edit or perform any actions like running a check or "
|
||||
@ -1042,43 +1051,43 @@ msgstr ""
|
||||
"bedeutet, dass Sie nur lesenden Zugriff hierauf haben und weder bearbeiten, "
|
||||
"noch Prüfungen durchführen oder verzeichnen können."
|
||||
|
||||
#: intervention/views.py:166
|
||||
#: intervention/views.py:221
|
||||
msgid "{} edited"
|
||||
msgstr "{} bearbeitet"
|
||||
|
||||
#: intervention/views.py:195
|
||||
#: intervention/views.py:250
|
||||
msgid "{} removed"
|
||||
msgstr "{} entfernt"
|
||||
|
||||
#: intervention/views.py:216
|
||||
#: intervention/views.py:271
|
||||
msgid "Revocation removed"
|
||||
msgstr "Widerspruch entfernt"
|
||||
|
||||
#: intervention/views.py:242
|
||||
#: intervention/views.py:297
|
||||
msgid "{} has already been shared with you"
|
||||
msgstr "{} wurde bereits für Sie freigegeben"
|
||||
|
||||
#: intervention/views.py:247
|
||||
#: intervention/views.py:302
|
||||
msgid "{} has been shared with you"
|
||||
msgstr "{} ist nun für Sie freigegeben"
|
||||
|
||||
#: intervention/views.py:254
|
||||
#: intervention/views.py:309
|
||||
msgid "Share link invalid"
|
||||
msgstr "Freigabelink ungültig"
|
||||
|
||||
#: intervention/views.py:275
|
||||
#: intervention/views.py:330
|
||||
msgid "Share settings updated"
|
||||
msgstr "Freigabe Einstellungen aktualisiert"
|
||||
|
||||
#: intervention/views.py:294
|
||||
#: intervention/views.py:349
|
||||
msgid "Check performed"
|
||||
msgstr "Prüfung durchgeführt"
|
||||
|
||||
#: intervention/views.py:314
|
||||
#: intervention/views.py:369
|
||||
msgid "Revocation added"
|
||||
msgstr "Widerspruch hinzugefügt"
|
||||
|
||||
#: intervention/views.py:381
|
||||
#: intervention/views.py:436
|
||||
msgid "There are errors on this intervention:"
|
||||
msgstr "Es liegen Fehler in diesem Eingriff vor:"
|
||||
|
||||
@ -1136,27 +1145,27 @@ msgstr "Wann wurde diese Datei erstellt oder das Foto aufgenommen?"
|
||||
msgid "File"
|
||||
msgstr "Datei"
|
||||
|
||||
#: konova/forms.py:353
|
||||
#: konova/forms.py:366
|
||||
msgid "Added document"
|
||||
msgstr "Dokument hinzugefügt"
|
||||
|
||||
#: konova/forms.py:367
|
||||
#: konova/forms.py:380
|
||||
msgid "Confirm record"
|
||||
msgstr "Verzeichnen bestätigen"
|
||||
|
||||
#: konova/forms.py:375
|
||||
#: konova/forms.py:388
|
||||
msgid "Record data"
|
||||
msgstr "Daten verzeichnen"
|
||||
|
||||
#: konova/forms.py:380
|
||||
#: konova/forms.py:395
|
||||
msgid "Confirm unrecord"
|
||||
msgstr "Entzeichnen bestätigen"
|
||||
|
||||
#: konova/forms.py:381
|
||||
#: konova/forms.py:396
|
||||
msgid "Unrecord data"
|
||||
msgstr "Daten entzeichnen"
|
||||
|
||||
#: konova/forms.py:382
|
||||
#: konova/forms.py:397
|
||||
msgid "I, {} {}, confirm that this data must be unrecorded."
|
||||
msgstr ""
|
||||
"Ich, {} {}, bestätige, dass diese Daten wieder entzeichnet werden müssen."
|
||||
@ -1185,19 +1194,19 @@ msgstr "Wenn meine freigegebenen Daten gelöscht wurden"
|
||||
msgid "On registered data edited"
|
||||
msgstr "Wenn meine freigegebenen Daten bearbeitet wurden"
|
||||
|
||||
#: konova/models.py:189
|
||||
#: konova/models.py:190
|
||||
msgid "Finished"
|
||||
msgstr "Umgesetzt bis"
|
||||
|
||||
#: konova/models.py:190
|
||||
#: konova/models.py:191
|
||||
msgid "Maintain"
|
||||
msgstr "Unterhaltung bis"
|
||||
|
||||
#: konova/models.py:191
|
||||
#: konova/models.py:192
|
||||
msgid "Control"
|
||||
msgstr "Kontrolle am"
|
||||
|
||||
#: konova/models.py:192
|
||||
#: konova/models.py:193
|
||||
msgid "Other"
|
||||
msgstr "Sonstige"
|
||||
|
||||
@ -1233,6 +1242,10 @@ msgstr "Anzeigen"
|
||||
msgid "Deduct"
|
||||
msgstr "Abbuchen"
|
||||
|
||||
#: konova/utils/documents.py:52
|
||||
msgid "Document '{}' deleted"
|
||||
msgstr "Dokument '{}' gelöscht"
|
||||
|
||||
#: konova/utils/message_templates.py:11
|
||||
msgid "There was an error on this form."
|
||||
msgstr "Es gab einen Fehler im Formular."
|
||||
@ -1253,11 +1266,7 @@ msgstr "<a href=\"{}\">Schauen Sie rein</a>"
|
||||
msgid "{} has been checked successfully by user {}! {}"
|
||||
msgstr "{} wurde erfolgreich vom Nutzer {} geprüft! {}"
|
||||
|
||||
#: konova/views.py:138
|
||||
msgid "Document '{}' deleted"
|
||||
msgstr "Dokument '{}' gelöscht"
|
||||
|
||||
#: konova/views.py:157
|
||||
#: konova/views.py:115
|
||||
msgid "Deadline removed"
|
||||
msgstr "Frist gelöscht"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user