· 7 years ago · Sep 11, 2018, 01:10 PM
1import os
2import raven
3from core.run_environment import RunEnvironment
4
5gettext = lambda s: s
6
7CURRENT_ENV = RunEnvironment.current_env()
8
9# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
10BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
11
12SECRET_KEY = ''
13
14DEBUG = CURRENT_ENV == RunEnvironment.LOCAL
15
16ALLOWED_HOSTS = ['127.0.0.1', 'mysite.mydomain.com']
17
18DOMAIN = '.mydomain.com'
19CSRF_COOKIE_DOMAIN = DOMAIN
20SESSION_COOKIE_DOMAIN = DOMAIN
21
22CSRF_TRUSTED_ORIGINS = ['mysite.mydomain.com', '127.0.0.1']
23
24
25ADMINS = (
26 ('Admin name', 'admin@adminemail.com'),
27)
28MANAGERS = ADMINS
29
30INSTALLED_APPS = [
31 'django.contrib.sites',
32 'admintheme',
33 'django.contrib.admin',
34 'django.contrib.auth',
35 'django.contrib.contenttypes',
36 'django.contrib.sessions',
37 'django.contrib.messages',
38 'django.contrib.staticfiles',
39 'rest_framework',
40 'accounts',
41 'allauth',
42 'allauth.account',
43 'allauth.socialaccount',
44 'raven.contrib.django.raven_compat',
45 'ajax_select',
46 'mptt',
47 'geoposition',
48 'adminsortable2',
49 'easy_thumbnails',
50 'filer',
51 'subscriptions',
52 'ckeditor',
53 'ckeditor_filebrowser_filer',
54 'core',
55 'hitcount',
56]
57
58MIDDLEWARE = [
59 'django.middleware.security.SecurityMiddleware',
60 'django.contrib.sessions.middleware.SessionMiddleware',
61 'django.middleware.common.CommonMiddleware',
62 'django.middleware.csrf.CsrfViewMiddleware',
63 'django.contrib.auth.middleware.AuthenticationMiddleware',
64 'django.contrib.messages.middleware.MessageMiddleware',
65 'django.middleware.clickjacking.XFrameOptionsMiddleware',
66 'core.middleware.TimezoneMiddleware',
67]
68
69ROOT_URLCONF = 'mysite.urls'
70
71TEMPLATES = [
72 {
73 'BACKEND': 'django.template.backends.django.DjangoTemplates',
74 'DIRS': [],
75 'APP_DIRS': True,
76 'OPTIONS': {
77 'context_processors': [
78 'django.template.context_processors.debug',
79 'django.template.context_processors.request',
80 'django.contrib.auth.context_processors.auth',
81 'django.contrib.messages.context_processors.messages',
82 'core.context_processors.app_name'
83 ],
84 },
85 },
86]
87
88WSGI_APPLICATION = 'mysite.wsgi.application'
89
90SITE_ID = 1
91
92# ======================================================================================================================
93# Database
94# https://docs.djangoproject.com/en/1.11/ref/settings/#databases
95# ======================================================================================================================
96
97CONFIG_DATABASES = {
98 RunEnvironment.LIVE: {
99 'default': {
100 'ENGINE': 'django.db.backends.postgresql_psycopg2',
101 'NAME': '',
102 'USER': '',
103 'PASSWORD': '',
104 'HOST': '127.0.0.1',
105 }
106 },
107 RunEnvironment.STAGE: {
108 'default': {
109 'ENGINE': 'django.db.backends.postgresql_psycopg2',
110 'NAME': '',
111 'USER': '',
112 'PASSWORD': '',
113 'HOST': '127.0.0.1',
114 }
115 },
116 RunEnvironment.LOCAL: {
117 'default': {
118 'ENGINE': 'django.db.backends.postgresql_psycopg2',
119 'NAME': '',
120 'USER': '',
121 'PASSWORD': '',
122 'HOST': '127.0.0.1',
123 }
124 }
125}
126DATABASES = CONFIG_DATABASES[CURRENT_ENV]
127
128
129# ======================================================================================================================
130# Password validation
131# https://docs.djangoproject.com/en/1.11/ref/settings/#auth-password-validators
132# ======================================================================================================================
133
134AUTH_PASSWORD_VALIDATORS = [
135 {
136 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
137 },
138 {
139 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
140 },
141 {
142 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
143 },
144 {
145 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
146 },
147]
148
149
150# ======================================================================================================================
151# Internationalization
152# https://docs.djangoproject.com/en/1.11/topics/i18n/
153# ======================================================================================================================
154
155LANGUAGE_CODE = 'it'
156TIME_ZONE = 'UTC'
157
158USE_I18N = True
159
160USE_L10N = True
161
162USE_TZ = True
163
164LANGUAGES = (
165 ('it', gettext('Italiano')),
166 # ('en', gettext('English')),
167)
168
169# ======================================================================================================================
170# Static files (CSS, JavaScript, Images)
171# https://docs.djangoproject.com/en/1.11/howto/static-files/
172# ======================================================================================================================
173
174STATIC_URL = '/static/'
175STATIC_ROOT = os.path.join(BASE_DIR, '../static/')
176
177MEDIA_URL = '/media/'
178MEDIA_ROOT = os.path.join(BASE_DIR, '../media/')
179
180
181# ======================================================================================================================
182# Custom Auth
183# ======================================================================================================================
184
185AUTH_USER_MODEL = 'accounts.User'
186
187
188# ======================================================================================================================
189# REST Framework
190# ======================================================================================================================
191
192REST_FRAMEWORK = {
193 'DEFAULT_AUTHENTICATION_CLASSES': (
194 'rest_framework.authentication.SessionAuthentication',
195 ),
196 'DEFAULT_PERMISSION_CLASSES': [
197 'rest_framework.permissions.IsAuthenticated',
198 ],
199 'DEFAULT_RENDERER_CLASSES': [
200 'rest_framework.renderers.JSONRenderer',
201 ],
202 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
203 'PAGE_SIZE': 200,
204}
205
206
207# ======================================================================================================================
208# Django Allauth
209# ======================================================================================================================
210
211AUTHENTICATION_BACKENDS = (`allauth`
212 'django.contrib.auth.backends.ModelBackend',
213
214 'allauth.account.auth_backends.AuthenticationBackend',
215)
216
217ACCOUNT_USER_MODEL_USERNAME_FIELD = None
218ACCOUNT_EMAIL_REQUIRED = True
219ACCOUNT_USERNAME_REQUIRED = False
220ACCOUNT_AUTHENTICATION_METHOD = 'email'
221ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICE = True
222
223if DEBUG:
224 ACCOUNT_EMAIL_SUBJECT_PREFIX = 'DEBUG: MySite.com - '
225else:
226 ACCOUNT_EMAIL_SUBJECT_PREFIX = 'MySite.com - '
227
228ACCOUNT_LOGOUT_ON_GET = True
229
230ACCOUNT_ADAPTER = 'accounts.adapter.AccountAdapter'
231
232ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION = True
233ACCOUNT_CONFIRM_EMAIL_ON_GET = True
234ACCOUNT_EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL = '/accounts/email-confirmed/'
235
236ACCOUNT_EMAIL_VERIFICATION = "mandatory"
237ACCOUNT_UNIQUE_EMAIL = True
238
239# ======================================================================================================================
240# Easy Thumbnails
241# ======================================================================================================================
242
243THUMBNAIL_HIGH_RESOLUTION = True
244
245THUMBNAIL_PROCESSORS = (
246 'easy_thumbnails.processors.colorspace',
247 'easy_thumbnails.processors.autocrop',
248 'filer.thumbnail_processors.scale_and_crop_with_subject_location',
249 'easy_thumbnails.processors.filters',
250)
251
252
253# ======================================================================================================================
254# CKEditor
255# ======================================================================================================================
256
257CKEDITOR_CONFIGS = {
258 'default': {
259 'width': '100%',
260 'toolbar': 'Custom',
261 'toolbar_Custom': [
262 ['Bold', 'Italic', 'Underline'],
263 ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'],
264 ['Link', 'Unlink'],
265 # ['FilerImage'],
266 ['RemoveFormat', 'Source']
267 ],
268 'extraPlugins': 'filerimage',
269 'removePlugins': 'image'
270 },
271 'dashboard': {
272 'width': '100%',
273 'toolbar': 'Custom',
274 'toolbar_Custom': [
275 ['Bold', 'Italic', 'Underline'],
276 ['NumberedList', 'BulletedList'],
277 ['RemoveFormat']
278 ],
279 'removePlugins': 'image'
280 },
281}
282
283
284# ======================================================================================================================
285# Geoposition
286# ======================================================================================================================
287
288GEOPOSITION_GOOGLE_MAPS_API_KEY = ''
289
290
291# ======================================================================================================================
292# Sentry
293# ======================================================================================================================
294
295if DEBUG is False:
296 RAVEN_CONFIG = {
297 'dsn': '',
298 }
299
300
301# ======================================================================================================================
302# Django Notifications
303# ======================================================================================================================
304
305NOTIFICATIONS_USE_JSONFIELD = True
306
307
308# ======================================================================================================================
309# Celery
310# ======================================================================================================================
311
312CELERY_BROKER_URL = ''
313CELERY_RESULT_BACKEND = 'rpc://'
314CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler'