· 8 years ago · Sep 07, 2017, 08:02 AM
1import os
2from os.path import join, normpath, dirname, exists
3import sys
4from datetime import date, datetime
5
6DEBUG = False
7
8PROJECT_DIR = dirname(__file__)
9BASE_DIR = dirname(PROJECT_DIR)
10JSONSCHEMA_DIR = join(BASE_DIR, 'json-schema')
11
12ALLOWED_HOSTS = ['*']
13
14ADMINS = (
15 ('', 'wd@220-volt.us'),
16)
17
18SECRET_KEY = "123"
19PRIVATE_KEY_220V = 'aLcAfPJqUcItiCNBmSHkamYe9#1je*ya'
20
21USER_ROLES = (
22 'root',
23 'rgrp',
24 'rp',
25 'shop',
26 'manager',
27 'telemarket',
28 'rgtelemarket',
29 'mgp',
30 'rmgp'
31)
32
33TOKEN_SALT = ''
34
35DEFAULT_FROM_EMAIL = 'wd@220-volt.us'
36# EMAIL_HOST_USER = ''
37# EMAIL_HOST_PASSWORD = ''
38
39INSTALLED_APPS = [
40 'django.contrib.admin',
41 'django.contrib.auth',
42 'django.contrib.contenttypes',
43 'django.contrib.sessions',
44 'django.contrib.messages',
45 'django.contrib.sites',
46 'django.contrib.staticfiles',
47
48 'rest_framework',
49 'userroles',
50 'easy_thumbnails',
51 'compressor',
52
53 'pollycrm',
54
55 'apps.events',
56 'apps.clients',
57 'apps.clusters',
58 'apps.custom_auth',
59 'apps.emails',
60 'apps.managers',
61 'apps.shops',
62 'apps.sync_1c',
63 'apps.tasks',
64 'apps.mediafiles',
65 'apps.geodata',
66
67 'apps.epic',
68]
69
70SITE_ID = 1
71
72MIDDLEWARE_CLASSES = (
73 'django.contrib.sessions.middleware.SessionMiddleware',
74 'django.middleware.common.CommonMiddleware',
75 'django.middleware.csrf.CsrfViewMiddleware',
76 'django.contrib.auth.middleware.AuthenticationMiddleware',
77 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
78 'django.contrib.messages.middleware.MessageMiddleware',
79 'django.middleware.clickjacking.XFrameOptionsMiddleware',
80 'apps.custom_auth.middleware.SMSVerifiedMiddleware'
81)
82
83ROOT_URLCONF = 'pollycrm.urls'
84
85WSGI_APPLICATION = 'pollycrm.wsgi.application'
86
87try:
88 import pymysql
89 pymysql.install_as_MySQLdb()
90except ImportError:
91 pass
92
93DATABASES = {
94 'default': {
95 'ENGINE': 'django.db.backends.postgresql_psycopg2',
96 'NAME': 'pollycrm_pro',
97 'USER': '',
98 'PASSWORD': '',
99 'OPTIONS': {
100 'autocommit': True,
101 },
102 },
103 # c - latin char 'c'
104 '1c': {
105 'ENGINE': 'django.db.backends.mysql',
106 'HOST': 'internal.exchange.220-volt.us',
107 'NAME': 'internal_exchange_clients',
108 'USER': '',
109 'PASSWORD': ''
110 }
111}
112
113DATABASE_ROUTERS = ['pollycrm.router.Router1C']
114
115LANGUAGE_CODE = 'en-us'
116
117TIME_ZONE = 'Europe/Moscow'
118
119USE_I18N = True
120
121USE_L10N = True
122
123USE_TZ = True
124
125MEDIA_URL = '/media/'
126STATIC_URL = '/static/'
127
128MEDIA_ROOT = join(BASE_DIR, 'media')
129STATIC_ROOT = join(BASE_DIR, 'static')
130
131STATICFILES_FINDERS = (
132 'django.contrib.staticfiles.finders.FileSystemFinder',
133 'django.contrib.staticfiles.finders.AppDirectoriesFinder',
134
135 'compressor.finders.CompressorFinder',
136)
137
138STATICFILES_DIRS = (
139 join(BASE_DIR, 'node_modules'),
140 join(PROJECT_DIR, 'static', 'bower_components'),
141)
142
143TEMPLATE_DIRS = (
144 join(PROJECT_DIR, 'templates'),
145)
146
147AUTH_USER_MODEL = 'custom_auth.User'
148LOGIN_URL = '/auth/login/'
149
150REST_FRAMEWORK = {
151 'DEFAULT_PERMISSION_CLASSES': (
152 'pollycrm.api.permissions.AuthenticationPermission',
153 'pollycrm.api.permissions.HasRolePermission'
154 ),
155 'DEFAULT_RENDERER_CLASSES': (
156 'djangorestframework_camel_case.render.CamelCaseJSONRenderer',
157 ),
158 'DEFAULT_PARSER_CLASSES': (
159 'djangorestframework_camel_case.parser.CamelCaseJSONParser',
160 'rest_framework.parsers.FormParser',
161 'rest_framework.parsers.MultiPartParser',
162 ),
163 'DEFAULT_FILTER_BACKENDS': (
164 'rest_framework.filters.DjangoFilterBackend',
165 ),
166 'DEFAULT_PAGINATION_CLASS': 'pollycrm.api.pagination.PollyPagination',
167}
168
169TEST_RUNNER = 'xmlrunner.extra.djangotestrunner.XMLTestRunner'
170TEST_OUTPUT_DIR = 'test-reports'
171
172log_path = join(BASE_DIR, '.log')
173querylog_path = join(log_path, 'sql')
174
175if not exists(log_path):
176 os.makedirs(log_path)
177
178if not exists(querylog_path):
179 os.makedirs(querylog_path)
180
181LOGGING = {
182 'version': 1,
183 'disable_existing_loggers': True,
184 'formatters': {
185 'verbose': {
186 'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(message)s'
187 },
188 'simple': {
189 'format': '%(levelname)s %(message)s'
190 },
191 },
192 'handlers': {
193 'log_file': {
194 'level': 'INFO',
195 'class': 'logging.FileHandler',
196 'filename': join(log_path, date.today().strftime('%Y-%m') + '.log'),
197 'formatter': 'verbose',
198 },
199 'mail_admins': {
200 'level': 'ERROR',
201 'class': 'django.utils.log.AdminEmailHandler'
202 },
203 'tasks_log': {
204 'level': 'INFO',
205 'class': 'logging.FileHandler',
206 'filename': join(log_path, 'tasks.log'),
207 'formatter': 'verbose',
208 }
209 },
210 'loggers': {
211 '': {
212 'handlers': ['log_file', 'mail_admins'],
213 'level': 'INFO',
214 'propagate': True
215 },
216 'apps.tasks': {
217 'handlers': ['tasks_log'],
218 'level': 'INFO',
219 'propagate': True
220 }
221 }
222}
223
224DEFAULT_PAGINATE_BY = 25
225MAIL_PACKET_SIZE = 50
226RANDOM_TELEMARKT_TRIES = 20
227
228SYNC_CLIENTS_POOL = 10
229REDIS_CLIENTS_NAME = "clients_1c"
230
231EL_LABELS = ['PollyCRM']
232EL_HOST = 'http://el.220-volt.us'
233EL_CREDENTIALS = {
234 'service': '',
235 'token': ''
236}
237
238
239FRANCHISE = {
240 'url': 'http://franchise.220-volt.ru',
241 'service': 'pollycrm',
242 'token': '2f7a205db6e6f1fa85432f8a8'
243}
244
245THUMBNAIL_ALIASES = {
246 '': {
247 'image_thumb': {'size': (60, 60), 'crop': True},
248 }
249}
250
251COMPRESS_ENABLED = True
252COMPRESS_PRECOMPILERS = (
253 ('text/less', normpath(join(BASE_DIR, 'node_modules/less/bin/lessc')) + ' --autoprefix' + ' {infile} {outfile}'),
254)
255
256COMPRESS_SOURCE_ROOT = normpath(join(PROJECT_DIR, 'static/assets'))
257COMPRESS_OUTPUT_DIR = 'cache'
258
259COMPRESS_CSS_FILTERS = [
260 'compressor.filters.css_default.CssAbsoluteFilter',
261 'compressor.filters.cssmin.CSSMinFilter'
262]
263
264COMPRESS_OFFLINE = False
265COMPRESS_OFFLINE_CONTEXT = {
266 'STATIC_URL': STATIC_URL,
267 'debug': False
268}
269
270GEODATA_IP_DB_PATH = os.path.join(BASE_DIR, 'geobase.dat')
271
272KHARON_API_ENDPOINT = 'http://example.com/'
273KHARON_API_TOKEN = 'EXAMPLE-KHARON-TOKEN'
274
275
276try:
277 from .local_settings import *
278except ImportError:
279 pass
280
281if len(sys.argv) > 1 and sys.argv[1] == 'test':
282
283 class DisableMigrations(object):
284
285 def __contains__(self, item):
286 return True
287
288 def __getitem__(self, item):
289 return "notmigrations"
290
291 MIGRATION_MODULES = DisableMigrations()
292
293
294SMS_BACKEND = {
295 'CLASS': 'hermesms.backends.PdgApiSmsBackend',
296 'OPTIONS': {
297 'api_root': 'https://services.220v.ru:6080/api/v1/sms/',
298 'username': 'api_user',
299 'password': 'R2Pvl6OyGfbxq4PW'
300 }
301}