settings.py 4.7 KB
Newer Older
Florent Chehab's avatar
Florent Chehab committed
1
"""
Florent Chehab's avatar
Florent Chehab committed
2
Django settings
Florent Chehab's avatar
Florent Chehab committed
3
4
5
6
7
8
9
10
11

For more information on this file, see
https://docs.djangoproject.com/en/2.0/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.0/ref/settings/
"""

import os
12
from os.path import dirname, normpath, join
13
import sys
Florent Chehab's avatar
Florent Chehab committed
14

15
# Build paths inside the project like this: join(BASE_DIR, ...)
Florent Chehab's avatar
Florent Chehab committed
16
# Is the root of the REPOSITORY
Florent Chehab's avatar
Florent Chehab committed
17
BASE_DIR = dirname(dirname(dirname(os.path.abspath(__file__))))
Florent Chehab's avatar
Florent Chehab committed
18

Florent Chehab's avatar
Florent Chehab committed
19
SECRET_KEY = os.environ["SECRET_KEY"]
20
21

# Application definition
Florent Chehab's avatar
Florent Chehab committed
22
INSTALLED_APPS = [
23
24
25
26
27
28
29
30
31
32
33
34
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "django_cas_ng",
    "reversion",
    "reversion_compare",
    "rest_framework",
    "rest_framework.authtoken",
    "backend_app",
Florent Chehab's avatar
Florent Chehab committed
35
    "base_app",
36
    "webpack_loader",
Florent Chehab's avatar
Florent Chehab committed
37
38
39
]

MIDDLEWARE = [
40
41
42
43
44
45
46
47
    "django.middleware.security.SecurityMiddleware",
    "django.contrib.sessions.middleware.SessionMiddleware",
    "django.middleware.common.CommonMiddleware",
    "django.middleware.csrf.CsrfViewMiddleware",
    "django.contrib.auth.middleware.AuthenticationMiddleware",
    "django.contrib.messages.middleware.MessageMiddleware",
    "django.middleware.clickjacking.XFrameOptionsMiddleware",
    "base_app.middleware.LoginRequiredMiddleware",
Florent Chehab's avatar
Florent Chehab committed
48
]
Florent Chehab's avatar
Florent Chehab committed
49
MODERATION_ACTIVATED = True
Florent Chehab's avatar
Florent Chehab committed
50

Florent Chehab's avatar
Florent Chehab committed
51
52
53
54
55
if os.environ["ENV"] == "DEV":
    DEBUG = True
    ALLOWED_HOSTS = ["*"]
    INSTALLED_APPS += ["django_extensions", "debug_toolbar"]
    MIDDLEWARE = ["debug_toolbar.middleware.DebugToolbarMiddleware"] + MIDDLEWARE
Florent Chehab's avatar
Florent Chehab committed
56

57
58
    DEBUG_TOOLBAR_CONFIG = {"SHOW_TOOLBAR_CALLBACK": "base_app.utils.show_toolbar"}

59

Florent Chehab's avatar
Florent Chehab committed
60
61
62
63
64
else:
    DEBUG = False

WEBPACK_LOADER = {
    "DEFAULT": {
Florent Chehab's avatar
Florent Chehab committed
65
        "BUNDLE_DIR_NAME": "base_app/bundles/",
66
        "STATS_FILE": join(BASE_DIR, "frontend/webpack-stats.json"),
Florent Chehab's avatar
Florent Chehab committed
67
68
69
70
    }
}

ALLOWED_PHOTOS_EXTENSION = ["jpg", "jpeg", "png", "svg"]
Florent Chehab's avatar
Florent Chehab committed
71

72
LOGIN_URL = "/user/login"
Florent Chehab's avatar
Florent Chehab committed
73
LOGIN_EXEMPT_URLS = [LOGIN_URL, "/admin/"]
Florent Chehab's avatar
Florent Chehab committed
74
75

AUTHENTICATION_BACKENDS = [
76
77
    "django.contrib.auth.backends.ModelBackend",
    "django_cas_ng.backends.CASBackend",
Florent Chehab's avatar
linting  
Florent Chehab committed
78
]
Florent Chehab's avatar
Florent Chehab committed
79

80
CAS_SERVER_URL = "https://cas.utc.fr/cas/"
Florent Chehab's avatar
Florent Chehab committed
81
CAS_APPLY_ATTRIBUTES_TO_USER = True
82
CAS_RENAME_ATTRIBUTES = {"mail": "email", "givenName": "first_name", "sn": "last_name"}
Florent Chehab's avatar
Florent Chehab committed
83

Florent Chehab's avatar
Florent Chehab committed
84
85
86
87
88
TESTING = "pytest" in sys.modules
if TESTING:
    LOGIN_EXEMPT_URLS.append("api")


Florent Chehab's avatar
Florent Chehab committed
89
90
REST_FRAMEWORK = {
    # Use Django's standard `django.contrib.auth` permissions,
91
92
93
94
95
96
    "DEFAULT_PERMISSION_CLASSES": (
        "rest_framework.permissions.DjangoModelPermissions",
    ),
    "DEFAULT_AUTHENTICATION_CLASSES": (
        "rest_framework.authentication.SessionAuthentication",
        "rest_framework.authentication.TokenAuthentication",
Florent Chehab's avatar
Florent Chehab committed
97
98
99
    ),
}

Florent Chehab's avatar
Florent Chehab committed
100
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
Florent Chehab's avatar
Florent Chehab committed
101

102
ROOT_URLCONF = "base_app.urls"
Florent Chehab's avatar
Florent Chehab committed
103
104
105

TEMPLATES = [
    {
106
107
108
109
110
111
112
113
114
115
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "DIRS": [],
        "APP_DIRS": True,
        "OPTIONS": {
            "context_processors": [
                "django.template.context_processors.debug",
                "django.template.context_processors.request",
                "django.contrib.auth.context_processors.auth",
                "django.contrib.messages.context_processors.messages",
            ]
Florent Chehab's avatar
Florent Chehab committed
116
        },
117
    }
Florent Chehab's avatar
Florent Chehab committed
118
119
]

120
WSGI_APPLICATION = "base_app.wsgi.application"
Florent Chehab's avatar
Florent Chehab committed
121
122
123
124
125


# Database
# https://docs.djangoproject.com/en/2.0/ref/settings/#databases

Florent Chehab's avatar
Florent Chehab committed
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql_psycopg2",
        "NAME": os.environ["POSTGRES_DB"],
        "USER": os.environ["POSTGRES_USER"],
        "PASSWORD": os.environ["POSTGRES_PASSWORD"],
        "HOST": os.environ["DB_HOST"],
        "PORT": os.environ["DB_PORT"],
    }
}

# To use Sqlite, uncomment below
# PROJECT_DIR = os.path.abspath(os.path.dirname(__file__))
# DATABASES = {
#     "default": {
#         "ENGINE": "django.db.backends.sqlite3",
142
#         "NAME": join(PROJECT_DIR, "../database.db"),
Florent Chehab's avatar
Florent Chehab committed
143
144
#     }
# }
Florent Chehab's avatar
Florent Chehab committed
145
146
147
148
149
150
151


# Password validation
# https://docs.djangoproject.com/en/2.0/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
152
153
        "NAME": "django.contrib.auth.password_validation."
        "UserAttributeSimilarityValidator"
Florent Chehab's avatar
Florent Chehab committed
154
    },
155
156
157
    {"NAME": "django.contrib.auth.password_validation." "MinimumLengthValidator"},
    {"NAME": "django.contrib.auth.password_validation." "CommonPasswordValidator"},
    {"NAME": "django.contrib.auth.password_validation." "NumericPasswordValidator"},
Florent Chehab's avatar
Florent Chehab committed
158
159
160
161
162
163
]


# Internationalization
# https://docs.djangoproject.com/en/2.0/topics/i18n/

164
165
LANGUAGE_CODE = "fr-fr"
TIME_ZONE = "Europe/Paris"
Florent Chehab's avatar
Florent Chehab committed
166
167
168
169
USE_I18N = True
USE_L10N = True
USE_TZ = True

Florent Chehab's avatar
Florent Chehab committed
170
STATIC_URL = "/static/"
171
STATIC_ROOT = normpath(join(BASE_DIR, "static"))
Florent Chehab's avatar
Florent Chehab committed
172

173
MEDIA_ROOT = normpath(join(BASE_DIR, "media"))
174
MEDIA_URL = "/media/"