From 5f0728bcbc32f0b22a4d32564854d73ffc689ec8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Bedna=C5=99=C3=ADk?= <jan.bednarik@gmail.com>
Date: Tue, 5 May 2020 22:50:16 +0200
Subject: [PATCH] majak: Use .env for environment setup

---
 README.md              | 24 +++++++++++++++++++++---
 majak/settings/base.py | 18 +++++++++---------
 2 files changed, 30 insertions(+), 12 deletions(-)

diff --git a/README.md b/README.md
index c9bbb23b..1b8b37b4 100644
--- a/README.md
+++ b/README.md
@@ -13,6 +13,15 @@ Je třeba nastavit environment proměnné:
 | proměnná | default | popis |
 | --- | --- | --- |
 | `DATABASE_URL` | | DSN k databázi (např. `postgres://user:pass@localhost:5342/majak`) |
+| `OIDC_RP_REALM_URL` | | OpenID server realm URL (např. `http://localhost:8080/auth/realms/master/`) |
+| `OIDC_RP_CLIENT_ID`  | | OpenID Client ID |
+| `OIDC_RP_CLIENT_SECRET`  | | OpenID Client Secret |
+
+V produkci musí být navíc nastaveno:
+
+| proměnná | default | popis |
+| --- | --- | --- |
+| `DJANGO_SECRET_KEY` | | tajný šifrovací klíč |
 
 ## Pod pokličkou
 
@@ -80,9 +89,18 @@ To nainstaluje Pythonní závislosti pro vývoj projektu na lokále.
 
 #### Nastavení environment proměnných
 
-Nastav environment proměnné (viz konfigurace výše). Pro jednoduchost doporučujeme
-použít [direnv](https://direnv.net/), který nastaví environment proměnné pro vývoj
-při změně adresáře na adresář s projektem. 
+Environment proměnné (viz konfigurace výše) se načítají ze souboru `.env`, který
+může vypadat takto:
+
+    DATABASE_URL=postgres://db:db@localhost:5432/majak
+    OIDC_RP_REALM_URL=http://localhost:8080/auth/realms/master/
+    OIDC_RP_CLIENT_ID=majak
+    OIDC_RP_CLIENT_SECRET=abcd
+
+Pro lokální vývoj obsahují settings tyto výchozí hodnoty:
+
+    DEBUG = True
+    ALLOWED_HOSTS = ["*"]
 
 ### Management projektu
 
diff --git a/majak/settings/base.py b/majak/settings/base.py
index cfd30cc3..cc6c4ccb 100644
--- a/majak/settings/base.py
+++ b/majak/settings/base.py
@@ -1,13 +1,13 @@
-import os.path
 from os.path import join
+from pathlib import Path
 
 import environ
 
-env = environ.Env()
-
-PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
-BASE_DIR = os.path.dirname(PROJECT_DIR)
+ROOT_DIR = Path(__file__).parents[2]
+PROJECT_DIR = ROOT_DIR / "majak"
 
+env = environ.Env()
+environ.Env.read_env(str(ROOT_DIR / ".env"))
 
 # Application definition
 
@@ -57,7 +57,7 @@ ROOT_URLCONF = "majak.urls"
 TEMPLATES = [
     {
         "BACKEND": "django.template.backends.django.DjangoTemplates",
-        "DIRS": [join(PROJECT_DIR, "templates"),],
+        "DIRS": [str(PROJECT_DIR / "templates")],
         "APP_DIRS": True,
         "OPTIONS": {
             "context_processors": [
@@ -113,17 +113,17 @@ STATICFILES_FINDERS = [
     "django.contrib.staticfiles.finders.AppDirectoriesFinder",
 ]
 
-STATICFILES_DIRS = [join(PROJECT_DIR, "static")]
+STATICFILES_DIRS = [str(PROJECT_DIR / "static")]
 
 # ManifestStaticFilesStorage is recommended in production, to prevent outdated
 # Javascript / CSS assets being served from cache (e.g. after a Wagtail upgrade).
 # See https://docs.djangoproject.com/en/3.0/ref/contrib/staticfiles/#manifeststaticfilesstorage
 STATICFILES_STORAGE = "django.contrib.staticfiles.storage.ManifestStaticFilesStorage"
 
-STATIC_ROOT = join(BASE_DIR, "static_files")
+STATIC_ROOT = str(ROOT_DIR / "static_files")
 STATIC_URL = "/static/"
 
-MEDIA_ROOT = join(BASE_DIR, "media_files")
+MEDIA_ROOT = str(ROOT_DIR / "media_files")
 MEDIA_URL = "/media/"
 
 
-- 
GitLab