Merge pull request 'master' (#303) from master into Docker
Reviewed-on: SGD-Nord/konova#303
This commit is contained in:
commit
4bc94e78e0
@ -61,7 +61,7 @@ class AbstractModelAPISerializerV1(AbstractModelAPISerializer):
|
||||
if konova_code is None:
|
||||
return None
|
||||
return {
|
||||
"atom_id": konova_code.atom_id,
|
||||
"id": konova_code.id,
|
||||
"long_name": konova_code.long_name,
|
||||
"short_name": konova_code.short_name,
|
||||
}
|
||||
@ -70,7 +70,7 @@ class AbstractModelAPISerializerV1(AbstractModelAPISerializer):
|
||||
""" Returns a konova code instance
|
||||
|
||||
Args:
|
||||
json_str (str): The value for the code (atom id)
|
||||
json_str (str): The value for the code (id)
|
||||
code_list_identifier (str): From which konova code list this code is supposed to be from
|
||||
|
||||
Returns:
|
||||
@ -83,7 +83,7 @@ class AbstractModelAPISerializerV1(AbstractModelAPISerializer):
|
||||
return None
|
||||
try:
|
||||
code = KonovaCode.objects.get(
|
||||
atom_id=json_str,
|
||||
id=json_str,
|
||||
code_lists__in=[code_list_identifier]
|
||||
)
|
||||
except ObjectDoesNotExist as e:
|
||||
@ -297,9 +297,12 @@ class AbstractCompensationAPISerializerV1Mixin:
|
||||
"""
|
||||
deadlines = []
|
||||
for entry in deadline_data:
|
||||
deadline_type = entry["type"]
|
||||
date = entry["date"]
|
||||
comment = entry["comment"]
|
||||
try:
|
||||
deadline_type = entry["type"]
|
||||
date = entry["date"]
|
||||
comment = entry["comment"]
|
||||
except KeyError:
|
||||
raise ValueError(f"Invalid deadline content. Content was {entry} but should follow the specification")
|
||||
|
||||
# Check on validity
|
||||
if deadline_type not in DeadlineType:
|
||||
@ -341,11 +344,14 @@ class AbstractCompensationAPISerializerV1Mixin:
|
||||
"""
|
||||
states = []
|
||||
for entry in states_data:
|
||||
biotope_type = entry["biotope"]
|
||||
biotope_details = [
|
||||
self._konova_code_from_json(e, CODELIST_BIOTOPES_EXTRA_CODES_ID) for e in entry["biotope_details"]
|
||||
]
|
||||
surface = float(entry["surface"])
|
||||
try:
|
||||
biotope_type = entry["biotope"]
|
||||
biotope_details = [
|
||||
self._konova_code_from_json(e, CODELIST_BIOTOPES_EXTRA_CODES_ID) for e in entry["biotope_details"]
|
||||
]
|
||||
surface = float(entry["surface"])
|
||||
except KeyError:
|
||||
raise ValueError(f"Invalid biotope content. Content was {entry} but should follow the specification ")
|
||||
|
||||
# Check on validity
|
||||
if surface <= 0:
|
||||
@ -354,7 +360,7 @@ class AbstractCompensationAPISerializerV1Mixin:
|
||||
# If this exact data is already existing, we do not create it new. Instead put it's id in the list of
|
||||
# entries, we will use to set the new actions
|
||||
state = states_manager.filter(
|
||||
biotope_type__atom_id=biotope_type,
|
||||
biotope_type__id=biotope_type,
|
||||
surface=surface,
|
||||
).exclude(
|
||||
id__in=states
|
||||
@ -385,16 +391,19 @@ class AbstractCompensationAPISerializerV1Mixin:
|
||||
"""
|
||||
actions = []
|
||||
for entry in actions_data:
|
||||
action_types = [
|
||||
self._konova_code_from_json(e, CODELIST_COMPENSATION_ACTION_ID) for e in entry["action_types"]
|
||||
]
|
||||
action_details = [
|
||||
self._konova_code_from_json(e, CODELIST_COMPENSATION_ACTION_DETAIL_ID) for e in entry["action_details"]
|
||||
]
|
||||
amount = float(entry["amount"])
|
||||
# Mapping of old "qm" into "m²"
|
||||
unit = UnitChoices.m2.value if entry["unit"] == "qm" else entry["unit"]
|
||||
comment = entry["comment"]
|
||||
try:
|
||||
action_types = [
|
||||
self._konova_code_from_json(e, CODELIST_COMPENSATION_ACTION_ID) for e in entry["action_types"]
|
||||
]
|
||||
action_details = [
|
||||
self._konova_code_from_json(e, CODELIST_COMPENSATION_ACTION_DETAIL_ID) for e in entry["action_details"]
|
||||
]
|
||||
amount = float(entry["amount"])
|
||||
# Mapping of old "qm" into "m²"
|
||||
unit = UnitChoices.m2.value if entry["unit"] == "qm" else entry["unit"]
|
||||
comment = entry["comment"]
|
||||
except KeyError:
|
||||
raise ValueError(f"Invalid action content. Content was {entry} but should follow specification")
|
||||
|
||||
# Check on validity
|
||||
if amount <= 0:
|
||||
|
@ -55,10 +55,12 @@ class CheckboxCompensationTableFilter(CheckboxTableFilter):
|
||||
|
||||
"""
|
||||
if not value:
|
||||
return queryset.filter(
|
||||
user_teams = self.user.shared_teams
|
||||
result = queryset.filter(
|
||||
Q(intervention__users__in=[self.user]) | # requesting user has access
|
||||
Q(intervention__teams__in=self.user.shared_teams)
|
||||
Q(intervention__teams__in=user_teams)
|
||||
).distinct()
|
||||
return result
|
||||
else:
|
||||
return queryset
|
||||
|
||||
|
@ -8,6 +8,7 @@ Created on: 18.08.22
|
||||
from django.http import HttpRequest
|
||||
from django.template.loader import render_to_string
|
||||
from django.urls import reverse
|
||||
from django.utils.formats import number_format
|
||||
from django.utils.html import format_html
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
@ -111,6 +112,7 @@ class EcoAccountTable(BaseTable, TableRenderMixin, TableOrderMixin):
|
||||
except ZeroDivisionError:
|
||||
value_relative = 0
|
||||
html = render_to_string("konova/widgets/progressbar.html", {"value": value_relative})
|
||||
html += f"{number_format(record.deductable_rest, decimal_pos=2)} m²"
|
||||
return format_html(html)
|
||||
|
||||
def render_r(self, value, record: EcoAccount):
|
||||
|
@ -204,7 +204,11 @@ def detail_view(request: HttpRequest, id: str):
|
||||
"""
|
||||
template = "compensation/detail/compensation/view.html"
|
||||
comp = get_object_or_404(
|
||||
Compensation,
|
||||
Compensation.objects.select_related(
|
||||
"modified",
|
||||
"created",
|
||||
"geometry"
|
||||
),
|
||||
id=id,
|
||||
deleted=None,
|
||||
intervention__deleted=None,
|
||||
|
@ -142,6 +142,8 @@ def detail_view(request: HttpRequest, id: str):
|
||||
"geometry",
|
||||
"legal",
|
||||
"responsible",
|
||||
).prefetch_related(
|
||||
"legal__revocations",
|
||||
),
|
||||
id=id,
|
||||
deleted=None
|
||||
@ -158,7 +160,10 @@ def detail_view(request: HttpRequest, id: str):
|
||||
last_checked = intervention.get_last_checked_action()
|
||||
last_checked_tooltip = ""
|
||||
if last_checked:
|
||||
last_checked_tooltip = DATA_CHECKED_PREVIOUSLY_TEMPLATE.format(last_checked.get_timestamp_str_formatted(), last_checked.user)
|
||||
last_checked_tooltip = DATA_CHECKED_PREVIOUSLY_TEMPLATE.format(
|
||||
last_checked.get_timestamp_str_formatted(),
|
||||
last_checked.user
|
||||
)
|
||||
|
||||
has_payment_without_document = intervention.payments.exists() and not intervention.get_documents()[1].exists()
|
||||
|
||||
|
@ -50,9 +50,11 @@ class ShareableTableFilterMixin(django_filters.FilterSet):
|
||||
|
||||
"""
|
||||
if not value:
|
||||
return queryset.filter(
|
||||
user_teams = self.user.shared_teams
|
||||
result = queryset.filter(
|
||||
Q(users__in=[self.user]) | # requesting user has access
|
||||
Q(teams__in=self.user.shared_teams)
|
||||
Q(teams__in=user_teams)
|
||||
).distinct()
|
||||
return result
|
||||
else:
|
||||
return queryset
|
@ -276,6 +276,22 @@ class Geometry(BaseResource):
|
||||
|
||||
return parcels
|
||||
|
||||
def get_underlying_municipals(self, parcels=None):
|
||||
""" Getter for related municipals
|
||||
|
||||
If no QuerySet of parcels is provided, the parcels will be fetched
|
||||
|
||||
Returns:
|
||||
municipals (QuerySet): The related municipals as queryset
|
||||
"""
|
||||
from konova.models import Municipal
|
||||
|
||||
if parcels is None:
|
||||
parcels = self.get_underlying_parcels()
|
||||
municipals = parcels.order_by("municipal").distinct("municipal").values("municipal__id")
|
||||
municipals = Municipal.objects.filter(id__in=municipals).order_by("name")
|
||||
return municipals
|
||||
|
||||
def count_underlying_parcels(self):
|
||||
""" Getter for number of underlying parcels
|
||||
|
||||
|
@ -120,13 +120,14 @@ class DeletableObjectMixin(models.Model):
|
||||
if send_mail:
|
||||
# Send mail
|
||||
shared_users = self.shared_users.values_list("id", flat=True)
|
||||
municipals_names = list(self.geometry.get_underlying_municipals().values_list("name", flat=True))
|
||||
for user_id in shared_users:
|
||||
celery_send_mail_shared_data_deleted.delay(self.identifier, self.title, user_id)
|
||||
celery_send_mail_shared_data_deleted.delay(self.identifier, self.title, user_id, municipals_names)
|
||||
|
||||
# Send mail
|
||||
shared_teams = self.shared_teams.values_list("id", flat=True)
|
||||
for team_id in shared_teams:
|
||||
celery_send_mail_shared_data_deleted_team.delay(self.identifier, self.title, team_id)
|
||||
celery_send_mail_shared_data_deleted_team.delay(self.identifier, self.title, team_id, municipals_names)
|
||||
|
||||
self.save()
|
||||
|
||||
@ -277,12 +278,13 @@ class RecordableObjectMixin(models.Model):
|
||||
|
||||
shared_users = self.shared_users.values_list("id", flat=True)
|
||||
shared_teams = self.shared_teams.values_list("id", flat=True)
|
||||
municipals_names = list(self.geometry.get_underlying_municipals().values_list("name", flat=True))
|
||||
|
||||
for user_id in shared_users:
|
||||
celery_send_mail_shared_data_unrecorded.delay(self.identifier, self.title, user_id)
|
||||
celery_send_mail_shared_data_unrecorded.delay(self.identifier, self.title, user_id, municipals_names)
|
||||
|
||||
for team_id in shared_teams:
|
||||
celery_send_mail_shared_data_unrecorded_team.delay(self.identifier, self.title, team_id)
|
||||
celery_send_mail_shared_data_unrecorded_team.delay(self.identifier, self.title, team_id, municipals_names)
|
||||
|
||||
return action
|
||||
|
||||
@ -307,12 +309,13 @@ class RecordableObjectMixin(models.Model):
|
||||
|
||||
shared_users = self.shared_users.values_list("id", flat=True)
|
||||
shared_teams = self.shared_teams.values_list("id", flat=True)
|
||||
municipals_names = list(self.geometry.get_underlying_municipals().values_list("name", flat=True))
|
||||
|
||||
for user_id in shared_users:
|
||||
celery_send_mail_shared_data_recorded.delay(self.identifier, self.title, user_id)
|
||||
celery_send_mail_shared_data_recorded.delay(self.identifier, self.title, user_id, municipals_names)
|
||||
|
||||
for team_id in shared_teams:
|
||||
celery_send_mail_shared_data_recorded_team.delay(self.identifier, self.title, team_id)
|
||||
celery_send_mail_shared_data_recorded_team.delay(self.identifier, self.title, team_id, municipals_names)
|
||||
|
||||
return action
|
||||
|
||||
@ -404,15 +407,17 @@ class CheckableObjectMixin(models.Model):
|
||||
self.checked = action
|
||||
self.save()
|
||||
|
||||
municipals_names = list(self.geometry.get_underlying_municipals().values_list("name", flat=True))
|
||||
|
||||
# Send mail
|
||||
shared_users = self.shared_users.values_list("id", flat=True)
|
||||
for user_id in shared_users:
|
||||
celery_send_mail_shared_data_checked.delay(self.identifier, self.title, user_id)
|
||||
celery_send_mail_shared_data_checked.delay(self.identifier, self.title, user_id, municipals_names)
|
||||
|
||||
# Send mail
|
||||
shared_teams = self.shared_teams.values_list("id", flat=True)
|
||||
for team_id in shared_teams:
|
||||
celery_send_mail_shared_data_checked_team.delay(self.identifier, self.title, team_id)
|
||||
celery_send_mail_shared_data_checked_team.delay(self.identifier, self.title, team_id, municipals_names)
|
||||
|
||||
self.log.add(action)
|
||||
return action
|
||||
@ -501,10 +506,13 @@ class ShareableObjectMixin(models.Model):
|
||||
Returns:
|
||||
|
||||
"""
|
||||
directly_shared = self.shared_users.filter(id=user.id).exists()
|
||||
team_shared = self.shared_teams.filter(
|
||||
users__in=[user]
|
||||
).exists()
|
||||
obj_shared_teams = self.shared_teams
|
||||
obj_shared_users = self.shared_users
|
||||
user_shared_teams = user.shared_teams
|
||||
|
||||
directly_shared = obj_shared_users.filter(id=user.id).exists()
|
||||
team_shared = (obj_shared_teams & user_shared_teams).exists()
|
||||
|
||||
is_shared = directly_shared or team_shared
|
||||
return is_shared
|
||||
|
||||
@ -574,10 +582,11 @@ class ShareableObjectMixin(models.Model):
|
||||
id__in=shared_teams
|
||||
).values_list("id", flat=True)
|
||||
|
||||
municipals_names = list(self.geometry.get_underlying_municipals().values_list("name", flat=True))
|
||||
for team_id in new_teams:
|
||||
celery_send_mail_shared_access_given_team.delay(self.identifier, self.title, team_id)
|
||||
celery_send_mail_shared_access_given_team.delay(self.identifier, self.title, team_id, municipals_names)
|
||||
for team_id in removed_teams:
|
||||
celery_send_mail_shared_access_removed_team.delay(self.identifier, self.title, team_id)
|
||||
celery_send_mail_shared_access_removed_team.delay(self.identifier, self.title, team_id, municipals_names)
|
||||
|
||||
self.share_with_team_list(accessing_teams)
|
||||
|
||||
@ -602,11 +611,12 @@ class ShareableObjectMixin(models.Model):
|
||||
id__in=shared_users
|
||||
).values_list("id", flat=True)
|
||||
|
||||
municipals_names = list(self.geometry.get_underlying_municipals().values_list("name", flat=True))
|
||||
# Send mails
|
||||
for user_id in removed_users:
|
||||
celery_send_mail_shared_access_removed.delay(self.identifier, self.title, user_id)
|
||||
celery_send_mail_shared_access_removed.delay(self.identifier, self.title, user_id, municipals_names)
|
||||
for user_id in new_users:
|
||||
celery_send_mail_shared_access_given.delay(self.identifier, self.title, user_id)
|
||||
celery_send_mail_shared_access_given.delay(self.identifier, self.title, user_id, municipals_names)
|
||||
|
||||
# Set new shared users
|
||||
self.share_with_user_list(accessing_users)
|
||||
@ -669,8 +679,9 @@ class ShareableObjectMixin(models.Model):
|
||||
default_users.append(user)
|
||||
self.share_with_user_list(cleaned_users)
|
||||
|
||||
municipals_names = list(self.geometry.get_underlying_municipals().values_list("name", flat=True))
|
||||
for user in default_users:
|
||||
celery_send_mail_shared_access_removed.delay(self.identifier, self.title, user.id)
|
||||
celery_send_mail_shared_access_removed.delay(self.identifier, self.title, user.id, municipals_names)
|
||||
|
||||
|
||||
class GeoReferencedMixin(models.Model):
|
||||
@ -767,5 +778,6 @@ class ResubmitableObjectMixin(models.Model):
|
||||
|
||||
"""
|
||||
resubmissions = self.resubmissions.all()
|
||||
municipal_names = list(self.geometry.get_underlying_municipals().values_list("name", flat=True))
|
||||
for resubmission in resubmissions:
|
||||
resubmission.send_resubmission_mail(self.identifier)
|
||||
resubmission.send_resubmission_mail(self.identifier, municipal_names)
|
||||
|
@ -31,7 +31,7 @@ class Resubmission(BaseResource):
|
||||
help_text="Optional comment for the user itself"
|
||||
)
|
||||
|
||||
def send_resubmission_mail(self, obj_identifier):
|
||||
def send_resubmission_mail(self, obj_identifier, municipal_names):
|
||||
""" Sends a resubmission mail
|
||||
|
||||
"""
|
||||
@ -41,6 +41,6 @@ class Resubmission(BaseResource):
|
||||
return
|
||||
|
||||
mailer = Mailer()
|
||||
mailer.send_mail_resubmission(obj_identifier, self)
|
||||
mailer.send_mail_resubmission(obj_identifier, self, municipal_names)
|
||||
self.resubmission_sent = True
|
||||
self.save()
|
||||
|
@ -25,87 +25,87 @@ def celery_update_parcels(geometry_id: str, recheck: bool = True):
|
||||
|
||||
|
||||
@shared_task
|
||||
def celery_send_mail_shared_access_removed(obj_identifier, obj_title=None, user_id=None):
|
||||
def celery_send_mail_shared_access_removed(obj_identifier, obj_title=None, user_id=None, municipals_names=[]):
|
||||
from user.models import User
|
||||
user = User.objects.get(id=user_id)
|
||||
user.send_mail_shared_access_removed(obj_identifier, obj_title)
|
||||
user.send_mail_shared_access_removed(obj_identifier, obj_title, municipals_names)
|
||||
|
||||
|
||||
@shared_task
|
||||
def celery_send_mail_shared_access_given(obj_identifier, obj_title=None, user_id=None):
|
||||
def celery_send_mail_shared_access_given(obj_identifier, obj_title=None, user_id=None, municipals_names=[]):
|
||||
from user.models import User
|
||||
user = User.objects.get(id=user_id)
|
||||
user.send_mail_shared_access_given(obj_identifier, obj_title)
|
||||
user.send_mail_shared_access_given(obj_identifier, obj_title, municipals_names)
|
||||
|
||||
|
||||
@shared_task
|
||||
def celery_send_mail_shared_access_removed_team(obj_identifier, obj_title=None, team_id=None):
|
||||
def celery_send_mail_shared_access_removed_team(obj_identifier, obj_title=None, team_id=None, municipals_names=[]):
|
||||
from user.models import Team
|
||||
team = Team.objects.get(id=team_id)
|
||||
team.send_mail_shared_access_removed(obj_identifier, obj_title)
|
||||
team.send_mail_shared_access_removed(obj_identifier, obj_title, municipals_names)
|
||||
|
||||
|
||||
@shared_task
|
||||
def celery_send_mail_shared_access_given_team(obj_identifier, obj_title=None, team_id=None):
|
||||
def celery_send_mail_shared_access_given_team(obj_identifier, obj_title=None, team_id=None, municipals_names=[]):
|
||||
from user.models import Team
|
||||
team = Team.objects.get(id=team_id)
|
||||
team.send_mail_shared_access_given_team(obj_identifier, obj_title)
|
||||
team.send_mail_shared_access_given_team(obj_identifier, obj_title, municipals_names)
|
||||
|
||||
|
||||
@shared_task
|
||||
def celery_send_mail_shared_data_recorded(obj_identifier, obj_title=None, user_id=None):
|
||||
def celery_send_mail_shared_data_recorded(obj_identifier, obj_title=None, user_id=None, municipals_names=[]):
|
||||
from user.models import User
|
||||
user = User.objects.get(id=user_id)
|
||||
user.send_mail_shared_data_recorded(obj_identifier, obj_title)
|
||||
user.send_mail_shared_data_recorded(obj_identifier, obj_title, municipals_names)
|
||||
|
||||
|
||||
@shared_task
|
||||
def celery_send_mail_shared_data_unrecorded(obj_identifier, obj_title=None, user_id=None):
|
||||
def celery_send_mail_shared_data_unrecorded(obj_identifier, obj_title=None, user_id=None, municipals_names=[]):
|
||||
from user.models import User
|
||||
user = User.objects.get(id=user_id)
|
||||
user.send_mail_shared_data_unrecorded(obj_identifier, obj_title)
|
||||
user.send_mail_shared_data_unrecorded(obj_identifier, obj_title, municipals_names)
|
||||
|
||||
|
||||
@shared_task
|
||||
def celery_send_mail_shared_data_recorded_team(obj_identifier, obj_title=None, team_id=None):
|
||||
def celery_send_mail_shared_data_recorded_team(obj_identifier, obj_title=None, team_id=None, municipals_names=[]):
|
||||
from user.models import Team
|
||||
team = Team.objects.get(id=team_id)
|
||||
team.send_mail_shared_data_recorded(obj_identifier, obj_title)
|
||||
team.send_mail_shared_data_recorded(obj_identifier, obj_title, municipals_names)
|
||||
|
||||
|
||||
@shared_task
|
||||
def celery_send_mail_shared_data_unrecorded_team(obj_identifier, obj_title=None, team_id=None):
|
||||
def celery_send_mail_shared_data_unrecorded_team(obj_identifier, obj_title=None, team_id=None, municipals_names=[]):
|
||||
from user.models import Team
|
||||
team = Team.objects.get(id=team_id)
|
||||
team.send_mail_shared_data_unrecorded(obj_identifier, obj_title)
|
||||
team.send_mail_shared_data_unrecorded(obj_identifier, obj_title, municipals_names)
|
||||
|
||||
|
||||
@shared_task
|
||||
def celery_send_mail_shared_data_deleted(obj_identifier, obj_title=None, user_id=None):
|
||||
def celery_send_mail_shared_data_deleted(obj_identifier, obj_title=None, user_id=None, municipals_names=[]):
|
||||
from user.models import User
|
||||
user = User.objects.get(id=user_id)
|
||||
user.send_mail_shared_data_deleted(obj_identifier, obj_title)
|
||||
user.send_mail_shared_data_deleted(obj_identifier, obj_title, municipals_names)
|
||||
|
||||
|
||||
@shared_task
|
||||
def celery_send_mail_shared_data_checked(obj_identifier, obj_title=None, user_id=None):
|
||||
def celery_send_mail_shared_data_checked(obj_identifier, obj_title=None, user_id=None, municipals_names=[]):
|
||||
from user.models import User
|
||||
user = User.objects.get(id=user_id)
|
||||
user.send_mail_shared_data_checked(obj_identifier, obj_title)
|
||||
user.send_mail_shared_data_checked(obj_identifier, obj_title, municipals_names)
|
||||
|
||||
|
||||
@shared_task
|
||||
def celery_send_mail_shared_data_deleted_team(obj_identifier, obj_title=None, team_id=None):
|
||||
def celery_send_mail_shared_data_deleted_team(obj_identifier, obj_title=None, team_id=None, municipals_names=[]):
|
||||
from user.models import Team
|
||||
team = Team.objects.get(id=team_id)
|
||||
team.send_mail_shared_data_deleted(obj_identifier, obj_title)
|
||||
team.send_mail_shared_data_deleted(obj_identifier, obj_title, municipals_names)
|
||||
|
||||
|
||||
@shared_task
|
||||
def celery_send_mail_shared_data_checked_team(obj_identifier, obj_title=None, team_id=None):
|
||||
def celery_send_mail_shared_data_checked_team(obj_identifier, obj_title=None, team_id=None, municipals_names=[]):
|
||||
from user.models import Team
|
||||
team = Team.objects.get(id=team_id)
|
||||
team.send_mail_shared_data_checked(obj_identifier, obj_title)
|
||||
team.send_mail_shared_data_checked(obj_identifier, obj_title, municipals_names)
|
||||
|
||||
|
||||
@shared_task
|
||||
|
@ -9,7 +9,7 @@ from django.contrib.gis.db.models.functions import Translate
|
||||
|
||||
from konova.models import Geometry, GeometryConflict
|
||||
from konova.tests.test_views import BaseTestCase
|
||||
from konova.utils.wfs.spatial import ParcelWFSFetcher
|
||||
from konova.utils.schneider.fetcher import ParcelFetcher
|
||||
|
||||
|
||||
class GeometryTestCase(BaseTestCase):
|
||||
@ -63,18 +63,14 @@ class GeometryTestCase(BaseTestCase):
|
||||
num_conflict = GeometryConflict.objects.all().count()
|
||||
self.assertEqual(0, num_conflict)
|
||||
|
||||
def test_wfs_fetch(self):
|
||||
""" Tests the fetching functionality of ParcelWFSFetcher
|
||||
def test_fetch(self):
|
||||
""" Tests the fetching functionality of ParcelFetcher
|
||||
|
||||
+++ Test relies on the availability of the RLP Flurstück WFS +++
|
||||
+++ Test relies on the availability of the spatial computation component 'Schneider' +++
|
||||
|
||||
Returns:
|
||||
|
||||
"""
|
||||
fetcher = ParcelWFSFetcher(
|
||||
geometry_id=self.geom_1.id,
|
||||
)
|
||||
features = fetcher.get_features(
|
||||
"ave:Flurstueck",
|
||||
)
|
||||
self.assertNotEqual(0, len(features), msg="Spatial wfs get feature did not work!")
|
||||
fetcher = ParcelFetcher(geometry=self.geom_1)
|
||||
features = fetcher.get_parcels()
|
||||
self.assertNotEqual(0, len(features), msg="Spatial fetcher get feature did not work!")
|
||||
|
@ -45,12 +45,14 @@ class Mailer:
|
||||
auth_password=self.auth_password
|
||||
)
|
||||
|
||||
def send_mail_shared_access_removed(self, obj_identifier, obj_title, user):
|
||||
def send_mail_shared_access_removed(self, obj_identifier, obj_title, user, municipals_names):
|
||||
""" Send a mail if user has no access to the object anymore
|
||||
|
||||
Args:
|
||||
obj_identifier (str): The object identifier
|
||||
obj_title (str): The object title
|
||||
user (User): Related user
|
||||
municipals_names (iterable): List of municipals of the entry
|
||||
|
||||
Returns:
|
||||
|
||||
@ -59,6 +61,7 @@ class Mailer:
|
||||
"user": user,
|
||||
"obj_identifier": obj_identifier,
|
||||
"obj_title": obj_title,
|
||||
"municipals_names": municipals_names,
|
||||
"EMAIL_REPLY_TO": EMAIL_REPLY_TO,
|
||||
}
|
||||
msg = render_to_string("email/sharing/shared_access_removed.html", context)
|
||||
@ -69,11 +72,14 @@ class Mailer:
|
||||
msg
|
||||
)
|
||||
|
||||
def send_mail_shared_access_given(self, obj_identifier, obj_title, user):
|
||||
def send_mail_shared_access_given(self, obj_identifier, obj_title, user, municipals_names):
|
||||
""" Send a mail if user just got access to the object
|
||||
|
||||
Args:
|
||||
obj_identifier (str): The object identifier
|
||||
obj_title (str): The object title
|
||||
user (User): The related user
|
||||
municipals_names (iterable): List of municipals for this entry
|
||||
|
||||
Returns:
|
||||
|
||||
@ -82,6 +88,7 @@ class Mailer:
|
||||
"user": user,
|
||||
"obj_identifier": obj_identifier,
|
||||
"obj_title": obj_title,
|
||||
"municipals_names": municipals_names,
|
||||
"EMAIL_REPLY_TO": EMAIL_REPLY_TO,
|
||||
}
|
||||
msg = render_to_string("email/sharing/shared_access_given.html", context)
|
||||
@ -92,7 +99,7 @@ class Mailer:
|
||||
msg
|
||||
)
|
||||
|
||||
def send_mail_shared_access_given_team(self, obj_identifier, obj_title, team, users_to_notify):
|
||||
def send_mail_shared_access_given_team(self, obj_identifier, obj_title, team, users_to_notify, municipals_names):
|
||||
""" Send a mail if a team just got access to the object
|
||||
|
||||
Args:
|
||||
@ -100,6 +107,7 @@ class Mailer:
|
||||
obj_title (str): Title of the main object
|
||||
team (Team): Team to be notified
|
||||
users_to_notify (QueryDict): Contains the team users which should be notified
|
||||
municipals_names (iterable): List of municipals for this entry
|
||||
|
||||
Returns:
|
||||
|
||||
@ -108,6 +116,7 @@ class Mailer:
|
||||
"team": team,
|
||||
"obj_identifier": obj_identifier,
|
||||
"obj_title": obj_title,
|
||||
"municipals_names": municipals_names,
|
||||
"EMAIL_REPLY_TO": EMAIL_REPLY_TO,
|
||||
}
|
||||
msg = render_to_string("email/sharing/shared_access_given_team.html", context)
|
||||
@ -118,7 +127,7 @@ class Mailer:
|
||||
msg
|
||||
)
|
||||
|
||||
def send_mail_shared_access_removed_team(self, obj_identifier, obj_title, team, users_to_notify):
|
||||
def send_mail_shared_access_removed_team(self, obj_identifier, obj_title, team, users_to_notify, municipals_names):
|
||||
""" Send a mail if a team just lost access to the object
|
||||
|
||||
Args:
|
||||
@ -126,6 +135,7 @@ class Mailer:
|
||||
obj_title (str): Title of the main object
|
||||
team (Team): Team to be notified
|
||||
users_to_notify (QueryDict): Contains the team users which should be notified
|
||||
municipals_names (iterable): List of municipals for this entry
|
||||
|
||||
Returns:
|
||||
|
||||
@ -134,6 +144,7 @@ class Mailer:
|
||||
"team": team,
|
||||
"obj_identifier": obj_identifier,
|
||||
"obj_title": obj_title,
|
||||
"municipals_names": municipals_names,
|
||||
"EMAIL_REPLY_TO": EMAIL_REPLY_TO,
|
||||
}
|
||||
msg = render_to_string("email/sharing/shared_access_removed_team.html", context)
|
||||
@ -144,7 +155,7 @@ class Mailer:
|
||||
msg
|
||||
)
|
||||
|
||||
def send_mail_shared_data_unrecorded_team(self, obj_identifier, obj_title, team, users_to_notify):
|
||||
def send_mail_shared_data_unrecorded_team(self, obj_identifier, obj_title, team, users_to_notify, municipals_names):
|
||||
""" Send a mail if data has just been unrecorded
|
||||
|
||||
Args:
|
||||
@ -152,6 +163,7 @@ class Mailer:
|
||||
obj_title (str): Title of the main object
|
||||
team (Team): Team to be notified
|
||||
users_to_notify (QueryDict): Contains the team users which should be notified
|
||||
municipals_names (iterable): List of municipals for this entry
|
||||
|
||||
Returns:
|
||||
|
||||
@ -160,6 +172,7 @@ class Mailer:
|
||||
"team": team,
|
||||
"obj_identifier": obj_identifier,
|
||||
"obj_title": obj_title,
|
||||
"municipals_names": municipals_names,
|
||||
"EMAIL_REPLY_TO": EMAIL_REPLY_TO,
|
||||
}
|
||||
msg = render_to_string("email/recording/shared_data_unrecorded_team.html", context)
|
||||
@ -170,7 +183,7 @@ class Mailer:
|
||||
msg
|
||||
)
|
||||
|
||||
def send_mail_shared_data_recorded_team(self, obj_identifier, obj_title, team, users_to_notify):
|
||||
def send_mail_shared_data_recorded_team(self, obj_identifier, obj_title, team, users_to_notify, municipals_names):
|
||||
""" Send a mail if data has just been recorded
|
||||
|
||||
Args:
|
||||
@ -178,6 +191,7 @@ class Mailer:
|
||||
obj_title (str): Title of the main object
|
||||
team (Team): Team to be notified
|
||||
users_to_notify (QueryDict): Contains the team users which should be notified
|
||||
municipals_names (iterable): List of municipals for this entry
|
||||
|
||||
Returns:
|
||||
|
||||
@ -186,6 +200,7 @@ class Mailer:
|
||||
"team": team,
|
||||
"obj_identifier": obj_identifier,
|
||||
"obj_title": obj_title,
|
||||
"municipals_names": municipals_names,
|
||||
"EMAIL_REPLY_TO": EMAIL_REPLY_TO,
|
||||
}
|
||||
msg = render_to_string("email/recording/shared_data_recorded_team.html", context)
|
||||
@ -196,7 +211,7 @@ class Mailer:
|
||||
msg
|
||||
)
|
||||
|
||||
def send_mail_shared_data_checked_team(self, obj_identifier, obj_title, team, users_to_notify):
|
||||
def send_mail_shared_data_checked_team(self, obj_identifier, obj_title, team, users_to_notify, municipals_names):
|
||||
""" Send a mail if data has just been checked
|
||||
|
||||
Args:
|
||||
@ -204,6 +219,7 @@ class Mailer:
|
||||
obj_title (str): Title of the main object
|
||||
team (Team): Team to be notified
|
||||
users_to_notify (QueryDict): Contains the team users which should be notified
|
||||
municipals_names (iterable): List of municipals for this entry
|
||||
|
||||
Returns:
|
||||
|
||||
@ -212,6 +228,7 @@ class Mailer:
|
||||
"team": team,
|
||||
"obj_identifier": obj_identifier,
|
||||
"obj_title": obj_title,
|
||||
"municipals_names": municipals_names,
|
||||
"EMAIL_REPLY_TO": EMAIL_REPLY_TO,
|
||||
}
|
||||
msg = render_to_string("email/checking/shared_data_checked_team.html", context)
|
||||
@ -249,11 +266,15 @@ class Mailer:
|
||||
msg
|
||||
)
|
||||
|
||||
def send_mail_shared_data_deleted_team(self, obj_identifier, obj_title, team, users_to_notify):
|
||||
def send_mail_shared_data_deleted_team(self, obj_identifier, obj_title, team, users_to_notify, municipals_names):
|
||||
""" Send a mail if data has just been deleted
|
||||
|
||||
Args:
|
||||
obj_identifier (str): The object identifier
|
||||
obj_title (str): The object title
|
||||
team (Team): The related team
|
||||
users_to_notify (QuerySet): Contains team users who want to be notified
|
||||
municipals_names (iterable): List of municipals for the entry
|
||||
|
||||
Returns:
|
||||
|
||||
@ -262,6 +283,7 @@ class Mailer:
|
||||
"team": team,
|
||||
"obj_identifier": obj_identifier,
|
||||
"obj_title": obj_title,
|
||||
"municipals_names": municipals_names,
|
||||
"EMAIL_REPLY_TO": EMAIL_REPLY_TO,
|
||||
}
|
||||
msg = render_to_string("email/deleting/shared_data_deleted_team.html", context)
|
||||
@ -272,11 +294,14 @@ class Mailer:
|
||||
msg
|
||||
)
|
||||
|
||||
def send_mail_shared_data_recorded(self, obj_identifier, obj_title, user):
|
||||
def send_mail_shared_data_recorded(self, obj_identifier, obj_title, user, municipals_names):
|
||||
""" Send a mail if the user's shared data has just been unrecorded
|
||||
|
||||
Args:
|
||||
obj_identifier (str): The object identifier
|
||||
obj_title (str): The object title
|
||||
user (User): The related user
|
||||
municipals_names (iterable): List of municipals for this entry
|
||||
|
||||
Returns:
|
||||
|
||||
@ -285,6 +310,7 @@ class Mailer:
|
||||
"user": user,
|
||||
"obj_identifier": obj_identifier,
|
||||
"obj_title": obj_title,
|
||||
"municipals_names": municipals_names,
|
||||
"EMAIL_REPLY_TO": EMAIL_REPLY_TO,
|
||||
}
|
||||
msg = render_to_string("email/recording/shared_data_recorded.html", context)
|
||||
@ -295,11 +321,14 @@ class Mailer:
|
||||
msg
|
||||
)
|
||||
|
||||
def send_mail_shared_data_unrecorded(self, obj_identifier, obj_title, user):
|
||||
def send_mail_shared_data_unrecorded(self, obj_identifier, obj_title, user, municipals_names):
|
||||
""" Send a mail if the user's shared data has just been unrecorded
|
||||
|
||||
Args:
|
||||
obj_identifier (str): The object identifier
|
||||
obj_title (str): The object title
|
||||
user (User): The related user
|
||||
municipals_names (iterable): List of municipals for this entry
|
||||
|
||||
Returns:
|
||||
|
||||
@ -308,6 +337,7 @@ class Mailer:
|
||||
"user": user,
|
||||
"obj_identifier": obj_identifier,
|
||||
"obj_title": obj_title,
|
||||
"municipals_names": municipals_names,
|
||||
"EMAIL_REPLY_TO": EMAIL_REPLY_TO,
|
||||
}
|
||||
msg = render_to_string("email/recording/shared_data_unrecorded.html", context)
|
||||
@ -318,11 +348,14 @@ class Mailer:
|
||||
msg
|
||||
)
|
||||
|
||||
def send_mail_shared_data_deleted(self, obj_identifier, obj_title, user):
|
||||
def send_mail_shared_data_deleted(self, obj_identifier, obj_title, user, municipals_names):
|
||||
""" Send a mail if shared data has just been deleted
|
||||
|
||||
Args:
|
||||
obj_identifier (str): The object identifier
|
||||
obj_title (str): The object title
|
||||
user (User): The related user
|
||||
municipals_names (iterable): List of municipals for this entry
|
||||
|
||||
Returns:
|
||||
|
||||
@ -331,6 +364,7 @@ class Mailer:
|
||||
"user": user,
|
||||
"obj_identifier": obj_identifier,
|
||||
"obj_title": obj_title,
|
||||
"municipals_names": municipals_names,
|
||||
"EMAIL_REPLY_TO": EMAIL_REPLY_TO,
|
||||
}
|
||||
msg = render_to_string("email/deleting/shared_data_deleted.html", context)
|
||||
@ -341,11 +375,14 @@ class Mailer:
|
||||
msg
|
||||
)
|
||||
|
||||
def send_mail_shared_data_checked(self, obj_identifier, obj_title, user):
|
||||
def send_mail_shared_data_checked(self, obj_identifier, obj_title, user, municipals_names):
|
||||
""" Send a mail if shared data just has been checked
|
||||
|
||||
Args:
|
||||
obj_identifier (str): The object identifier
|
||||
obj_title (str): The object title
|
||||
user (User): The related user
|
||||
municipals_names (iterable): List of municipals for this entry
|
||||
|
||||
Returns:
|
||||
|
||||
@ -354,6 +391,7 @@ class Mailer:
|
||||
"user": user,
|
||||
"obj_identifier": obj_identifier,
|
||||
"obj_title": obj_title,
|
||||
"municipals_names": municipals_names,
|
||||
"EMAIL_REPLY_TO": EMAIL_REPLY_TO,
|
||||
}
|
||||
msg = render_to_string("email/checking/shared_data_checked.html", context)
|
||||
@ -413,12 +451,13 @@ class Mailer:
|
||||
msg
|
||||
)
|
||||
|
||||
def send_mail_resubmission(self, obj_identifier, resubmission):
|
||||
def send_mail_resubmission(self, obj_identifier, resubmission, municipals_names):
|
||||
""" Send a resubmission mail for a user
|
||||
|
||||
Args:
|
||||
obj_identifier (str): The (resubmitted) object's identifier
|
||||
resubmission (Resubmission): The resubmission
|
||||
municipals_names (iterable): List of municipals for this entry
|
||||
|
||||
Returns:
|
||||
|
||||
@ -426,6 +465,7 @@ class Mailer:
|
||||
context = {
|
||||
"obj_identifier": obj_identifier,
|
||||
"resubmission": resubmission,
|
||||
"municipals_names": municipals_names,
|
||||
"EMAIL_REPLY_TO": EMAIL_REPLY_TO,
|
||||
}
|
||||
msg = render_to_string("email/resubmission/resubmission.html", context)
|
||||
|
@ -44,9 +44,7 @@ def get_geom_parcels(request: HttpRequest, id: str):
|
||||
status_code = 200
|
||||
|
||||
if parcels_available or not geometry_exists:
|
||||
parcels = parcels.order_by("-municipal", "flr", "flrstck_zhlr", "flrstck_nnr")
|
||||
municipals = parcels.order_by("municipal").distinct("municipal").values("municipal__id")
|
||||
municipals = Municipal.objects.filter(id__in=municipals)
|
||||
municipals = geom.get_underlying_municipals(parcels)
|
||||
|
||||
rpp = 100
|
||||
num_all_parcels = parcels.count()
|
||||
|
@ -35,6 +35,7 @@ def home_view(request: HttpRequest):
|
||||
template = "konova/home.html"
|
||||
now = timezone.now()
|
||||
user = request.user
|
||||
user_teams = user.shared_teams
|
||||
|
||||
# Fetch the four newest active and published ServerMessages
|
||||
msgs = ServerMessage.objects.filter(
|
||||
@ -51,7 +52,7 @@ def home_view(request: HttpRequest):
|
||||
)
|
||||
# Then fetch only user related ones
|
||||
user_interventions = interventions.filter(
|
||||
Q(users__in=[user]) | Q(teams__in=user.shared_teams)
|
||||
Q(users__in=[user]) | Q(teams__in=user_teams)
|
||||
).distinct()
|
||||
|
||||
# Repeat for other objects
|
||||
@ -59,13 +60,13 @@ def home_view(request: HttpRequest):
|
||||
deleted=None,
|
||||
)
|
||||
user_comps = comps.filter(
|
||||
Q(intervention__users__in=[user]) | Q(intervention__teams__in=user.shared_teams)
|
||||
Q(intervention__users__in=[user]) | Q(intervention__teams__in=user_teams)
|
||||
).distinct()
|
||||
eco_accs = EcoAccount.objects.filter(
|
||||
deleted=None,
|
||||
)
|
||||
user_ecco_accs = eco_accs.filter(
|
||||
Q(users__in=[user]) | Q(teams__in=user.shared_teams)
|
||||
Q(users__in=[user]) | Q(teams__in=user_teams)
|
||||
).distinct()
|
||||
|
||||
additional_context = {
|
||||
|
Binary file not shown.
@ -9,8 +9,8 @@
|
||||
#: compensation/forms/modals/payment.py:23
|
||||
#: compensation/forms/modals/payment.py:34
|
||||
#: compensation/forms/modals/payment.py:50
|
||||
#: intervention/forms/intervention.py:55 intervention/forms/intervention.py:175
|
||||
#: intervention/forms/intervention.py:187
|
||||
#: intervention/forms/intervention.py:56 intervention/forms/intervention.py:176
|
||||
#: intervention/forms/intervention.py:188
|
||||
#: intervention/forms/modals/revocation.py:20
|
||||
#: intervention/forms/modals/revocation.py:33
|
||||
#: intervention/forms/modals/revocation.py:46
|
||||
@ -43,7 +43,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-12-06 08:23+0100\n"
|
||||
"POT-Creation-Date: 2023-02-23 08:48+0100\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"
|
||||
@ -74,7 +74,7 @@ msgstr "Einträge erstellt bis..."
|
||||
#: compensation/templates/compensation/report/eco_account/report.html:16
|
||||
#: compensation/utils/quality.py:111 ema/templates/ema/detail/view.html:49
|
||||
#: ema/templates/ema/report/report.html:16 ema/utils/quality.py:26
|
||||
#: intervention/forms/intervention.py:103
|
||||
#: intervention/forms/intervention.py:104
|
||||
#: intervention/templates/intervention/detail/view.html:56
|
||||
#: intervention/templates/intervention/report/report.html:37
|
||||
#: intervention/utils/quality.py:62 konova/filters/mixins/office.py:34
|
||||
@ -85,11 +85,11 @@ msgstr "Eintragungsstelle"
|
||||
msgid "Select the responsible office"
|
||||
msgstr "Verantwortliche Stelle"
|
||||
|
||||
#: analysis/forms.py:60 compensation/forms/compensation.py:93
|
||||
#: analysis/forms.py:60 compensation/forms/compensation.py:94
|
||||
#: compensation/forms/mixins.py:32 compensation/forms/mixins.py:62
|
||||
#: intervention/forms/intervention.py:65 intervention/forms/intervention.py:82
|
||||
#: intervention/forms/intervention.py:98 intervention/forms/intervention.py:114
|
||||
#: intervention/forms/intervention.py:155 intervention/forms/modals/share.py:41
|
||||
#: intervention/forms/intervention.py:66 intervention/forms/intervention.py:83
|
||||
#: intervention/forms/intervention.py:99 intervention/forms/intervention.py:115
|
||||
#: intervention/forms/intervention.py:156 intervention/forms/modals/share.py:41
|
||||
#: intervention/forms/modals/share.py:55 user/forms/modals/team.py:48
|
||||
#: user/forms/modals/team.py:112
|
||||
msgid "Click for selection"
|
||||
@ -309,7 +309,7 @@ msgstr ""
|
||||
" "
|
||||
|
||||
#: analysis/templates/analysis/reports/includes/intervention/laws.html:14
|
||||
#: intervention/forms/intervention.py:70
|
||||
#: intervention/forms/intervention.py:71
|
||||
#: intervention/templates/intervention/detail/view.html:39
|
||||
#: intervention/templates/intervention/report/report.html:20
|
||||
msgid "Law"
|
||||
@ -368,7 +368,7 @@ msgstr "Kennung"
|
||||
msgid "Generated automatically - not editable"
|
||||
msgstr "Automatisch generiert - nicht bearbeitbar"
|
||||
|
||||
#: compensation/forms/compensation.py:42 compensation/tables/compensation.py:28
|
||||
#: compensation/forms/compensation.py:43 compensation/tables/compensation.py:28
|
||||
#: compensation/tables/eco_account.py:28
|
||||
#: compensation/templates/compensation/detail/compensation/includes/documents.html:28
|
||||
#: compensation/templates/compensation/detail/compensation/view.html:32
|
||||
@ -379,7 +379,7 @@ msgstr "Automatisch generiert - nicht bearbeitbar"
|
||||
#: ema/tables.py:31 ema/templates/ema/detail/includes/documents.html:28
|
||||
#: ema/templates/ema/detail/view.html:31
|
||||
#: ema/templates/ema/report/report.html:12
|
||||
#: intervention/forms/intervention.py:41 intervention/tables.py:28
|
||||
#: intervention/forms/intervention.py:42 intervention/tables.py:28
|
||||
#: intervention/templates/intervention/detail/includes/compensations.html:33
|
||||
#: intervention/templates/intervention/detail/includes/documents.html:33
|
||||
#: intervention/templates/intervention/detail/view.html:31
|
||||
@ -388,15 +388,15 @@ msgstr "Automatisch generiert - nicht bearbeitbar"
|
||||
msgid "Title"
|
||||
msgstr "Bezeichnung"
|
||||
|
||||
#: compensation/forms/compensation.py:44 intervention/forms/intervention.py:43
|
||||
#: compensation/forms/compensation.py:45 intervention/forms/intervention.py:44
|
||||
msgid "An explanatory name"
|
||||
msgstr "Aussagekräftiger Titel"
|
||||
|
||||
#: compensation/forms/compensation.py:48 ema/forms.py:51 ema/forms.py:114
|
||||
#: compensation/forms/compensation.py:49 ema/forms.py:51 ema/forms.py:114
|
||||
msgid "Compensation XY; Location ABC"
|
||||
msgstr "Kompensation XY; Flur ABC"
|
||||
|
||||
#: compensation/forms/compensation.py:55
|
||||
#: compensation/forms/compensation.py:56
|
||||
#: compensation/forms/modals/compensation_action.py:81
|
||||
#: compensation/forms/modals/deadline.py:49
|
||||
#: compensation/forms/modals/payment.py:49
|
||||
@ -409,7 +409,7 @@ msgstr "Kompensation XY; Flur ABC"
|
||||
#: ema/templates/ema/detail/includes/actions.html:34
|
||||
#: ema/templates/ema/detail/includes/deadlines.html:39
|
||||
#: ema/templates/ema/detail/includes/documents.html:34
|
||||
#: intervention/forms/intervention.py:199
|
||||
#: intervention/forms/intervention.py:200
|
||||
#: intervention/forms/modals/revocation.py:45
|
||||
#: intervention/templates/intervention/detail/includes/documents.html:39
|
||||
#: intervention/templates/intervention/detail/includes/payments.html:34
|
||||
@ -420,29 +420,29 @@ msgstr "Kompensation XY; Flur ABC"
|
||||
msgid "Comment"
|
||||
msgstr "Kommentar"
|
||||
|
||||
#: compensation/forms/compensation.py:57
|
||||
#: compensation/forms/compensation.py:58
|
||||
#: compensation/forms/modals/compensation_action.py:83
|
||||
#: intervention/forms/intervention.py:201
|
||||
#: intervention/forms/intervention.py:202
|
||||
#: konova/forms/modals/resubmission_form.py:37
|
||||
msgid "Additional comment"
|
||||
msgstr "Zusätzlicher Kommentar"
|
||||
|
||||
#: compensation/forms/compensation.py:84
|
||||
#: compensation/forms/compensation.py:85
|
||||
#: compensation/templates/compensation/detail/compensation/view.html:36
|
||||
#: compensation/templates/compensation/report/compensation/report.html:16
|
||||
msgid "compensates intervention"
|
||||
msgstr "kompensiert Eingriff"
|
||||
|
||||
#: compensation/forms/compensation.py:86
|
||||
#: compensation/forms/compensation.py:87
|
||||
msgid "Select the intervention for which this compensation compensates"
|
||||
msgstr "Wählen Sie den Eingriff, für den diese Kompensation bestimmt ist"
|
||||
|
||||
#: compensation/forms/compensation.py:113
|
||||
#: compensation/forms/compensation.py:114
|
||||
#: compensation/views/compensation/compensation.py:115
|
||||
msgid "New compensation"
|
||||
msgstr "Neue Kompensation"
|
||||
|
||||
#: compensation/forms/compensation.py:189
|
||||
#: compensation/forms/compensation.py:190
|
||||
msgid "Edit compensation"
|
||||
msgstr "Bearbeite Kompensation"
|
||||
|
||||
@ -488,14 +488,14 @@ msgstr ""
|
||||
#: compensation/templates/compensation/report/eco_account/report.html:20
|
||||
#: compensation/utils/quality.py:113 ema/templates/ema/detail/view.html:53
|
||||
#: ema/templates/ema/report/report.html:20 ema/utils/quality.py:28
|
||||
#: intervention/forms/intervention.py:131
|
||||
#: intervention/forms/intervention.py:132
|
||||
#: intervention/templates/intervention/detail/view.html:60
|
||||
#: intervention/templates/intervention/report/report.html:41
|
||||
#: intervention/utils/quality.py:55
|
||||
msgid "Conservation office file number"
|
||||
msgstr "Aktenzeichen Eintragungsstelle"
|
||||
|
||||
#: compensation/forms/mixins.py:43 intervention/forms/intervention.py:137
|
||||
#: compensation/forms/mixins.py:43 intervention/forms/intervention.py:138
|
||||
msgid "ETS-123/ABC.456"
|
||||
msgstr ""
|
||||
|
||||
@ -511,11 +511,11 @@ msgstr "Zu welcher Kategorie dieser Maßnahmenträger gehört"
|
||||
msgid "Eco-Account handler detail"
|
||||
msgstr "Detailangabe zum Maßnahmenträger"
|
||||
|
||||
#: compensation/forms/mixins.py:71 intervention/forms/intervention.py:164
|
||||
#: compensation/forms/mixins.py:71 intervention/forms/intervention.py:165
|
||||
msgid "Detail input on the handler"
|
||||
msgstr "Name der Behörde, Stadt, Firma, ..."
|
||||
|
||||
#: compensation/forms/mixins.py:74 intervention/forms/intervention.py:167
|
||||
#: compensation/forms/mixins.py:74 intervention/forms/intervention.py:168
|
||||
msgid "Company Mustermann"
|
||||
msgstr "Firma Mustermann"
|
||||
|
||||
@ -1284,7 +1284,7 @@ msgstr "Kompensation {} bearbeitet"
|
||||
|
||||
#: compensation/views/compensation/compensation.py:187
|
||||
#: compensation/views/eco_account/eco_account.py:161 ema/views/ema.py:212
|
||||
#: intervention/views/intervention.py:230
|
||||
#: intervention/views/intervention.py:231
|
||||
msgid "Edit {}"
|
||||
msgstr "Bearbeite {}"
|
||||
|
||||
@ -1306,7 +1306,7 @@ msgstr "Ökokonto {} hinzugefügt"
|
||||
msgid "Eco-Account {} edited"
|
||||
msgstr "Ökokonto {} bearbeitet"
|
||||
|
||||
#: compensation/views/eco_account/eco_account.py:267
|
||||
#: compensation/views/eco_account/eco_account.py:268
|
||||
msgid "Eco-account removed"
|
||||
msgstr "Ökokonto entfernt"
|
||||
|
||||
@ -1354,70 +1354,70 @@ msgstr "EMA {} bearbeitet"
|
||||
msgid "EMA removed"
|
||||
msgstr "EMA entfernt"
|
||||
|
||||
#: intervention/forms/intervention.py:47
|
||||
#: intervention/forms/intervention.py:48
|
||||
msgid "Construction XY; Location ABC"
|
||||
msgstr "Bauvorhaben XY; Flur ABC"
|
||||
|
||||
#: intervention/forms/intervention.py:53
|
||||
#: intervention/forms/intervention.py:54
|
||||
#: intervention/templates/intervention/detail/view.html:35
|
||||
#: intervention/templates/intervention/report/report.html:16
|
||||
#: intervention/utils/quality.py:95
|
||||
msgid "Process type"
|
||||
msgstr "Verfahrenstyp"
|
||||
|
||||
#: intervention/forms/intervention.py:72
|
||||
#: intervention/forms/intervention.py:73
|
||||
msgid "Multiple selection possible"
|
||||
msgstr "Mehrfachauswahl möglich"
|
||||
|
||||
#: intervention/forms/intervention.py:87
|
||||
#: intervention/forms/intervention.py:88
|
||||
#: intervention/templates/intervention/detail/view.html:48
|
||||
#: intervention/templates/intervention/report/report.html:29
|
||||
#: intervention/utils/quality.py:59 konova/filters/mixins/office.py:66
|
||||
msgid "Registration office"
|
||||
msgstr "Zulassungsbehörde"
|
||||
|
||||
#: intervention/forms/intervention.py:119
|
||||
#: intervention/forms/intervention.py:120
|
||||
#: intervention/templates/intervention/detail/view.html:52
|
||||
#: intervention/templates/intervention/report/report.html:33
|
||||
#: intervention/utils/quality.py:52
|
||||
msgid "Registration office file number"
|
||||
msgstr "Aktenzeichen Zulassungsbehörde"
|
||||
|
||||
#: intervention/forms/intervention.py:125
|
||||
#: intervention/forms/intervention.py:126
|
||||
msgid "ZB-123/ABC.456"
|
||||
msgstr ""
|
||||
|
||||
#: intervention/forms/intervention.py:143
|
||||
#: intervention/forms/intervention.py:144
|
||||
msgid "Intervention handler type"
|
||||
msgstr "Art des Eingriffsverursachers"
|
||||
|
||||
#: intervention/forms/intervention.py:145
|
||||
#: intervention/forms/intervention.py:146
|
||||
msgid "What type of handler is responsible for the intervention?"
|
||||
msgstr "Zu welcher Kategorie dieser Eingriffsverursacher gehört"
|
||||
|
||||
#: intervention/forms/intervention.py:160
|
||||
#: intervention/forms/intervention.py:161
|
||||
msgid "Intervention handler detail"
|
||||
msgstr "Detailangabe zum Eingriffsverursacher"
|
||||
|
||||
#: intervention/forms/intervention.py:174
|
||||
#: intervention/forms/intervention.py:175
|
||||
#: intervention/templates/intervention/detail/view.html:101
|
||||
#: intervention/templates/intervention/report/report.html:81
|
||||
#: intervention/utils/quality.py:86
|
||||
msgid "Registration date"
|
||||
msgstr "Datum Zulassung bzw. Satzungsbeschluss"
|
||||
|
||||
#: intervention/forms/intervention.py:186
|
||||
#: intervention/forms/intervention.py:187
|
||||
#: intervention/templates/intervention/detail/view.html:105
|
||||
#: intervention/templates/intervention/report/report.html:85
|
||||
msgid "Binding on"
|
||||
msgstr "Datum Bestandskraft bzw. Rechtskraft"
|
||||
|
||||
#: intervention/forms/intervention.py:212
|
||||
#: intervention/forms/intervention.py:213
|
||||
#: intervention/views/intervention.py:100
|
||||
msgid "New intervention"
|
||||
msgstr "Neuer Eingriff"
|
||||
|
||||
#: intervention/forms/intervention.py:302
|
||||
#: intervention/forms/intervention.py:303
|
||||
msgid "Edit intervention"
|
||||
msgstr "Eingriff bearbeiten"
|
||||
|
||||
@ -1653,11 +1653,11 @@ msgstr "Eingriffe - Übersicht"
|
||||
msgid "Intervention {} added"
|
||||
msgstr "Eingriff {} hinzugefügt"
|
||||
|
||||
#: intervention/views/intervention.py:218
|
||||
#: intervention/views/intervention.py:219
|
||||
msgid "Intervention {} edited"
|
||||
msgstr "Eingriff {} bearbeitet"
|
||||
|
||||
#: intervention/views/intervention.py:255
|
||||
#: intervention/views/intervention.py:256
|
||||
msgid "{} removed"
|
||||
msgstr "{} entfernt"
|
||||
|
||||
@ -1744,7 +1744,8 @@ msgstr "Verzeichnete anzeigen"
|
||||
|
||||
#: konova/filters/mixins/record.py:27
|
||||
msgid "If activated also shows entries which have been already recorded"
|
||||
msgstr "Wenn aktiviert werden auch Einträge angezeigt, die bereits verzeichnet wurden"
|
||||
msgstr ""
|
||||
"Wenn aktiviert werden auch Einträge angezeigt, die bereits verzeichnet wurden"
|
||||
|
||||
#: konova/filters/mixins/self_created.py:23
|
||||
msgid "Show only self created"
|
||||
@ -1752,7 +1753,9 @@ msgstr "Nur selbst erstellte anzeigen"
|
||||
|
||||
#: konova/filters/mixins/self_created.py:28
|
||||
msgid "If activated only shows entries which have been created by you"
|
||||
msgstr "Wenn aktiviert werden nur Einträge angezeigt, die von Ihnen erstellt worden sind"
|
||||
msgstr ""
|
||||
"Wenn aktiviert werden nur Einträge angezeigt, die von Ihnen erstellt worden "
|
||||
"sind"
|
||||
|
||||
#: konova/filters/mixins/share.py:22
|
||||
msgid "Show unshared"
|
||||
@ -1760,13 +1763,15 @@ msgstr "Nicht freigegebene anzeigen"
|
||||
|
||||
#: konova/filters/mixins/share.py:27
|
||||
msgid "If activated also shows entries which are not shared with you"
|
||||
msgstr "Wenn aktiviert werden auch Einträge angezeigt, die nicht für Sie freigegeben sind"
|
||||
msgstr ""
|
||||
"Wenn aktiviert werden auch Einträge angezeigt, die nicht für Sie freigegeben "
|
||||
"sind"
|
||||
|
||||
#: konova/forms/base_form.py:23 templates/form/collapsable/form.html:62
|
||||
msgid "Save"
|
||||
msgstr "Speichern"
|
||||
|
||||
#: konova/forms/base_form.py:57
|
||||
#: konova/forms/base_form.py:72
|
||||
msgid "Not editable"
|
||||
msgstr "Nicht editierbar"
|
||||
|
||||
@ -1822,11 +1827,11 @@ msgstr ""
|
||||
msgid "Confirm"
|
||||
msgstr "Bestätige"
|
||||
|
||||
#: konova/forms/modals/remove_form.py:31 konova/forms/remove_form.py:30
|
||||
#: konova/forms/modals/remove_form.py:32 konova/forms/remove_form.py:30
|
||||
msgid "Remove"
|
||||
msgstr "Löschen"
|
||||
|
||||
#: konova/forms/modals/remove_form.py:32
|
||||
#: konova/forms/modals/remove_form.py:33
|
||||
msgid "Are you sure?"
|
||||
msgstr "Sind Sie sicher?"
|
||||
|
||||
@ -1976,39 +1981,39 @@ msgstr "In Zwischenablage kopiert"
|
||||
msgid "Search"
|
||||
msgstr "Suchen"
|
||||
|
||||
#: konova/utils/mailer.py:68 konova/utils/mailer.py:143
|
||||
#: konova/utils/mailer.py:71 konova/utils/mailer.py:154
|
||||
msgid "{} - Shared access removed"
|
||||
msgstr "{} - Zugriff entzogen"
|
||||
|
||||
#: konova/utils/mailer.py:91 konova/utils/mailer.py:117
|
||||
#: konova/utils/mailer.py:98 konova/utils/mailer.py:126
|
||||
msgid "{} - Shared access given"
|
||||
msgstr "{} - Zugriff freigegeben"
|
||||
|
||||
#: konova/utils/mailer.py:169 konova/utils/mailer.py:317
|
||||
#: konova/utils/mailer.py:182 konova/utils/mailer.py:346
|
||||
msgid "{} - Shared data unrecorded"
|
||||
msgstr "{} - Freigegebene Daten entzeichnet"
|
||||
|
||||
#: konova/utils/mailer.py:195 konova/utils/mailer.py:294
|
||||
#: konova/utils/mailer.py:210 konova/utils/mailer.py:319
|
||||
msgid "{} - Shared data recorded"
|
||||
msgstr "{} - Freigegebene Daten verzeichnet"
|
||||
|
||||
#: konova/utils/mailer.py:221 konova/utils/mailer.py:363
|
||||
#: konova/utils/mailer.py:238 konova/utils/mailer.py:400
|
||||
msgid "{} - Shared data checked"
|
||||
msgstr "{} - Freigegebene Daten geprüft"
|
||||
|
||||
#: konova/utils/mailer.py:248 konova/utils/mailer.py:391
|
||||
#: konova/utils/mailer.py:265 konova/utils/mailer.py:428
|
||||
msgid "{} - Deduction changed"
|
||||
msgstr "{} - Abbuchung geändert"
|
||||
|
||||
#: konova/utils/mailer.py:271 konova/utils/mailer.py:340
|
||||
#: konova/utils/mailer.py:293 konova/utils/mailer.py:373
|
||||
msgid "{} - Shared data deleted"
|
||||
msgstr "{} - Freigegebene Daten gelöscht"
|
||||
|
||||
#: konova/utils/mailer.py:412 templates/email/api/verify_token.html:4
|
||||
#: konova/utils/mailer.py:449 templates/email/api/verify_token.html:4
|
||||
msgid "Request for new API token"
|
||||
msgstr "Anfrage für neuen API Token"
|
||||
|
||||
#: konova/utils/mailer.py:435
|
||||
#: konova/utils/mailer.py:474
|
||||
msgid "Resubmission - {}"
|
||||
msgstr "Wiedervorlage - {}"
|
||||
|
||||
@ -2369,7 +2374,7 @@ msgstr ""
|
||||
#: templates/email/recording/shared_data_unrecorded.html:20
|
||||
#: templates/email/recording/shared_data_unrecorded_team.html:20
|
||||
#: templates/email/resubmission/resubmission.html:21
|
||||
#: templates/email/sharing/shared_access_given.html:21
|
||||
#: templates/email/sharing/shared_access_given.html:29
|
||||
#: templates/email/sharing/shared_access_given_team.html:21
|
||||
#: templates/email/sharing/shared_access_removed.html:21
|
||||
#: templates/email/sharing/shared_access_removed_team.html:21
|
||||
@ -2535,11 +2540,19 @@ msgid "the following dataset has just been shared with you"
|
||||
msgstr "der folgende Datensatz wurde soeben für Sie freigegeben "
|
||||
|
||||
#: templates/email/sharing/shared_access_given.html:17
|
||||
msgid "This entry is located in"
|
||||
msgstr "Dieser Eintrag befindet sich in"
|
||||
|
||||
#: templates/email/sharing/shared_access_given.html:23
|
||||
msgid "Unknown - No administrative location recognized"
|
||||
msgstr "Unbekannt - Keine administrative Verortung möglich"
|
||||
|
||||
#: templates/email/sharing/shared_access_given.html:25
|
||||
#: templates/email/sharing/shared_access_given_team.html:17
|
||||
msgid "This means you can now edit this dataset."
|
||||
msgstr "Das bedeutet, dass Sie diesen Datensatz nun auch bearbeiten können."
|
||||
|
||||
#: templates/email/sharing/shared_access_given.html:18
|
||||
#: templates/email/sharing/shared_access_given.html:26
|
||||
#: templates/email/sharing/shared_access_given_team.html:18
|
||||
msgid ""
|
||||
"The shared dataset appears now by default on your overview for this dataset "
|
||||
@ -2548,7 +2561,7 @@ msgstr ""
|
||||
"Der freigegebene Datensatz ist nun standardmäßig in Ihrer Übersicht für den "
|
||||
"Datensatztyp im KSP gelistet."
|
||||
|
||||
#: templates/email/sharing/shared_access_given.html:28
|
||||
#: templates/email/sharing/shared_access_given.html:36
|
||||
#: templates/email/sharing/shared_access_given_team.html:28
|
||||
msgid ""
|
||||
"Please note: Shared access on an intervention means you automatically have "
|
||||
@ -2665,7 +2678,7 @@ msgstr ""
|
||||
"Vergessen Sie nicht ihn anschließend wieder zu verzeichnen.\n"
|
||||
" "
|
||||
|
||||
#: templates/form/table/generic_table_form_body.html:24
|
||||
#: templates/form/table/generic_table_form_body.html:30
|
||||
msgid "Fields with * are required."
|
||||
msgstr "* sind Pflichtfelder."
|
||||
|
||||
|
@ -14,6 +14,16 @@
|
||||
<br>
|
||||
<strong>{{obj_title}}</strong>
|
||||
<br>
|
||||
<br>
|
||||
{% trans 'This entry is located in' %}
|
||||
<ul>
|
||||
{% for municipal in municipals_names %}
|
||||
<li>{{municipal}}</li>
|
||||
{% empty %}
|
||||
</ul>
|
||||
{% trans 'Unknown - No administrative location recognized' %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% trans 'This means, the responsible registration office just confirmed the correctness of this dataset.' %}
|
||||
<br>
|
||||
<br>
|
||||
|
@ -14,6 +14,16 @@
|
||||
<br>
|
||||
<strong>{{obj_title}}</strong>
|
||||
<br>
|
||||
<br>
|
||||
{% trans 'This entry is located in' %}
|
||||
<ul>
|
||||
{% for municipal in municipals_names %}
|
||||
<li>{{municipal}}</li>
|
||||
{% empty %}
|
||||
</ul>
|
||||
{% trans 'Unknown - No administrative location recognized' %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% trans 'This means, the responsible registration office just confirmed the correctness of this dataset.' %}
|
||||
<br>
|
||||
<br>
|
||||
|
@ -14,6 +14,16 @@
|
||||
<br>
|
||||
<strong>"{{obj_title}}"</strong>
|
||||
<br>
|
||||
<br>
|
||||
{% trans 'This entry is located in' %}
|
||||
<ul>
|
||||
{% for municipal in municipals_names %}
|
||||
<li>{{municipal}}</li>
|
||||
{% empty %}
|
||||
</ul>
|
||||
{% trans 'Unknown - No administrative location recognized' %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% trans 'If this should not have been happened, please contact us. See the signature for details.' %}
|
||||
<br>
|
||||
<br>
|
||||
|
@ -14,6 +14,16 @@
|
||||
<br>
|
||||
<strong>"{{obj_title}}"</strong>
|
||||
<br>
|
||||
<br>
|
||||
{% trans 'This entry is located in' %}
|
||||
<ul>
|
||||
{% for municipal in municipals_names %}
|
||||
<li>{{municipal}}</li>
|
||||
{% empty %}
|
||||
</ul>
|
||||
{% trans 'Unknown - No administrative location recognized' %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% trans 'If this should not have been happened, please contact us. See the signature for details.' %}
|
||||
<br>
|
||||
<br>
|
||||
|
@ -14,6 +14,16 @@
|
||||
<br>
|
||||
<strong>"{{obj_title}}"</strong>
|
||||
<br>
|
||||
<br>
|
||||
{% trans 'This entry is located in' %}
|
||||
<ul>
|
||||
{% for municipal in municipals_names %}
|
||||
<li>{{municipal}}</li>
|
||||
{% empty %}
|
||||
</ul>
|
||||
{% trans 'Unknown - No administrative location recognized' %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% trans 'This means the data is now publicly available, e.g. in LANIS' %}
|
||||
<br>
|
||||
<br>
|
||||
|
@ -14,6 +14,16 @@
|
||||
<br>
|
||||
<strong>"{{obj_title}}"</strong>
|
||||
<br>
|
||||
<br>
|
||||
{% trans 'This entry is located in' %}
|
||||
<ul>
|
||||
{% for municipal in municipals_names %}
|
||||
<li>{{municipal}}</li>
|
||||
{% empty %}
|
||||
</ul>
|
||||
{% trans 'Unknown - No administrative location recognized' %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% trans 'This means the data is now publicly available, e.g. in LANIS' %}
|
||||
<br>
|
||||
<br>
|
||||
|
@ -14,6 +14,16 @@
|
||||
<br>
|
||||
<strong>"{{obj_title}}"</strong>
|
||||
<br>
|
||||
<br>
|
||||
{% trans 'This entry is located in' %}
|
||||
<ul>
|
||||
{% for municipal in municipals_names %}
|
||||
<li>{{municipal}}</li>
|
||||
{% empty %}
|
||||
</ul>
|
||||
{% trans 'Unknown - No administrative location recognized' %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% trans 'This means the data is no longer publicly available.' %}
|
||||
<br>
|
||||
<br>
|
||||
|
@ -14,6 +14,17 @@
|
||||
<br>
|
||||
<strong>"{{obj_title}}"</strong>
|
||||
<br>
|
||||
<br>
|
||||
{% trans 'This entry is located in' %}
|
||||
<ul>
|
||||
{% for municipal in municipals_names %}
|
||||
<li>{{municipal}}</li>
|
||||
{% empty %}
|
||||
</ul>
|
||||
{% trans 'Unknown - No administrative location recognized' %}
|
||||
<br>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% trans 'This means the data is no longer publicly available.' %}
|
||||
<br>
|
||||
<br>
|
||||
|
@ -18,6 +18,16 @@
|
||||
{% endif %}
|
||||
<br>
|
||||
<br>
|
||||
{% trans 'This entry is located in' %}
|
||||
<ul>
|
||||
{% for municipal in municipals_names %}
|
||||
<li>{{municipal}}</li>
|
||||
{% empty %}
|
||||
</ul>
|
||||
{% trans 'Unknown - No administrative location recognized' %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<br>
|
||||
{% trans 'Best regards' %}
|
||||
<br>
|
||||
KSP
|
||||
|
@ -14,6 +14,16 @@
|
||||
<br>
|
||||
<strong>"{{obj_title}}"</strong>
|
||||
<br>
|
||||
<br>
|
||||
{% trans 'This entry is located in' %}
|
||||
<ul>
|
||||
{% for municipal in municipals_names %}
|
||||
<li>{{municipal}}</li>
|
||||
{% empty %}
|
||||
</ul>
|
||||
{% trans 'Unknown - No administrative location recognized' %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% trans 'This means you can now edit this dataset.' %}
|
||||
{% trans 'The shared dataset appears now by default on your overview for this dataset type.' %}
|
||||
<br>
|
||||
|
@ -14,6 +14,17 @@
|
||||
<br>
|
||||
<strong>"{{obj_title}}"</strong>
|
||||
<br>
|
||||
<br>
|
||||
{% trans 'This entry is located in' %}
|
||||
<br>
|
||||
<ul>
|
||||
{% for municipal in municipals_names %}
|
||||
<li>{{municipal}}</li>
|
||||
{% empty %}
|
||||
</ul>
|
||||
{% trans 'Unknown - No administrative location recognized' %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% trans 'This means you can now edit this dataset.' %}
|
||||
{% trans 'The shared dataset appears now by default on your overview for this dataset type.' %}
|
||||
<br>
|
||||
|
@ -14,6 +14,16 @@
|
||||
<br>
|
||||
<strong>"{{obj_title}}"</strong>
|
||||
<br>
|
||||
<br>
|
||||
{% trans 'This entry is located in' %}
|
||||
<ul>
|
||||
{% for municipal in municipals_names %}
|
||||
<li>{{municipal}}</li>
|
||||
{% empty %}
|
||||
</ul>
|
||||
{% trans 'Unknown - No administrative location recognized' %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% trans 'However, you are still able to view the dataset content.' %}
|
||||
{% trans 'Please use the provided search filter on the dataset`s overview pages to find them.' %}
|
||||
<br>
|
||||
|
@ -14,6 +14,16 @@
|
||||
<br>
|
||||
<strong>"{{obj_title}}"</strong>
|
||||
<br>
|
||||
<br>
|
||||
{% trans 'This entry is located in' %}
|
||||
<ul>
|
||||
{% for municipal in municipals_names %}
|
||||
<li>{{municipal}}</li>
|
||||
{% empty %}
|
||||
</ul>
|
||||
{% trans 'Unknown - No administrative location recognized' %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% trans 'However, you are still able to view the dataset content.' %}
|
||||
{% trans 'Please use the provided search filter on the dataset`s overview pages to find them.' %}
|
||||
<br>
|
||||
|
@ -31,12 +31,13 @@ class Team(UuidModel, DeletableObjectMixin):
|
||||
self.deleted = delete_action
|
||||
self.save()
|
||||
|
||||
def send_mail_shared_access_given_team(self, obj_identifier, obj_title):
|
||||
def send_mail_shared_access_given_team(self, obj_identifier, obj_title, municipals_names):
|
||||
""" Sends a mail to the team members in case of given shared access
|
||||
|
||||
Args:
|
||||
obj_identifier ():
|
||||
obj_title ():
|
||||
obj_identifier (str): The entry identifier
|
||||
obj_title (str): The entry title
|
||||
municipals_names (iterable): List of municipals for this entry
|
||||
|
||||
Returns:
|
||||
|
||||
@ -45,14 +46,15 @@ class Team(UuidModel, DeletableObjectMixin):
|
||||
users_to_notify = self.users.filter(
|
||||
notifications__in=[UserNotificationEnum.NOTIFY_ON_SHARED_ACCESS_GAINED.value]
|
||||
)
|
||||
mailer.send_mail_shared_access_given_team(obj_identifier, obj_title, self, users_to_notify)
|
||||
mailer.send_mail_shared_access_given_team(obj_identifier, obj_title, self, users_to_notify, municipals_names)
|
||||
|
||||
def send_mail_shared_access_removed(self, obj_identifier, obj_title):
|
||||
def send_mail_shared_access_removed(self, obj_identifier, obj_title, municipals_names):
|
||||
""" Sends a mail to the team members in case of removed shared access
|
||||
|
||||
Args:
|
||||
obj_identifier ():
|
||||
obj_title ():
|
||||
obj_identifier (str): The entry identifier
|
||||
obj_title (str): The entry title
|
||||
municipals_names (iterable): List of municipals for this entry
|
||||
|
||||
Returns:
|
||||
|
||||
@ -61,14 +63,15 @@ class Team(UuidModel, DeletableObjectMixin):
|
||||
users_to_notify = self.users.filter(
|
||||
notifications__in=[UserNotificationEnum.NOTIFY_ON_SHARED_ACCESS_REMOVED.value]
|
||||
)
|
||||
mailer.send_mail_shared_access_removed_team(obj_identifier, obj_title, self, users_to_notify)
|
||||
mailer.send_mail_shared_access_removed_team(obj_identifier, obj_title, self, users_to_notify, municipals_names)
|
||||
|
||||
def send_mail_shared_data_unrecorded(self, obj_identifier, obj_title):
|
||||
def send_mail_shared_data_unrecorded(self, obj_identifier, obj_title, municipals_names):
|
||||
""" Sends a mail to the team members in case of unrecorded data
|
||||
|
||||
Args:
|
||||
obj_identifier ():
|
||||
obj_title ():
|
||||
obj_identifier (str): The entry identifier
|
||||
obj_title (str): The entry title
|
||||
municipals_names (iterable): List of municipals for this entry
|
||||
|
||||
Returns:
|
||||
|
||||
@ -77,14 +80,15 @@ class Team(UuidModel, DeletableObjectMixin):
|
||||
users_to_notify = self.users.filter(
|
||||
notifications__in=[UserNotificationEnum.NOTIFY_ON_SHARED_DATA_RECORDED.value]
|
||||
)
|
||||
mailer.send_mail_shared_data_unrecorded_team(obj_identifier, obj_title, self, users_to_notify)
|
||||
mailer.send_mail_shared_data_unrecorded_team(obj_identifier, obj_title, self, users_to_notify, municipals_names)
|
||||
|
||||
def send_mail_shared_data_recorded(self, obj_identifier, obj_title):
|
||||
def send_mail_shared_data_recorded(self, obj_identifier, obj_title, municipals_names):
|
||||
""" Sends a mail to the team members in case of unrecorded data
|
||||
|
||||
Args:
|
||||
obj_identifier ():
|
||||
obj_title ():
|
||||
obj_identifier (str): The entry identifier
|
||||
obj_title (str): The entry title
|
||||
municipals_names (iterable): List of municipals for this entry
|
||||
|
||||
Returns:
|
||||
|
||||
@ -93,14 +97,15 @@ class Team(UuidModel, DeletableObjectMixin):
|
||||
users_to_notify = self.users.filter(
|
||||
notifications__in=[UserNotificationEnum.NOTIFY_ON_SHARED_DATA_RECORDED.value]
|
||||
)
|
||||
mailer.send_mail_shared_data_recorded_team(obj_identifier, obj_title, self, users_to_notify)
|
||||
mailer.send_mail_shared_data_recorded_team(obj_identifier, obj_title, self, users_to_notify, municipals_names)
|
||||
|
||||
def send_mail_shared_data_checked(self, obj_identifier, obj_title):
|
||||
def send_mail_shared_data_checked(self, obj_identifier, obj_title, municipals_names):
|
||||
""" Sends a mail to the team members in case of checked data
|
||||
|
||||
Args:
|
||||
obj_identifier ():
|
||||
obj_title ():
|
||||
obj_identifier (str): The entry identifier
|
||||
obj_title (str): The entry title
|
||||
municipals_names (iterable): List of municipals for this entry
|
||||
|
||||
Returns:
|
||||
|
||||
@ -109,7 +114,7 @@ class Team(UuidModel, DeletableObjectMixin):
|
||||
users_to_notify = self.users.filter(
|
||||
notifications__in=[UserNotificationEnum.NOTIFY_ON_SHARED_DATA_CHECKED.value]
|
||||
)
|
||||
mailer.send_mail_shared_data_checked_team(obj_identifier, obj_title, self, users_to_notify)
|
||||
mailer.send_mail_shared_data_checked_team(obj_identifier, obj_title, self, users_to_notify, municipals_names)
|
||||
|
||||
def send_mail_deduction_changed(self, obj_identifier, obj_title, data_changes):
|
||||
""" Sends a mail to the team members in case of changed deduction values
|
||||
@ -128,12 +133,13 @@ class Team(UuidModel, DeletableObjectMixin):
|
||||
)
|
||||
mailer.send_mail_deduction_changed_team(obj_identifier, obj_title, self, data_changes, users_to_notify)
|
||||
|
||||
def send_mail_shared_data_deleted(self, obj_identifier, obj_title):
|
||||
def send_mail_shared_data_deleted(self, obj_identifier, obj_title, municipals_names):
|
||||
""" Sends a mail to the team members in case of deleted data
|
||||
|
||||
Args:
|
||||
obj_identifier ():
|
||||
obj_title ():
|
||||
obj_identifier (str): The entry identifier
|
||||
obj_title (str): The entry title
|
||||
municipals_names (iterable): List of municipals for this entry
|
||||
|
||||
Returns:
|
||||
|
||||
@ -142,7 +148,7 @@ class Team(UuidModel, DeletableObjectMixin):
|
||||
users_to_notify = self.users.filter(
|
||||
notifications__in=[UserNotificationEnum.NOTIFY_ON_SHARED_DATA_DELETED.value]
|
||||
)
|
||||
mailer.send_mail_shared_data_deleted_team(obj_identifier, obj_title, self, users_to_notify)
|
||||
mailer.send_mail_shared_data_deleted_team(obj_identifier, obj_title, self, users_to_notify, municipals_names)
|
||||
|
||||
def remove_user(self, user):
|
||||
""" Removes a user from the team
|
||||
|
@ -60,12 +60,13 @@ class User(AbstractUser):
|
||||
name=ETS_GROUP
|
||||
).exists()
|
||||
|
||||
def send_mail_shared_access_removed(self, obj_identifier, obj_title):
|
||||
def send_mail_shared_access_removed(self, obj_identifier, obj_title, municipals_names):
|
||||
""" Sends a mail to the user in case of removed shared access
|
||||
|
||||
Args:
|
||||
obj_identifier ():
|
||||
obj_title ():
|
||||
municipals_names ():
|
||||
|
||||
Returns:
|
||||
|
||||
@ -73,13 +74,15 @@ class User(AbstractUser):
|
||||
notification_set = self.is_notification_setting_set(UserNotificationEnum.NOTIFY_ON_SHARED_ACCESS_REMOVED)
|
||||
if notification_set:
|
||||
mailer = Mailer()
|
||||
mailer.send_mail_shared_access_removed(obj_identifier, obj_title, self)
|
||||
mailer.send_mail_shared_access_removed(obj_identifier, obj_title, self, municipals_names)
|
||||
|
||||
def send_mail_shared_access_given(self, obj_identifier, obj_title):
|
||||
def send_mail_shared_access_given(self, obj_identifier, obj_title, municipals_names):
|
||||
""" Sends a mail to the user in case of given shared access
|
||||
|
||||
Args:
|
||||
obj_identifier ():
|
||||
obj_identifier (str): The entry identifier
|
||||
obj_title (str): The entry title
|
||||
municipals_names (iterable): List of municipals for this entry
|
||||
|
||||
Returns:
|
||||
|
||||
@ -87,13 +90,15 @@ class User(AbstractUser):
|
||||
notification_set = self.is_notification_setting_set(UserNotificationEnum.NOTIFY_ON_SHARED_ACCESS_GAINED)
|
||||
if notification_set:
|
||||
mailer = Mailer()
|
||||
mailer.send_mail_shared_access_given(obj_identifier, obj_title, self)
|
||||
mailer.send_mail_shared_access_given(obj_identifier, obj_title, self, municipals_names)
|
||||
|
||||
def send_mail_shared_data_recorded(self, obj_identifier, obj_title):
|
||||
def send_mail_shared_data_recorded(self, obj_identifier, obj_title, municipals_names):
|
||||
""" Sends a mail to the user in case of shared data has been recorded
|
||||
|
||||
Args:
|
||||
obj_identifier ():
|
||||
obj_identifier (str): The entry identifier
|
||||
obj_title (str): The entry title
|
||||
municipals_names (iterable): List of municipals for this entry
|
||||
|
||||
Returns:
|
||||
|
||||
@ -101,13 +106,15 @@ class User(AbstractUser):
|
||||
notification_set = self.is_notification_setting_set(UserNotificationEnum.NOTIFY_ON_SHARED_DATA_RECORDED)
|
||||
if notification_set:
|
||||
mailer = Mailer()
|
||||
mailer.send_mail_shared_data_recorded(obj_identifier, obj_title, self)
|
||||
mailer.send_mail_shared_data_recorded(obj_identifier, obj_title, self, municipals_names)
|
||||
|
||||
def send_mail_shared_data_unrecorded(self, obj_identifier, obj_title):
|
||||
def send_mail_shared_data_unrecorded(self, obj_identifier, obj_title, municipals_names):
|
||||
""" Sends a mail to the user in case of shared data has been unrecorded
|
||||
|
||||
Args:
|
||||
obj_identifier ():
|
||||
obj_identifier (str): The entry identifier
|
||||
obj_title (str): The entry title
|
||||
municipals_names (iterable): List of municipals for this entry
|
||||
|
||||
Returns:
|
||||
|
||||
@ -115,13 +122,15 @@ class User(AbstractUser):
|
||||
notification_set = self.is_notification_setting_set(UserNotificationEnum.NOTIFY_ON_SHARED_DATA_RECORDED)
|
||||
if notification_set:
|
||||
mailer = Mailer()
|
||||
mailer.send_mail_shared_data_unrecorded(obj_identifier, obj_title, self)
|
||||
mailer.send_mail_shared_data_unrecorded(obj_identifier, obj_title, self, municipals_names)
|
||||
|
||||
def send_mail_shared_data_deleted(self, obj_identifier, obj_title):
|
||||
def send_mail_shared_data_deleted(self, obj_identifier, obj_title, municipals_names):
|
||||
""" Sends a mail to the user in case of shared data has been deleted
|
||||
|
||||
Args:
|
||||
obj_identifier ():
|
||||
obj_identifier (str): The entry identifier
|
||||
obj_title (str): The entry title
|
||||
municipals_names (iterable): List of municipals for this entry
|
||||
|
||||
Returns:
|
||||
|
||||
@ -129,13 +138,15 @@ class User(AbstractUser):
|
||||
notification_set = self.is_notification_setting_set(UserNotificationEnum.NOTIFY_ON_SHARED_DATA_DELETED)
|
||||
if notification_set:
|
||||
mailer = Mailer()
|
||||
mailer.send_mail_shared_data_deleted(obj_identifier, obj_title, self)
|
||||
mailer.send_mail_shared_data_deleted(obj_identifier, obj_title, self, municipals_names)
|
||||
|
||||
def send_mail_shared_data_checked(self, obj_identifier, obj_title):
|
||||
def send_mail_shared_data_checked(self, obj_identifier, obj_title, municipals_names):
|
||||
""" Sends a mail to the user in case of shared data has been deleted
|
||||
|
||||
Args:
|
||||
obj_identifier ():
|
||||
obj_identifier (str): The entry identifier
|
||||
obj_title (str): The entry title
|
||||
municipals_names (iterable): List of municipals for this entry
|
||||
|
||||
Returns:
|
||||
|
||||
@ -143,7 +154,7 @@ class User(AbstractUser):
|
||||
notification_set = self.is_notification_setting_set(UserNotificationEnum.NOTIFY_ON_SHARED_DATA_CHECKED)
|
||||
if notification_set:
|
||||
mailer = Mailer()
|
||||
mailer.send_mail_shared_data_checked(obj_identifier, obj_title, self)
|
||||
mailer.send_mail_shared_data_checked(obj_identifier, obj_title, self, municipals_names)
|
||||
|
||||
def send_mail_deduction_changed(self, obj_identifier, obj_title, data_changes):
|
||||
""" Sends a mail to the user in case of a changed deduction
|
||||
|
Loading…
Reference in New Issue
Block a user