diff --git a/Dockerfile b/Dockerfile
deleted file mode 100644
index 6e35526c..00000000
--- a/Dockerfile
+++ /dev/null
@@ -1,24 +0,0 @@
-FROM python:3.9-slim
-ENV PYTHONUNBUFFERED 1
-
-WORKDIR /konova
-
-# Install some dependencies
-RUN apt update
-RUN apt install -y gdal-bin redis-server nginx
-
-# Copy requirements file into workspace and install all dependencies
-COPY ./requirements.txt /konova/
-RUN pip install --upgrade pip
-RUN pip install -r requirements.txt
-
-# Remove nginx default configuration and replace with own configuration
-RUN rm /etc/nginx/sites-enabled/default
-COPY ./nginx.conf /etc/nginx/conf.d
-
-# Copy rest of project into workspace
-COPY . /konova/
-
-# Move static files in designated folder
-RUN python manage.py collectstatic --noinput
-
diff --git a/README.md b/README.md
index 8fee9211..44971474 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,6 @@ the database postgresql and the css library bootstrap as well as the icon packag
fontawesome for a modern look, following best practices from the industry.
## Background processes
-### !!! For non-docker run
Konova uses celery for background processing. To start the worker you need to run
```shell
$ celery -A konova worker -l INFO
@@ -19,58 +18,3 @@ Technical documention is provided in the projects git wiki.
A user documentation is not available (and not needed, yet).
-# Docker
-To run the docker-compose as expected, you need to take the following steps:
-
-1. Create a database containing docker, using an appropriate Dockerfile, e.g. the following
-```
-version: '3.3'
-services:
- postgis:
- image: postgis/postgis
- restart: always
- container_name: postgis-docker
- ports:
- - 5433:5432
- volumes:
- - db-volume:/var/lib/postgresql/data
- environment:
- - POSTGRES_PASSWORD=postgres
- - POSTGRES_USER=postgres
- networks:
- - db-network-bridge
-
-networks:
- db-network-bridge:
- driver: "bridge"
-
-volumes:
- db-volume:
-```
-This Dockerfile creates a Docker container running postgresql and postgis, creates the default superuser postgres,
-creates a named volume for persisting the database and creates a new network bridge, which **must be used by any other
-container, which wants to write/read on this database**.
-
-2. Make sure the name of the network bridge above matches the network in the konova docker-compose.yml
-3. Get into the running postgis container (`docker exec -it postgis-docker bash`) and create new databases, users and so on. Make sure the database `konova` exists now!
-4. Replace all `CHANGE_ME_xy` values inside of konova/docker-compose.yml for your installation. Make sure the `SSO_HOST` holds the proper SSO host, e.g. for the arnova project `arnova.example.org` (Arnova must be installed and the webserver configured as well, of course)
-5. Take a look on konova/settings.py and konova/sub_settings/django_settings.py. Again: Replace all occurences of `CHANGE_ME` with proper values for your installation.
- 1. Make sure you have the proper host strings added to `ALLOWED_HOSTS` inside of django_settings.py.
-6. Build and run the docker setup using `docker-compose build` and `docker-compose start` from the main directory of this project (where the docker-compose.yml lives)
-7. Run migrations! To do so, get into the konova service container (`docker exec -it konova-docker bash`) and run the needed commands (`python manage.py makemigrations LIST_OF_ALL_MIGRATABLE_APPS`, then `python manage.py migrate`)
-8. Run the setup command `python manage.py setup` and follow the instructions on the CLI
-9. To enable **SMTP** mail support, make sure your host machine (the one where the docker container run) has the postfix service configured properly. Make sure the `mynetworks` variable is xtended using the docker network bridge ip, created in the postgis container and used by the konova services.
- 1. **Hint**: You can find out this easily by trying to perform a test mail in the running konova web application (which will fail, of course). Then take a look to the latest entries in `/var/log/mail.log` on your host machine. The failed IP will be displayed there.
- 2. **Please note**: This installation guide is based on SMTP using postfix!
- 3. Restart the postfix service on your host machine to reload the new configuration (`service postfix restart`)
-10. Finally, make sure your host machine webserver passes incoming requests properly to the docker nginx webserver of konova. A proper nginx config for the host machine may look like this:
-```
-server {
- server_name konova.domain.org;
-
- location / {
- proxy_pass http://localhost:KONOVA_NGINX_DOCKER_PORT/;
- proxy_set_header Host $host;
- }
-}
-```
\ No newline at end of file
diff --git a/analysis/forms.py b/analysis/forms.py
index 11d2f98b..68e217af 100644
--- a/analysis/forms.py
+++ b/analysis/forms.py
@@ -22,6 +22,7 @@ class TimespanReportForm(BaseForm):
date_from = forms.DateField(
label_suffix="",
label=_("From"),
+ help_text=_("Entries created from..."),
widget=forms.DateInput(
attrs={
"type": "date",
@@ -34,6 +35,7 @@ class TimespanReportForm(BaseForm):
date_to = forms.DateField(
label_suffix="",
label=_("To"),
+ help_text=_("Entries created until..."),
widget=forms.DateInput(
attrs={
"type": "date",
diff --git a/analysis/templates/analysis/reports/includes/compensation/amount.html b/analysis/templates/analysis/reports/includes/compensation/amount.html
index 86383b69..de6e2564 100644
--- a/analysis/templates/analysis/reports/includes/compensation/amount.html
+++ b/analysis/templates/analysis/reports/includes/compensation/amount.html
@@ -15,40 +15,40 @@
{% trans 'Area of responsibility' %} |
+ {% trans 'Total' %} |
+ {% trans 'Number single areas' %} |
{% fa5_icon 'star' %} {% trans 'Checked' %} |
{% fa5_icon 'bookmark' %} {% trans 'Recorded' %} |
- {% trans 'Number single areas' %} |
- {% trans 'Total' %} |
{% trans 'Conservation office by law' %} |
+ {{report.compensation_report.queryset_registration_office_unb_count|default_if_zero:"-"}} |
+ {{report.compensation_report.num_single_surfaces_total_unb|default_if_zero:"-"}} |
{{report.compensation_report.queryset_registration_office_unb_checked_count|default_if_zero:"-"}} |
{{report.compensation_report.queryset_registration_office_unb_recorded_count|default_if_zero:"-"}} |
- {{report.compensation_report.num_single_surfaces_total_unb|default_if_zero:"-"}} |
- {{report.compensation_report.queryset_registration_office_unb_count|default_if_zero:"-"}} |
{% trans 'Land-use planning' %} |
+ {{report.compensation_report.queryset_registration_office_tbp_count|default_if_zero:"-"}} |
+ {{report.compensation_report.num_single_surfaces_total_tbp|default_if_zero:"-"}} |
{{report.compensation_report.queryset_registration_office_tbp_checked_count|default_if_zero:"-"}} |
{{report.compensation_report.queryset_registration_office_tbp_recorded_count|default_if_zero:"-"}} |
- {{report.compensation_report.num_single_surfaces_total_tbp|default_if_zero:"-"}} |
- {{report.compensation_report.queryset_registration_office_tbp_count|default_if_zero:"-"}} |
{% trans 'Other registration office' %} |
+ {{report.compensation_report.queryset_registration_office_other_count|default_if_zero:"-"}} |
+ {{report.compensation_report.num_single_surfaces_total_other|default_if_zero:"-"}} |
{{report.compensation_report.queryset_registration_office_other_checked_count|default_if_zero:"-"}} |
{{report.compensation_report.queryset_registration_office_other_recorded_count|default_if_zero:"-"}} |
- {{report.compensation_report.num_single_surfaces_total_other|default_if_zero:"-"}} |
- {{report.compensation_report.queryset_registration_office_other_count|default_if_zero:"-"}} |
{% trans 'Total' %} |
+ {{report.compensation_report.queryset_count|default_if_zero:"-"}} |
+ {{report.compensation_report.num_single_surfaces_total|default_if_zero:"-"}} |
{{report.compensation_report.queryset_checked_count|default_if_zero:"-"}} |
{{report.compensation_report.queryset_recorded_count|default_if_zero:"-"}} |
- {{report.compensation_report.num_single_surfaces_total|default_if_zero:"-"}} |
- {{report.compensation_report.queryset_count|default_if_zero:"-"}} |
diff --git a/analysis/templates/analysis/reports/includes/eco_account/amount.html b/analysis/templates/analysis/reports/includes/eco_account/amount.html
index 668250e6..a36211f3 100644
--- a/analysis/templates/analysis/reports/includes/eco_account/amount.html
+++ b/analysis/templates/analysis/reports/includes/eco_account/amount.html
@@ -10,14 +10,14 @@
- {% fa5_icon 'bookmark' %} {% trans 'Recorded' %} |
{% trans 'Total' %} |
+ {% fa5_icon 'bookmark' %} {% trans 'Recorded' %} |
- {{report.eco_account_report.queryset_recorded_count|default_if_zero:"-"}} |
{{report.eco_account_report.queryset_count|default_if_zero:"-"}} |
+ {{report.eco_account_report.queryset_recorded_count|default_if_zero:"-"}} |
diff --git a/analysis/templates/analysis/reports/includes/eco_account/deductions.html b/analysis/templates/analysis/reports/includes/eco_account/deductions.html
index c9a0e8d5..df235cbf 100644
--- a/analysis/templates/analysis/reports/includes/eco_account/deductions.html
+++ b/analysis/templates/analysis/reports/includes/eco_account/deductions.html
@@ -1,22 +1,37 @@
{% load i18n fontawesome_5 ksp_filters %}
{% trans 'Deductions' %}
+
+ {% blocktrans %}
+ Recorded = Counts the deductions whose interventions have been recorded
+ {% endblocktrans %}
+
- {% fa5_icon 'bookmark' %} {% trans 'Recorded' %} |
- {% fa5_icon 'bookmark' %} {% trans 'Recorded' %} {% trans 'Surface' %} |
{% trans 'Total' %} |
{% trans 'Total' %} {% trans 'Surface' %} |
+ {% fa5_icon 'bookmark' %} {% trans 'Recorded' %} |
+ {% fa5_icon 'bookmark' %} {% trans 'Recorded' %} {% trans 'Surface' %} |
- {{report.eco_account_report.queryset_deductions_recorded_count|default_if_zero:"-"}} |
- {{report.eco_account_report.recorded_deductions_sq_m|default_if_zero:"-"}}m² |
{{report.eco_account_report.queryset_deductions_count|default_if_zero:"-"}} |
- {{report.eco_account_report.deductions_sq_m|default_if_zero:"-"}}m² |
+
+ {{report.eco_account_report.deductions_sq_m|default_if_zero:"-"}}
+ {% if report.eco_account_report.deductions_sq_m > 0 %}
+ m²
+ {% endif %}
+ |
+ {{report.eco_account_report.queryset_deductions_recorded_count|default_if_zero:"-"}} |
+
+ {{report.eco_account_report.recorded_deductions_sq_m|default_if_zero:"-"}}
+ {% if report.eco_account_report.recorded_deductions_sq_m > 0 %}
+ m²
+ {% endif %}
+ |
diff --git a/analysis/templates/analysis/reports/includes/intervention/amount.html b/analysis/templates/analysis/reports/includes/intervention/amount.html
index 0c934483..fc0b5fac 100644
--- a/analysis/templates/analysis/reports/includes/intervention/amount.html
+++ b/analysis/templates/analysis/reports/includes/intervention/amount.html
@@ -14,16 +14,16 @@
+ {% trans 'Total' %} |
{% fa5_icon 'star' %} {% trans 'Checked' %} |
{% fa5_icon 'bookmark' %} {% trans 'Recorded' %} |
- {% trans 'Total' %} |
+ {{report.intervention_report.queryset_count|default_if_zero:"-"}} |
{{report.intervention_report.queryset_checked_count|default_if_zero:"-"}} |
{{report.intervention_report.queryset_recorded_count|default_if_zero:"-"}} |
- {{report.intervention_report.queryset_count|default_if_zero:"-"}} |
diff --git a/analysis/templates/analysis/reports/includes/intervention/compensated_by.html b/analysis/templates/analysis/reports/includes/intervention/compensated_by.html
index c6be40cc..d76bec4a 100644
--- a/analysis/templates/analysis/reports/includes/intervention/compensated_by.html
+++ b/analysis/templates/analysis/reports/includes/intervention/compensated_by.html
@@ -5,29 +5,29 @@
{% trans 'Compensation type' %} |
+ {% trans 'Total' %} |
{% fa5_icon 'star' %} {% trans 'Checked' %} |
{% fa5_icon 'bookmark' %} {% trans 'Recorded' %} |
- {% trans 'Total' %} |
{% trans 'Compensation' %} |
+ {{report.intervention_report.compensation_sum|default_if_zero:"-"}} |
{{report.intervention_report.compensation_sum_checked|default_if_zero:"-"}} |
{{report.intervention_report.compensation_sum_recorded|default_if_zero:"-"}} |
- {{report.intervention_report.compensation_sum|default_if_zero:"-"}} |
{% trans 'Payment' %} |
+ {{report.intervention_report.payment_sum|default_if_zero:"-"}} |
{{report.intervention_report.payment_sum_checked|default_if_zero:"-"}} |
{{report.intervention_report.payment_sum_recorded|default_if_zero:"-"}} |
- {{report.intervention_report.payment_sum|default_if_zero:"-"}} |
{% trans 'Deductions' %} |
+ {{report.intervention_report.deduction_sum|default_if_zero:"-"}} |
{{report.intervention_report.deduction_sum_checked|default_if_zero:"-"}} |
{{report.intervention_report.deduction_sum_recorded|default_if_zero:"-"}} |
- {{report.intervention_report.deduction_sum|default_if_zero:"-"}} |
diff --git a/analysis/templates/analysis/reports/includes/intervention/laws.html b/analysis/templates/analysis/reports/includes/intervention/laws.html
index e310197f..55f6a551 100644
--- a/analysis/templates/analysis/reports/includes/intervention/laws.html
+++ b/analysis/templates/analysis/reports/includes/intervention/laws.html
@@ -13,15 +13,15 @@
{% trans 'Law' %}
|
+
+ {% trans 'Total' %}
+ |
{% fa5_icon 'star' %} {% trans 'Checked' %}
|
{% fa5_icon 'bookmark' %} {% trans 'Recorded' %}
|
-
- {% trans 'Total' %}
- |
@@ -34,16 +34,16 @@
{{law.long_name}}
+ {{law.num|default_if_zero:"-"}} |
{{law.num_checked|default_if_zero:"-"}} |
{{law.num_recorded|default_if_zero:"-"}} |
- {{law.num|default_if_zero:"-"}} |
{% endfor %}
{% trans 'Total' %} |
+ {{report.intervention_report.law_sum|default_if_zero:"-"}} |
{{report.intervention_report.law_sum_checked|default_if_zero:"-"}} |
{{report.intervention_report.law_sum_recorded|default_if_zero:"-"}} |
- {{report.intervention_report.law_sum|default_if_zero:"-"}} |
diff --git a/analysis/templates/analysis/reports/includes/old_data/amount.html b/analysis/templates/analysis/reports/includes/old_data/amount.html
index cd79cb6f..bc1fc1a8 100644
--- a/analysis/templates/analysis/reports/includes/old_data/amount.html
+++ b/analysis/templates/analysis/reports/includes/old_data/amount.html
@@ -14,26 +14,26 @@
- {% fa5_icon 'star' %} {% trans 'Type' %} |
- {% fa5_icon 'bookmark' %} {% trans 'Recorded' %} |
+ {% trans 'Type' %} |
{% trans 'Total' %} |
+ {% fa5_icon 'bookmark' %} {% trans 'Recorded' %} |
{% trans 'Intervention' %} |
- {{report.old_data_report.queryset_intervention_recorded_count|default_if_zero:"-"}} |
{{report.old_data_report.queryset_intervention_count|default_if_zero:"-"}} |
+ {{report.old_data_report.queryset_intervention_recorded_count|default_if_zero:"-"}} |
{% trans 'Compensation' %} |
- {{report.old_data_report.queryset_comps_recorded_count|default_if_zero:"-"}} |
{{report.old_data_report.queryset_comps_count|default_if_zero:"-"}} |
+ {{report.old_data_report.queryset_comps_recorded_count|default_if_zero:"-"}} |
{% trans 'Eco-account' %} |
- {{report.old_data_report.queryset_acc_recorded_count|default_if_zero:"-"}} |
{{report.old_data_report.queryset_acc_count|default_if_zero:"-"}} |
+ {{report.old_data_report.queryset_acc_recorded_count|default_if_zero:"-"}} |
diff --git a/analysis/templates/analysis/reports/includes/old_data/card_old_interventions.html b/analysis/templates/analysis/reports/includes/old_data/card_old_interventions.html
index a25a5712..d0dc356f 100644
--- a/analysis/templates/analysis/reports/includes/old_data/card_old_interventions.html
+++ b/analysis/templates/analysis/reports/includes/old_data/card_old_interventions.html
@@ -10,7 +10,7 @@
{% fa5_icon 'pencil-ruler' %}
{% trans 'Old interventions' %}
-
{% trans 'Before' %} 16.06.2018
+
{% trans 'Binding date before' %} 16.06.2018
diff --git a/analysis/utils/excel/excel.py b/analysis/utils/excel/excel.py
index 611f6a0c..818da7fd 100644
--- a/analysis/utils/excel/excel.py
+++ b/analysis/utils/excel/excel.py
@@ -108,7 +108,7 @@ class TempExcelFile:
for _iter_entry in _iter_obj:
j = 0
for _iter_attr in _attrs:
- _new_cell = ws.cell(start_cell.row + i, start_cell.column + j, getattr(_iter_entry, _iter_attr))
+ _new_cell = ws.cell(start_cell.row + i, start_cell.column + j, _iter_entry.get(_iter_attr, "MISSING"))
_new_cell.border = border_style
j += 1
i += 1
diff --git a/analysis/utils/excel/excel_report.xlsx b/analysis/utils/excel/excel_report.xlsx
index 72cf1295..041dfcf3 100644
Binary files a/analysis/utils/excel/excel_report.xlsx and b/analysis/utils/excel/excel_report.xlsx differ
diff --git a/analysis/utils/report.py b/analysis/utils/report.py
index 996f87b5..63a06b84 100644
--- a/analysis/utils/report.py
+++ b/analysis/utils/report.py
@@ -137,22 +137,36 @@ class TimespanReport:
).order_by(
"long_name"
)
- # Fetch all law ids which are used by any .legal object of an intervention object
- intervention_laws_total = self.queryset.values_list("legal__laws__id")
- intervention_laws_checked = self.queryset.filter(checked__isnull=False).values_list("legal__laws__id")
- intervention_laws_recorded = self.queryset.filter(recorded__isnull=False).values_list(
- "legal__laws__id")
- # Count how often which law id appears in the above list, return only the long_name of the law and the resulting
- # count (here 'num'). This is for keeping the db fetch as small as possible
- # Compute the sum for total, checked and recorded
- self.evaluated_laws = laws.annotate(
- num=Count("id", filter=Q(id__in=intervention_laws_total)),
- num_checked=Count("id", filter=Q(id__in=intervention_laws_checked)),
- num_recorded=Count("id", filter=Q(id__in=intervention_laws_recorded)),
- ).values_list("short_name", "long_name", "num_checked", "num_recorded", "num", named=True)
- self.law_sum = self.evaluated_laws.aggregate(sum_num=Sum("num"))["sum_num"]
- self.law_sum_checked = self.evaluated_laws.aggregate(sum_num_checked=Sum("num_checked"))["sum_num_checked"]
- self.law_sum_recorded = self.evaluated_laws.aggregate(sum_num_recorded=Sum("num_recorded"))["sum_num_recorded"]
+
+ evaluated_laws = []
+ sum_num_checked = 0
+ sum_num_recorded = 0
+ sum_num = 0
+ for law in laws:
+ num = self.queryset.filter(
+ legal__laws__atom_id=law.atom_id
+ ).count()
+ num_checked = self.queryset_checked.filter(
+ legal__laws__atom_id=law.atom_id
+ ).count()
+ num_recorded = self.queryset_recorded.filter(
+ legal__laws__atom_id=law.atom_id
+ ).count()
+ evaluated_laws.append({
+ "short_name": law.short_name,
+ "long_name": law.long_name,
+ "num": num,
+ "num_checked": num_checked,
+ "num_recorded": num_recorded,
+ })
+ sum_num += num
+ sum_num_checked += num_checked
+ sum_num_recorded += num_recorded
+
+ self.evaluated_laws = evaluated_laws
+ self.law_sum = sum_num
+ self.law_sum_checked = sum_num_checked
+ self.law_sum_recorded = sum_num_recorded
def _evaluate_compensations(self):
""" Analyzes the types of compensation distribution
diff --git a/api/tests/v1/update/test_api_update.py b/api/tests/v1/update/test_api_update.py
index ff867e69..ffaa6870 100644
--- a/api/tests/v1/update/test_api_update.py
+++ b/api/tests/v1/update/test_api_update.py
@@ -12,6 +12,7 @@ from django.contrib.gis import geos
from django.urls import reverse
from api.tests.v1.share.test_api_sharing import BaseAPIV1TestCase
+from konova.sub_settings.lanis_settings import DEFAULT_SRID_RLP
class APIV1UpdateTestCase(BaseAPIV1TestCase):
@@ -63,6 +64,7 @@ class APIV1UpdateTestCase(BaseAPIV1TestCase):
put_props = put_body["properties"]
put_geom = geos.fromstr(json.dumps(put_body))
+ put_geom.transform(DEFAULT_SRID_RLP)
self.assertEqual(put_geom, self.intervention.geometry.geom)
self.assertEqual(put_props["title"], self.intervention.title)
self.assertNotEqual(modified_on, self.intervention.modified)
@@ -92,6 +94,7 @@ class APIV1UpdateTestCase(BaseAPIV1TestCase):
put_props = put_body["properties"]
put_geom = geos.fromstr(json.dumps(put_body))
+ put_geom.transform(DEFAULT_SRID_RLP)
self.assertEqual(put_geom, self.compensation.geometry.geom)
self.assertEqual(put_props["title"], self.compensation.title)
self.assertNotEqual(modified_on, self.compensation.modified)
@@ -121,6 +124,7 @@ class APIV1UpdateTestCase(BaseAPIV1TestCase):
put_props = put_body["properties"]
put_geom = geos.fromstr(json.dumps(put_body))
+ put_geom.transform(DEFAULT_SRID_RLP)
self.assertEqual(put_geom, self.eco_account.geometry.geom)
self.assertEqual(put_props["title"], self.eco_account.title)
self.assertNotEqual(modified_on, self.eco_account.modified)
@@ -152,6 +156,7 @@ class APIV1UpdateTestCase(BaseAPIV1TestCase):
put_props = put_body["properties"]
put_geom = geos.fromstr(json.dumps(put_body))
+ put_geom.transform(DEFAULT_SRID_RLP)
self.assertEqual(put_geom, self.ema.geometry.geom)
self.assertEqual(put_props["title"], self.ema.title)
self.assertNotEqual(modified_on, self.ema.modified)
diff --git a/api/utils/serializer/serializer.py b/api/utils/serializer/serializer.py
index 8d618e44..e0511b85 100644
--- a/api/utils/serializer/serializer.py
+++ b/api/utils/serializer/serializer.py
@@ -12,6 +12,7 @@ from django.contrib.gis import geos
from django.contrib.gis.geos import GEOSGeometry
from django.core.paginator import Paginator
+from konova.sub_settings.lanis_settings import DEFAULT_SRID_RLP
from konova.utils.message_templates import DATA_UNSHARED
@@ -133,6 +134,8 @@ class AbstractModelAPISerializer:
if isinstance(geojson, dict):
geojson = json.dumps(geojson)
geometry = geos.fromstr(geojson)
+ if geometry.srid != DEFAULT_SRID_RLP:
+ geometry.transform(DEFAULT_SRID_RLP)
if geometry.empty:
geometry = None
return geometry
diff --git a/compensation/templates/compensation/detail/compensation/view.html b/compensation/templates/compensation/detail/compensation/view.html
index 5a125ccd..759f7600 100644
--- a/compensation/templates/compensation/detail/compensation/view.html
+++ b/compensation/templates/compensation/detail/compensation/view.html
@@ -123,9 +123,16 @@
{% include 'user/includes/team_data_modal_button.html' %}
{% endfor %}
- {% for user in obj.intervention.users.all %}
- {% include 'user/includes/contact_modal_button.html' %}
- {% endfor %}
+ {% if has_access %}
+ {% for user in obj.users.all %}
+ {% include 'user/includes/contact_modal_button.html' %}
+ {% endfor %}
+ {% else %}
+
+ {% fa5_icon 'eye-slash' %}
+ {{obj.users.count}} {% trans 'other users' %}
+
+ {% endif %}
diff --git a/compensation/templates/compensation/detail/eco_account/view.html b/compensation/templates/compensation/detail/eco_account/view.html
index 432315a8..c5bd2c54 100644
--- a/compensation/templates/compensation/detail/eco_account/view.html
+++ b/compensation/templates/compensation/detail/eco_account/view.html
@@ -101,9 +101,16 @@
{% include 'user/includes/team_data_modal_button.html' %}
{% endfor %}
- {% for user in obj.users.all %}
- {% include 'user/includes/contact_modal_button.html' %}
- {% endfor %}
+ {% if has_access %}
+ {% for user in obj.users.all %}
+ {% include 'user/includes/contact_modal_button.html' %}
+ {% endfor %}
+ {% else %}
+
+ {% fa5_icon 'eye-slash' %}
+ {{obj.users.count}} {% trans 'other users' %}
+
+ {% endif %}
diff --git a/docker-compose.yml b/docker-compose.yml
deleted file mode 100644
index c7bd3f4b..00000000
--- a/docker-compose.yml
+++ /dev/null
@@ -1,34 +0,0 @@
-version: '3.3'
-
-services:
- konova:
- external_links:
- - postgis:db
- - arnova-nginx-server:arnova
- build: .
- container_name: "konova-docker"
- command: ./docker-entrypoint.sh
- restart: always
- volumes:
- - .:/konova
- - /data/apps/konova/uploaded_files:/konova_uploaded_files
- ports:
- - "1337:80"
- environment:
- - POSTGRES_NAME=konova
- - POSTGRES_PORT=5432
- - POSTGRES_PASSWORD=CHANGE_ME
- - POSTGRES_USER=konova
- - POSTGRES_HOST=db
- - REDIS_HOST=localhost
- - SSO_HOST=CHANGE_ME_TO_SSO_HOST_URL
- - SMTP_HOST=172.17.0.1
- - SMTP_PORT=25
- - SMTP_REAL_REPLY_MAIL=ksp-servicestelle@sgdnord.rlp.de
-
-# Instead of an own, new network, we need to connect to the existing one, which is provided by the postgis container
-# NOTE: THIS NETWORK MUST EXIST
-networks:
- default:
- external:
- name: postgis_nat_it_backend
diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh
deleted file mode 100755
index e9f2cea2..00000000
--- a/docker-entrypoint.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/bash
-# Start all needed services once the container is fired up!
-service nginx start
-service redis-server start
-celery -A konova worker --detach
-# Rule of thumb: (2*CPU)+1 as worker_num -> Use 5 as default (matches a dual core)
-gunicorn --workers=5 konova.wsgi:application --bind=0.0.0.0:8000
\ No newline at end of file
diff --git a/ema/templates/ema/detail/view.html b/ema/templates/ema/detail/view.html
index 16f31378..3e0d701b 100644
--- a/ema/templates/ema/detail/view.html
+++ b/ema/templates/ema/detail/view.html
@@ -87,9 +87,16 @@
{% include 'user/includes/team_data_modal_button.html' %}
{% endfor %}
- {% for user in obj.user.all %}
- {% include 'user/includes/contact_modal_button.html' %}
- {% endfor %}
+ {% if has_access %}
+ {% for user in obj.users.all %}
+ {% include 'user/includes/contact_modal_button.html' %}
+ {% endfor %}
+ {% else %}
+
+ {% fa5_icon 'eye-slash' %}
+ {{obj.users.count}} {% trans 'other users' %}
+
+ {% endif %}
diff --git a/intervention/templates/intervention/detail/view.html b/intervention/templates/intervention/detail/view.html
index 1a596bb0..8a7799d3 100644
--- a/intervention/templates/intervention/detail/view.html
+++ b/intervention/templates/intervention/detail/view.html
@@ -129,9 +129,16 @@
{% include 'user/includes/team_data_modal_button.html' %}
{% endfor %}
- {% for user in obj.users.all %}
- {% include 'user/includes/contact_modal_button.html' %}
- {% endfor %}
+ {% if has_access %}
+ {% for user in obj.users.all %}
+ {% include 'user/includes/contact_modal_button.html' %}
+ {% endfor %}
+ {% else %}
+
+ {% fa5_icon 'eye-slash' %}
+ {{obj.users.count}} {% trans 'other users' %}
+
+ {% endif %}
diff --git a/konova/celery.py b/konova/celery.py
index ab06cf7c..478f2844 100644
--- a/konova/celery.py
+++ b/konova/celery.py
@@ -17,7 +17,7 @@ app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
# Declare redis as broker
-app.conf.broker_url = f"redis://{os.environ.get('REDIS_HOST')}:6379/0"
+app.conf.broker_url = 'redis://localhost:6379/0'
@app.task(bind=True)
diff --git a/konova/contexts.py b/konova/contexts.py
index 49357312..70cb1aac 100644
--- a/konova/contexts.py
+++ b/konova/contexts.py
@@ -7,7 +7,8 @@ Created on: 16.11.20
"""
from django.http import HttpRequest
-from konova.sub_settings.context_settings import BASE_TITLE, HELP_LINK, BASE_FRONTEND_TITLE, TAB_TITLE_IDENTIFIER
+from konova.sub_settings.context_settings import BASE_TITLE, HELP_LINK, BASE_FRONTEND_TITLE, TAB_TITLE_IDENTIFIER, \
+ IMPRESSUM_LINK
from konova.sub_settings.django_settings import EMAIL_REPLY_TO
@@ -25,6 +26,7 @@ class BaseContext:
"user": request.user,
"current_role": None,
"help_link": HELP_LINK,
+ "impressum_link": IMPRESSUM_LINK,
"CONTACT_MAIL": EMAIL_REPLY_TO,
}
diff --git a/konova/forms.py b/konova/forms.py
index 0a341e0c..ced2bf10 100644
--- a/konova/forms.py
+++ b/konova/forms.py
@@ -369,14 +369,14 @@ class SimpleGeomForm(BaseForm):
if self.instance is None or self.instance.geometry is None:
raise LookupError
geometry = self.instance.geometry
- geometry.geom = self.cleaned_data.get("geom", MultiPolygon(srid=DEFAULT_SRID))
+ geometry.geom = self.cleaned_data.get("geom", MultiPolygon(srid=DEFAULT_SRID_RLP))
geometry.modified = action
geometry.save()
except LookupError:
# No geometry or linked instance holding a geometry exist --> create a new one!
geometry = Geometry.objects.create(
- geom=self.cleaned_data.get("geom", MultiPolygon(srid=DEFAULT_SRID)),
+ geom=self.cleaned_data.get("geom", MultiPolygon(srid=DEFAULT_SRID_RLP)),
created=action,
)
# Start the parcel update procedure in a background process
diff --git a/konova/migrations/0012_auto_20220713_0801.py b/konova/migrations/0012_auto_20220713_0801.py
new file mode 100644
index 00000000..bd6e7645
--- /dev/null
+++ b/konova/migrations/0012_auto_20220713_0801.py
@@ -0,0 +1,35 @@
+# Generated by Django 3.1.3 on 2022-07-13 06:01
+import django
+from django.db import migrations
+
+from konova.sub_settings.lanis_settings import DEFAULT_SRID_RLP
+
+
+def migrate_geometry_srs(apps, schema_editor):
+ Geometry = apps.get_model("konova", "Geometry")
+ all_geoms = Geometry.objects.all()
+
+ # Transform all geoms and store in new geom field
+ for geometry in all_geoms:
+ geom = geometry.geom
+ if geom is None:
+ continue
+ geom.transform(DEFAULT_SRID_RLP)
+ geometry.geom_tmp = geom
+ geometry.save()
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('konova', '0011_auto_20220420_1101'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name="geometry",
+ name="geom_tmp",
+ field=django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=DEFAULT_SRID_RLP)
+ ),
+ migrations.RunPython(migrate_geometry_srs),
+ ]
diff --git a/konova/migrations/0013_auto_20220713_0814.py b/konova/migrations/0013_auto_20220713_0814.py
new file mode 100644
index 00000000..c0af268e
--- /dev/null
+++ b/konova/migrations/0013_auto_20220713_0814.py
@@ -0,0 +1,22 @@
+# Generated by Django 3.1.3 on 2022-07-13 06:14
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('konova', '0012_auto_20220713_0801'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name="geometry",
+ name="geom"
+ ),
+ migrations.RenameField(
+ model_name="geometry",
+ old_name="geom_tmp",
+ new_name="geom"
+ ),
+ ]
diff --git a/konova/models/geometry.py b/konova/models/geometry.py
index b996feb7..e55082ac 100644
--- a/konova/models/geometry.py
+++ b/konova/models/geometry.py
@@ -21,8 +21,7 @@ class Geometry(BaseResource):
"""
Geometry model
"""
- from konova.settings import DEFAULT_SRID
- geom = MultiPolygonField(null=True, blank=True, srid=DEFAULT_SRID)
+ geom = MultiPolygonField(null=True, blank=True, srid=DEFAULT_SRID_RLP)
def __str__(self):
return str(self.id)
diff --git a/konova/sub_settings/context_settings.py b/konova/sub_settings/context_settings.py
index c28b744c..d4b1821c 100644
--- a/konova/sub_settings/context_settings.py
+++ b/konova/sub_settings/context_settings.py
@@ -11,3 +11,4 @@ BASE_TITLE = "KSP - Kompensationsverzeichnis Service Portal"
BASE_FRONTEND_TITLE = "Kompensationsverzeichnis Service Portal"
TAB_TITLE_IDENTIFIER = "tab_title"
HELP_LINK = "https://dienste.naturschutz.rlp.de/doku/doku.php?id=ksp:start"
+IMPRESSUM_LINK = "https://naturschutz.rlp.de/index.php?q=impressum"
diff --git a/konova/sub_settings/django_settings.py b/konova/sub_settings/django_settings.py
index 54c35bee..746df289 100644
--- a/konova/sub_settings/django_settings.py
+++ b/konova/sub_settings/django_settings.py
@@ -125,11 +125,10 @@ WSGI_APPLICATION = 'konova.wsgi.application'
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
- 'NAME': os.environ.get('POSTGRES_NAME'),
- 'USER': os.environ.get('POSTGRES_USER'),
- 'HOST': os.environ.get('POSTGRES_HOST'),
- 'PASSWORD': os.environ.get('POSTGRES_PASSWORD'),
- 'PORT': os.environ.get('POSTGRES_PORT'),
+ 'NAME': 'konova',
+ 'USER': 'postgres',
+ 'HOST': '127.0.0.1',
+ 'PORT': '5432',
}
}
@@ -219,14 +218,19 @@ DEBUG_TOOLBAR_CONFIG = {
}
# EMAIL (see https://docs.djangoproject.com/en/dev/topics/email/)
-if DEBUG:
- # ONLY FOR DEVELOPMENT NEEDED
- EMAIL_BACKEND = 'django.core.mail.backends.filebased.EmailBackend'
- EMAIL_FILE_PATH = '/tmp/app-messages'
-DEFAULT_FROM_EMAIL = "no-reply@ksp.de" # The default email address for the 'from' element
+# CHANGE_ME !!! ONLY FOR DEVELOPMENT !!!
+if DEBUG:
+ EMAIL_BACKEND = 'django.core.mail.backends.filebased.EmailBackend'
+ EMAIL_FILE_PATH = '/tmp/app-messages' # change this to a proper location
+
+DEFAULT_FROM_EMAIL = "service@ksp.de" # The default email address for the 'from' element
SERVER_EMAIL = DEFAULT_FROM_EMAIL # The default email sender address, which is used by Django to send errors via mail
-EMAIL_HOST = os.environ.get('SMTP_HOST')
-EMAIL_REPLY_TO = os.environ.get('SMTP_REAL_REPLY_MAIL')
+EMAIL_HOST = "localhost"
+EMAIL_REPLY_TO = "ksp-servicestelle@sgdnord.rlp.de"
SUPPORT_MAIL_RECIPIENT = EMAIL_REPLY_TO
-EMAIL_PORT = os.environ.get('SMTP_PORT')
+EMAIL_PORT = "25"
+#EMAIL_HOST_USER = ""
+#EMAIL_HOST_PASSWORD = ""
+EMAIL_USE_TLS = False
+EMAIL_USE_SSL = False
diff --git a/konova/sub_settings/sso_settings.py b/konova/sub_settings/sso_settings.py
index 390ed403..20417f04 100644
--- a/konova/sub_settings/sso_settings.py
+++ b/konova/sub_settings/sso_settings.py
@@ -7,9 +7,7 @@ Created on: 31.01.22
"""
# SSO settings
-import os
-
-SSO_SERVER_BASE = f"http://{os.environ.get('SSO_HOST')}/"
+SSO_SERVER_BASE = "http://127.0.0.1:8000/"
SSO_SERVER = f"{SSO_SERVER_BASE}sso/"
SSO_PRIVATE_KEY = "QuziFeih7U8DZvQQ1riPv2MXz0ZABupHED9wjoqZAqeMQaqkqTfxJDRXgSIyASwJ"
-SSO_PUBLIC_KEY = "AGGK7E8eT5X5u2GD38ygGG3GpAefmIldJiiWW7gldRPqCG1CzmUfGdvPSGDbEY2n"
+SSO_PUBLIC_KEY = "AGGK7E8eT5X5u2GD38ygGG3GpAefmIldJiiWW7gldRPqCG1CzmUfGdvPSGDbEY2n"
\ No newline at end of file
diff --git a/konova/tests/test_views.py b/konova/tests/test_views.py
index 73029f96..4037c6bf 100644
--- a/konova/tests/test_views.py
+++ b/konova/tests/test_views.py
@@ -430,15 +430,13 @@ class BaseTestCase(TestCase):
self.assertTrue(True)
return
+ tolerance = 0.001
if geom1.srid != geom2.srid:
- tolerance = 0.001
# Due to prior possible transformation of any of these geometries, we need to make sure there exists a
# transformation from one coordinate system into the other, which is valid
- geom1_t = geom1.transform(geom2.srid, clone=True)
- geom2_t = geom2.transform(geom1.srid, clone=True)
- self.assertTrue(geom1_t.equals_exact(geom2, tolerance) or geom2_t.equals_exact(geom1, tolerance))
- else:
- self.assertTrue(geom1.equals(geom2))
+ geom1.transform(geom2.srid)
+ geom2.transform(geom1.srid)
+ self.assertTrue(geom1.equals_exact(geom2, tolerance) or geom2.equals_exact(geom1, tolerance))
class BaseViewTestCase(BaseTestCase):
diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo
index 885f0b9d..7072e4c2 100644
Binary files a/locale/de/LC_MESSAGES/django.mo and b/locale/de/LC_MESSAGES/django.mo differ
diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po
index 93238630..c62c2bd3 100644
--- a/locale/de/LC_MESSAGES/django.po
+++ b/locale/de/LC_MESSAGES/django.po
@@ -26,7 +26,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-31 13:05+0200\n"
+"POT-Creation-Date: 2022-06-27 14:23+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -40,11 +40,19 @@ msgstr ""
msgid "From"
msgstr "Vom"
-#: analysis/forms.py:36
+#: analysis/forms.py:25
+msgid "Entries created from..."
+msgstr "Einträge erstellt seit..."
+
+#: analysis/forms.py:37
msgid "To"
msgstr "Bis"
-#: analysis/forms.py:47 compensation/forms/forms.py:77
+#: analysis/forms.py:38
+msgid "Entries created until..."
+msgstr "Einträge erstellt bis..."
+
+#: analysis/forms.py:49 compensation/forms/forms.py:77
#: compensation/templates/compensation/detail/eco_account/view.html:59
#: compensation/templates/compensation/report/eco_account/report.html:16
#: compensation/utils/quality.py:100 ema/templates/ema/detail/view.html:49
@@ -56,11 +64,11 @@ msgstr "Bis"
msgid "Conservation office"
msgstr "Eintragungsstelle"
-#: analysis/forms.py:49 compensation/forms/forms.py:79
+#: analysis/forms.py:51 compensation/forms/forms.py:79
msgid "Select the responsible office"
msgstr "Verantwortliche Stelle"
-#: analysis/forms.py:58 compensation/forms/forms.py:88
+#: analysis/forms.py:60 compensation/forms/forms.py:88
#: compensation/forms/forms.py:118 compensation/forms/forms.py:199
#: intervention/forms/forms.py:64 intervention/forms/forms.py:81
#: intervention/forms/forms.py:97 intervention/forms/forms.py:113
@@ -69,15 +77,15 @@ msgstr "Verantwortliche Stelle"
msgid "Click for selection"
msgstr "Auswählen..."
-#: analysis/forms.py:65
+#: analysis/forms.py:67
msgid "Generate report"
msgstr "Bericht generieren"
-#: analysis/forms.py:66
+#: analysis/forms.py:68
msgid "Select a timespan and the desired conservation office"
msgstr "Wählen Sie die Zeitspanne und die gewünschte Eintragungsstelle"
-#: analysis/forms.py:69 konova/forms.py:227
+#: analysis/forms.py:71 konova/forms.py:227
msgid "Continue"
msgstr "Weiter"
@@ -135,9 +143,29 @@ msgid "Area of responsibility"
msgstr "Zuständigkeitsbereich"
#: analysis/templates/analysis/reports/includes/compensation/amount.html:18
+#: analysis/templates/analysis/reports/includes/compensation/amount.html:47
+#: analysis/templates/analysis/reports/includes/eco_account/amount.html:13
+#: analysis/templates/analysis/reports/includes/eco_account/deductions.html:13
+#: analysis/templates/analysis/reports/includes/eco_account/deductions.html:14
#: analysis/templates/analysis/reports/includes/intervention/amount.html:17
#: analysis/templates/analysis/reports/includes/intervention/compensated_by.html:8
#: analysis/templates/analysis/reports/includes/intervention/laws.html:17
+#: analysis/templates/analysis/reports/includes/intervention/laws.html:43
+#: analysis/templates/analysis/reports/includes/old_data/amount.html:18
+#: konova/templates/konova/includes/quickstart/compensations.html:16
+#: konova/templates/konova/includes/quickstart/ecoaccounts.html:16
+#: konova/templates/konova/includes/quickstart/interventions.html:16
+msgid "Total"
+msgstr "Insgesamt"
+
+#: analysis/templates/analysis/reports/includes/compensation/amount.html:19
+msgid "Number single areas"
+msgstr "Einzelflächen"
+
+#: analysis/templates/analysis/reports/includes/compensation/amount.html:20
+#: analysis/templates/analysis/reports/includes/intervention/amount.html:18
+#: analysis/templates/analysis/reports/includes/intervention/compensated_by.html:9
+#: analysis/templates/analysis/reports/includes/intervention/laws.html:20
#: compensation/tables.py:38
#: compensation/templates/compensation/detail/compensation/view.html:74
#: intervention/tables.py:38
@@ -146,14 +174,14 @@ msgstr "Zuständigkeitsbereich"
msgid "Checked"
msgstr "Geprüft"
-#: analysis/templates/analysis/reports/includes/compensation/amount.html:19
-#: analysis/templates/analysis/reports/includes/eco_account/amount.html:13
-#: analysis/templates/analysis/reports/includes/eco_account/deductions.html:8
-#: analysis/templates/analysis/reports/includes/eco_account/deductions.html:9
-#: analysis/templates/analysis/reports/includes/intervention/amount.html:18
-#: analysis/templates/analysis/reports/includes/intervention/compensated_by.html:9
-#: analysis/templates/analysis/reports/includes/intervention/laws.html:20
-#: analysis/templates/analysis/reports/includes/old_data/amount.html:18
+#: analysis/templates/analysis/reports/includes/compensation/amount.html:21
+#: analysis/templates/analysis/reports/includes/eco_account/amount.html:14
+#: analysis/templates/analysis/reports/includes/eco_account/deductions.html:15
+#: analysis/templates/analysis/reports/includes/eco_account/deductions.html:16
+#: analysis/templates/analysis/reports/includes/intervention/amount.html:19
+#: analysis/templates/analysis/reports/includes/intervention/compensated_by.html:10
+#: analysis/templates/analysis/reports/includes/intervention/laws.html:23
+#: analysis/templates/analysis/reports/includes/old_data/amount.html:19
#: compensation/tables.py:44 compensation/tables.py:219
#: compensation/templates/compensation/detail/compensation/view.html:93
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:31
@@ -165,26 +193,6 @@ msgstr "Geprüft"
msgid "Recorded"
msgstr "Verzeichnet"
-#: analysis/templates/analysis/reports/includes/compensation/amount.html:20
-msgid "Number single areas"
-msgstr "Einzelflächen"
-
-#: analysis/templates/analysis/reports/includes/compensation/amount.html:21
-#: analysis/templates/analysis/reports/includes/compensation/amount.html:47
-#: analysis/templates/analysis/reports/includes/eco_account/amount.html:14
-#: analysis/templates/analysis/reports/includes/eco_account/deductions.html:10
-#: analysis/templates/analysis/reports/includes/eco_account/deductions.html:11
-#: analysis/templates/analysis/reports/includes/intervention/amount.html:19
-#: analysis/templates/analysis/reports/includes/intervention/compensated_by.html:10
-#: analysis/templates/analysis/reports/includes/intervention/laws.html:23
-#: analysis/templates/analysis/reports/includes/intervention/laws.html:43
-#: analysis/templates/analysis/reports/includes/old_data/amount.html:19
-#: konova/templates/konova/includes/quickstart/compensations.html:16
-#: konova/templates/konova/includes/quickstart/ecoaccounts.html:16
-#: konova/templates/konova/includes/quickstart/interventions.html:16
-msgid "Total"
-msgstr "Insgesamt"
-
#: analysis/templates/analysis/reports/includes/compensation/amount.html:26
msgid "Conservation office by law"
msgstr "Naturschutzbehörde (§17 Abs.3 BNatSchG)"
@@ -213,8 +221,18 @@ msgstr "Ökokonten"
msgid "Deductions"
msgstr "Abbuchungen"
-#: analysis/templates/analysis/reports/includes/eco_account/deductions.html:9
-#: analysis/templates/analysis/reports/includes/eco_account/deductions.html:11
+#: analysis/templates/analysis/reports/includes/eco_account/deductions.html:5
+msgid ""
+"\n"
+" Recorded = Counts the deductions whose interventions have been recorded\n"
+" "
+msgstr ""
+"\n"
+"Verzeichnet = Anzahl der Abbuchungen welche zu bereits verzeichneten "
+"Eingriffen gehören "
+
+#: analysis/templates/analysis/reports/includes/eco_account/deductions.html:14
+#: analysis/templates/analysis/reports/includes/eco_account/deductions.html:16
#: compensation/forms/modalForms.py:187
#: compensation/templates/compensation/detail/compensation/includes/states-after.html:36
#: compensation/templates/compensation/detail/compensation/includes/states-before.html:36
@@ -307,8 +325,8 @@ msgid "Old interventions"
msgstr "Altfälle"
#: analysis/templates/analysis/reports/includes/old_data/card_old_interventions.html:13
-msgid "Before"
-msgstr "Vor"
+msgid "Binding date before"
+msgstr "Bestandskraft- bzw. Rechtskraftdatum vor"
#: compensation/filters.py:122
msgid "Show only unrecorded"
@@ -415,6 +433,7 @@ msgid "Company Mustermann"
msgstr "Firma Mustermann"
#: compensation/forms/forms.py:143
+#: compensation/templates/compensation/report/compensation/report.html:34
msgid "Is CEF"
msgstr "Ist CEF-Maßnahme"
@@ -423,6 +442,7 @@ msgid "Optionally: Whether this compensation is a CEF compensation?"
msgstr "Optional: Handelt es sich um eine CEF-Maßnahme?"
#: compensation/forms/forms.py:156
+#: compensation/templates/compensation/report/compensation/report.html:44
msgid "Is coherence keeping"
msgstr "Ist Kohärenzsicherungsmaßnahme"
@@ -434,7 +454,10 @@ msgstr "Optional: Handelt es sich um eine Kohärenzsicherungsmaßnahme?"
#: compensation/forms/forms.py:169
#: compensation/templates/compensation/detail/compensation/view.html:44
#: compensation/templates/compensation/detail/eco_account/view.html:75
+#: compensation/templates/compensation/report/compensation/report.html:24
+#: compensation/templates/compensation/report/eco_account/report.html:24
#: ema/templates/ema/detail/view.html:61
+#: ema/templates/ema/report/report.html:24
msgid "Is PIK"
msgstr "Ist PIK Maßnahme"
@@ -673,14 +696,14 @@ msgstr ""
msgid "Pieces"
msgstr "Stück"
-#: compensation/models/eco_account.py:56
+#: compensation/models/eco_account.py:55
msgid ""
"Deductable surface can not be larger than existing surfaces in after states"
msgstr ""
"Die abbuchbare Fläche darf die Gesamtfläche der Zielzustände nicht "
"überschreiten"
-#: compensation/models/eco_account.py:63
+#: compensation/models/eco_account.py:62
msgid ""
"Deductable surface can not be smaller than the sum of already existing "
"deductions. Please contact the responsible users for the deductions!"
@@ -972,7 +995,12 @@ msgstr "Fehlende Flächenmengen laut Zielzustand: "
#: compensation/templates/compensation/detail/compensation/view.html:57
#: compensation/templates/compensation/detail/compensation/view.html:67
#: compensation/templates/compensation/detail/eco_account/view.html:78
+#: compensation/templates/compensation/report/compensation/report.html:27
+#: compensation/templates/compensation/report/compensation/report.html:37
+#: compensation/templates/compensation/report/compensation/report.html:47
+#: compensation/templates/compensation/report/eco_account/report.html:27
#: ema/templates/ema/detail/view.html:64
+#: ema/templates/ema/report/report.html:27
#: venv/lib/python3.7/site-packages/django/forms/widgets.py:710
msgid "Yes"
msgstr "Ja"
@@ -981,7 +1009,12 @@ msgstr "Ja"
#: compensation/templates/compensation/detail/compensation/view.html:59
#: compensation/templates/compensation/detail/compensation/view.html:69
#: compensation/templates/compensation/detail/eco_account/view.html:80
+#: compensation/templates/compensation/report/compensation/report.html:29
+#: compensation/templates/compensation/report/compensation/report.html:39
+#: compensation/templates/compensation/report/compensation/report.html:49
+#: compensation/templates/compensation/report/eco_account/report.html:29
#: ema/templates/ema/detail/view.html:66
+#: ema/templates/ema/report/report.html:29
#: venv/lib/python3.7/site-packages/django/forms/widgets.py:711
msgid "No"
msgstr "Nein"
@@ -1018,10 +1051,10 @@ msgstr "Verzeichnet am"
#: compensation/templates/compensation/detail/compensation/view.html:107
#: compensation/templates/compensation/detail/eco_account/view.html:85
-#: compensation/templates/compensation/report/compensation/report.html:24
-#: compensation/templates/compensation/report/eco_account/report.html:37
+#: compensation/templates/compensation/report/compensation/report.html:54
+#: compensation/templates/compensation/report/eco_account/report.html:47
#: ema/templates/ema/detail/view.html:71
-#: ema/templates/ema/report/report.html:24
+#: ema/templates/ema/report/report.html:34
#: intervention/templates/intervention/detail/view.html:113
#: intervention/templates/intervention/report/report.html:87
msgid "Last modified"
@@ -1123,11 +1156,11 @@ msgstr "Maßnahmenträger"
msgid "Report"
msgstr "Bericht"
-#: compensation/templates/compensation/report/eco_account/report.html:24
+#: compensation/templates/compensation/report/eco_account/report.html:34
msgid "Deductions for"
msgstr "Abbuchungen für"
-#: compensation/templates/compensation/report/eco_account/report.html:32
+#: compensation/templates/compensation/report/eco_account/report.html:42
#: intervention/templates/intervention/report/report.html:53
#: intervention/templates/intervention/report/report.html:74
msgid "None"
@@ -1516,6 +1549,18 @@ msgstr "Eingriffsverursacher"
msgid "Exists"
msgstr "vorhanden"
+#: intervention/templates/intervention/detail/view.html:138
+msgid ""
+"The data must be shared with you, if you want to see which other users have "
+"shared access as well."
+msgstr ""
+"Die Daten müssen für Sie freigegeben sein, damit Sie sehen können welche weiteren Nutzern "
+"ebenfalls Zugriff hierauf haben."
+
+#: intervention/templates/intervention/detail/view.html:140
+msgid "other users"
+msgstr "weitere Nutzer"
+
#: intervention/templates/intervention/report/report.html:58
msgid "Deductions of eco-accounts"
msgstr "Abbuchungen von Ökokonten"
@@ -1838,7 +1883,7 @@ msgstr "In Zwischenablage kopiert"
#: konova/templates/konova/widgets/tree/checkbox/checkbox-tree-select.html:4
#: konova/templates/konova/widgets/tree/radio/radio-tree-select.html:4
-#: templates/generic_index.html:56
+#: templates/generic_index.html:58
msgid "Search"
msgstr "Suchen"
@@ -2430,31 +2475,31 @@ msgstr ""
msgid "Fields with * are required."
msgstr "* sind Pflichtfelder."
-#: templates/generic_index.html:39
+#: templates/generic_index.html:41
msgid "New entry"
msgstr "Neuer Eintrag"
-#: templates/generic_index.html:41 user/templates/user/team/index.html:22
+#: templates/generic_index.html:43 user/templates/user/team/index.html:22
msgid "New"
msgstr "Neu"
-#: templates/generic_index.html:56
+#: templates/generic_index.html:58
msgid "Search for keywords"
msgstr "Nach Schlagwörtern suchen"
-#: templates/generic_index.html:57
+#: templates/generic_index.html:59
msgid "Start search"
msgstr "Starte Suche"
-#: templates/generic_index.html:69
+#: templates/generic_index.html:71
msgid "Results per page"
msgstr "Treffer pro Seite"
-#: templates/generic_index.html:93 templates/generic_index.html:118
+#: templates/generic_index.html:95 templates/generic_index.html:120
msgid "Filter"
msgstr ""
-#: templates/generic_index.html:120
+#: templates/generic_index.html:122
msgid "Apply filter"
msgstr "Filter anwenden"
@@ -4300,6 +4345,9 @@ msgstr ""
msgid "Unable to connect to qpid with SASL mechanism %s"
msgstr ""
+#~ msgid "Before"
+#~ msgstr "Vor"
+
#~ msgid "Groups"
#~ msgstr "Gruppen"
diff --git a/nginx.conf b/nginx.conf
deleted file mode 100644
index 373393a2..00000000
--- a/nginx.conf
+++ /dev/null
@@ -1,20 +0,0 @@
-upstream konova {
- server localhost:8000;
-}
-
-server {
-
- listen 80;
-
- location / {
- proxy_pass http://konova;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header Host $host;
- proxy_redirect off;
- }
-
- location /static/ {
- alias /konova/static/;
- }
-
-}
diff --git a/requirements.txt b/requirements.txt
index 15a8d172..79a479ed 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -48,5 +48,4 @@ wcwidth==0.2.5
webservices==0.7
wrapt==1.13.3
xmltodict==0.12.0
-zipp==3.4.1
-gunicorn==20.1.0
\ No newline at end of file
+zipp==3.4.1
\ No newline at end of file
diff --git a/templates/footer.html b/templates/footer.html
index af8fd949..3c26c44d 100644
--- a/templates/footer.html
+++ b/templates/footer.html
@@ -6,7 +6,7 @@
{% trans 'Help' %}