From a955e9f564df34af3c1811ae9ca3748d31a1a653 Mon Sep 17 00:00:00 2001
From: mpeltriaux <Michel.Peltriaux@sgdnord.rlp.de>
Date: Wed, 13 Jul 2022 11:21:51 +0200
Subject: [PATCH 1/2] Revert "Merge branch 'Docker' into master"

This reverts commit 8c47c8ae3505e624bb6c9ec8aafa32fd6bf71fb0, reversing
changes made to 2206565673471e7c198b37083990f4e537d90948.

Undos accidental remote merge
---
 Dockerfile                             | 24 -----------
 README.md                              | 56 --------------------------
 docker-compose.yml                     | 34 ----------------
 docker-entrypoint.sh                   |  7 ----
 konova/celery.py                       |  2 +-
 konova/sub_settings/django_settings.py | 30 ++++++++------
 konova/sub_settings/sso_settings.py    |  6 +--
 nginx.conf                             | 20 ---------
 requirements.txt                       |  3 +-
 9 files changed, 21 insertions(+), 161 deletions(-)
 delete mode 100644 Dockerfile
 delete mode 100644 docker-compose.yml
 delete mode 100755 docker-entrypoint.sh
 delete mode 100644 nginx.conf

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/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/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/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/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

From ac49f983ee799070e3f00603eb74fd9e776f275d Mon Sep 17 00:00:00 2001
From: mpeltriaux <michel.peltriaux@sgdnord.rlp.de>
Date: Tue, 2 Aug 2022 09:38:03 +0200
Subject: [PATCH 2/2] #185 Parcel loading on public reports

* fixes bug where unauthorized clients would not load a geometries parcel view properly
* minor general templates enhancements
---
 konova/views.py                     | 2 --
 templates/base.html                 | 2 +-
 user/templates/user/team/index.html | 2 +-
 3 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/konova/views.py b/konova/views.py
index 4fadf6a0..48572a85 100644
--- a/konova/views.py
+++ b/konova/views.py
@@ -102,7 +102,6 @@ def home_view(request: HttpRequest):
     return render(request, template, context)
 
 
-@login_required
 def get_geom_parcels(request: HttpRequest, id: str):
     """ Getter for HTMX
 
@@ -157,7 +156,6 @@ def get_geom_parcels(request: HttpRequest, id: str):
         return HttpResponse(None, status=404)
 
 
-@login_required
 def get_geom_parcels_content(request: HttpRequest, id: str, page: int):
     """ Getter for infinite scroll of HTMX
 
diff --git a/templates/base.html b/templates/base.html
index 30be48ed..ec79ca62 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -31,7 +31,7 @@
         </div>
         {% endfor %}
     </div>
-    <div class="container-fluid mt-3 px-4">
+    <div class="container-fluid mt-3 mb-5 px-4">
         {% comment %}
             The modal wrapper, which can be used on every view can stay on the base.html template
         {% endcomment %}
diff --git a/user/templates/user/team/index.html b/user/templates/user/team/index.html
index 63560516..68b135f7 100644
--- a/user/templates/user/team/index.html
+++ b/user/templates/user/team/index.html
@@ -14,8 +14,8 @@
 
 {% block body %}
 <div class="container">
-    <h4>{% trans 'Teams' %}</h4>
     <div class="col-md">
+        <h4>{% trans 'Teams' %}</h4>
         <button class="btn rlp-r btn-modal" data-form-url="{% url 'user:team-new' %}" title="{% trans 'Add new team' %}">
             {% fa5_icon 'plus' %}
             {% trans 'New' %}