· 6 years ago · Jul 05, 2019, 07:02 AM
1"""
2Django settings for odp project.
3
4Generated by 'django-admin startproject' using Django 2.0.5.
5
6For more information on this file, see
7https://docs.djangoproject.com/en/2.0/topics/settings/
8
9For the full list of settings and their values, see
10https://docs.djangoproject.com/en/2.0/ref/settings/
11"""
12
13import datetime
14from datetime import timedelta
15import os
16from syslogs.logging_handler import *
17import sqlite3
18from django.utils.translation import gettext_lazy as _
19
20# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
21# BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
22BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
23TEMPLATES_DIR = os.path.join(BASE_DIR, 'opendata/templates')
24RSA_PASSWORD_PRIVATE_KEY = os.path.join(BASE_DIR, 'cryptopen/password_keys/private.key')
25
26# Quick-start development settings - unsuitable for production
27# See https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/
28
29# SECURITY WARNING: keep the secret key used in production secret!
30# SECRET_KEY = os.environ.get("SECRET_KEY")
31SECRET_KEY = ')0rvdrsv8x*g=8uf#-s*hldf)v!1pf3xy8#$m&0i*#+5fwmrba'
32
33# CORS
34CORS_ORIGIN_ALLOW_ALL = True
35CORS_ALLOW_CREDENTIALS = True
36
37INSTALLED_APPS = [
38 'django.contrib.admin',
39 'django.contrib.auth',
40 'django.contrib.contenttypes',
41 'django.contrib.sessions',
42 'django.contrib.messages',
43 'django.contrib.staticfiles',
44 'django.contrib.sites',
45 'core.apps.CoreConfig',
46 'opendata.apps.OpendataConfig',
47 'syslogs.apps.SyslogsConfig',
48 'harvester_api.apps.HarvesterApiConfig',
49 'rest_framework',
50 'rest_framework.authtoken',
51 'corsheaders',
52 'allauth',
53 'allauth.account',
54 'rest_auth',
55 'rest_auth.registration',
56 'haystack',
57 'rest_framework_swagger',
58 'django_filters',
59 'dry_rest_permissions',
60 'reversion',
61 'blog',
62 'allauth.socialaccount',
63 'rosetta',
64 'django_nose',
65 'prosystem',
66 'rest_celery_backend',
67 'gpkg_display',
68]
69
70MIDDLEWARE = [
71 # 'django_cprofile_middleware.middleware.ProfilerMiddleware',
72 'django.middleware.security.SecurityMiddleware',
73 'django.contrib.sessions.middleware.SessionMiddleware',
74 'django.middleware.locale.LocaleMiddleware',
75 'django.middleware.common.CommonMiddleware',
76 #'django.middleware.csrf.CsrfViewMiddleware',
77 'django.contrib.auth.middleware.AuthenticationMiddleware',
78 'django.contrib.messages.middleware.MessageMiddleware',
79 'django.middleware.clickjacking.XFrameOptionsMiddleware',
80 'corsheaders.middleware.CorsMiddleware',
81 'syslogs.middleware.InfoSysLogMiddleware',
82 'reversion.middleware.RevisionMiddleware',
83]
84
85ROOT_URLCONF = 'odp.urls'
86
87TEMPLATES = [
88 {
89 'BACKEND': 'django.template.backends.django.DjangoTemplates',
90 'DIRS': [TEMPLATES_DIR],
91 'APP_DIRS': True,
92 'OPTIONS': {
93 'context_processors': [
94 'django.template.context_processors.debug',
95 'django.template.context_processors.request',
96 'django.contrib.auth.context_processors.auth',
97 'django.contrib.messages.context_processors.messages',
98 ],
99 },
100 },
101]
102
103WSGI_APPLICATION = 'odp.wsgi.application'
104
105AUTH_PASSWORD_VALIDATORS = [
106 {
107 'NAME': 'core.password_validator.UserAttributeSimilarityValidatorOD',
108 },
109 {
110 'NAME': 'core.password_validator.MinimumLengthValidatorOD',
111 },
112 {
113 'NAME': 'core.password_validator.CommonPasswordValidatorOD',
114 },
115 {
116 'NAME': 'core.password_validator.NumericPasswordValidatorOD',
117 },
118]
119
120# Internationalization
121# https://docs.djangoproject.com/en/2.0/topics/i18n/
122
123LANGUAGE_CODE = 'pl'
124
125TIME_ZONE = 'UTC'
126
127USE_I18N = True
128
129USE_L10N = True
130
131USE_TZ = True
132
133SITE_ID = 1
134
135# User model
136AUTH_USER_MODEL = 'core.MyUser'
137
138AUTHENTICATION_BACKENDS = (
139 # Needed to login by username in Django admin, regardless of `allauth`
140 'django.contrib.auth.backends.ModelBackend',
141
142 # `allauth` specific authentication methods, such as login by e-mail
143 'allauth.account.auth_backends.AuthenticationBackend',
144)
145
146# REST FRAMEWORK
147
148REST_FRAMEWORK = {
149 'DEFAULT_FILTER_BACKENDS': (
150 'django_filters.rest_framework.DjangoFilterBackend',
151 ),
152 'DEFAULT_PERMISSION_CLASSES': (
153 'rest_framework.permissions.AllowAny',
154 ),
155 'DEFAULT_AUTHENTICATION_CLASSES': (
156 'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
157 'rest_framework.authentication.SessionAuthentication',
158 'rest_framework.authentication.BasicAuthentication',
159 ),
160 'DEFAULT_PAGINATION_CLASS': 'opendata.pagination.Pagination10',
161 'TIME_FORMAT': '%H:%M',
162 'DEFAULT_VERSIONING_CLASS': 'rest_framework.versioning.NamespaceVersioning',
163}
164
165REST_AUTH_REGISTER_SERIALIZERS = {
166 'REGISTER_SERIALIZER': 'core.serializers.RegisterUserSerializer',
167}
168
169REST_AUTH_SERIALIZERS = {
170 'USER_DETAILS_SERIALIZER': 'core.serializers.UserAuthDetailSerializer',
171 'PASSWORD_CHANGE_SERIALIZER': 'core.serializers.PasswordUserChangeSerializer',
172 'PASSWORD_RESET_SERIALIZER': 'core.serializers.UserPasswordResetSerializer',
173 'PASSWORD_RESET_CONFIRM_SERIALIZER': 'core.serializers.CustomPasswordResetConfirmSerializer'
174}
175
176ACCOUNT_EMAIL_REQUIRED = False
177
178# Django JWT
179REST_USE_JWT = True
180
181# post login signal
182from django.contrib.auth.signals import user_logged_in
183
184
185def jwt_response_payload_handler(token, user=None, request=None):
186 if user and request:
187 user_logged_in.send(sender=user.__class__, request=request, user=user)
188 return {
189 'token': token,
190 }
191
192
193JWT_AUTH = {
194 'JWT_EXPIRATION_DELTA': timedelta(hours=12),
195 'JWT_RESPONSE_PAYLOAD_HANDLER': jwt_response_payload_handler,
196}
197
198SESSION_COOKIE_AGE = 60 * 60 * 12
199
200LOCALE_PATHS = (
201 os.path.join(BASE_DIR, 'locale'),
202)
203
204# APP VERSION:
205APP_VERSION = os.environ.get("APP_VERSION")
206
207OLD_PASSWORD_FIELD_ENABLED = True
208from backup_scripts.paths import BACKUP_DB_ROOT
209
210BACKUP_ROOT = BACKUP_DB_ROOT
211
212WESTERN_COUNTRIES_TO_EXCLUDE_FROM_AVAILABLE = ['RU', 'UA']
213
214COUNTRIES_WHERE_ALL_LANGUAGES_ARE_AVAILABLE = ['PL']
215
216DEFAULT_LANGUAGES = {
217 "PL": "POLISH",
218 "EN": "ENGLISH",
219 "RU": "RUSSIAN",
220 "UA": "UKRAINIAN"
221}
222
223LANGUAGES = [
224 ('pl', _('Polish')),
225 ('en', _('English')),
226 ('ru', _('Russian')),
227 ('ua', _('Ukrainian'))
228
229]
230
231DOCS_LANGUAGES = {
232 "pl": '/api_docs_pl.json',
233 "en": '/api_docs_en.json',
234 "ua": '/api_docs_ua.json',
235 "ru": '/api_docs_ru.json'
236}
237
238# LOGGING
239# from syslogs.logging_handler import LogDBHandler
240
241LOGGING = {
242 'version': 1,
243 'disable_existing_loggers': False,
244 'formatters': {
245 'standard': {
246 'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
247 'datefmt' : "%d/%b/%Y %H:%M:%S"
248 },
249 },
250 'handlers': {
251 'celery': {
252 'level': 'ERROR',
253 'class': 'logging.FileHandler',
254 'filename': os.path.join(BASE_DIR, 'celery_smtp.log'),
255 },
256 'file_info': {
257 'level': 'WARNING',
258 'class': 'logging.FileHandler',
259 'filename': 'django_warning_logs.log',
260 'formatter': 'standard'
261 },
262 },
263 'loggers': {
264 'celery_smtp.logger': {
265 'handlers': ['celery'],
266 'level': 'INFO',
267 'propagate': True,
268 },
269 },
270}
271GEOIP_PATH = 'geodb'
272
273WEST_COUNTRIES_LANGUAGES = os.environ.get("WEST_COUNTRIES_LANGUAGES")
274
275import logging
276from logging import config as logging_config
277
278hs_logger = logging.getLogger(__name__)
279logging_config.dictConfig(LOGGING)
280
281import stat
282FILE_UPLOAD_PERMISSIONS = stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IROTH
283
284HARVESTER_ID = os.environ.get('HARVESTER_ID')
285# if not HARVESTER_ID:
286# raise ValueError('Opendata instance has to have it\'s name! '
287# 'Please specify it as environmental variable.')
288
289CELERY_CUSTOM_STATES = ['added', 'downloading', 'downloaded']
290# HARVESTER_ID = os.environ.get('HARVESTER_ID')
291# if not HARVESTER_ID:
292# raise ValueError('Opendata instance has to have it\'s name! '
293# 'Please specify it as environmental variable.')
294
295# GEO_URL = '192.168.1.33'
296GEOSERVER_LOGIN = 'rendermap'
297GEOSERVER_PASS = 'rendermap1234'
298GEOSERVER_URL_BASE = 'http://local.whiteaster.com:7010/'
299GEOSERVER_URL = 'http://local.whiteaster.com:7010/geoserver/rest/'
300# GEOSERVER_URL = 'http://192.168.1.37:8080/geoserver/rest/'
301GEOSERVER_USER = 'admin'
302GEOSERVER_PASSWORD = 'geoserver'
303PATH_TO_UPLOAD_GEOSERVER_GPKG = '/home/rendermap/geo_gpkg'