· 5 years ago · Dec 05, 2019, 12:55 PM
1# -*- coding: utf-8 -*-
2# Django settings for CRM project. В будующем на осове этого проекта будет пределан новый кит
3import os
4from os.path import join, dirname, abspath
5import sys
6
7import logging
8import djcelery
9
10djcelery.setup_loader()
11
12ALLOWED_HOSTS = [
13 '.kokoc.com',
14 '.bdbd.ru',
15 '.gkit.ru',
16 '188.138.37.4',
17 '62.75.203.174',
18 '*',
19]
20
21ADMINS = [
22 ['ruzin', 'ruzin@kokoc.com'],
23 ['titov', 'titov.evgeniy@bdbd.ru'],
24 ['guravlev.ivan', 'guravlev.ivan@dev.kokoc.com']
25]
26
27# DEBUG = False
28DEBUG = True
29# RUN_ON_PRODUCTION = False
30RUN_ON_PRODUCTION = True
31JS_DEBUG = DEBUG
32DEBUG_TOOLBAR = DEBUG
33
34COMPRESS_ENABLED = True
35COMPRESS_OFFLINE = False
36
37PROJECT = 'crm'
38PROJECT_PATH = abspath(join(dirname(abspath(__file__)), '..'))
39PROJECT_ROOT = abspath(join(PROJECT_PATH, '..'))
40
41DATABASE_STATUS_FILE = abspath(join(PROJECT_ROOT, 'tmp', 'database_status'))
42VERSION_FILE = abspath(join(PROJECT_ROOT, 'version_file'))
43
44# ADMINS = (
45# ('dev', 'dev.kokoc.com'),
46# )
47
48SILENCED_SYSTEM_CHECKS = ["fields.W342", 'django_mysql.W001', 'django_mysql.W002']
49MANAGERS = ADMINS
50
51TEST_DB = {
52 'ENGINE': 'django.db.backends.mysql',
53 'NAME': 'kit_test_2',
54 'USER': 'root',
55 'HOST': 'localhost',
56 'PASSWORD': '111',
57 'PORT': '',
58 'OPTIONS': {
59 'compress': True,
60 'init_command': "SET sql_mode='STRICT_TRANS_TABLES', innodb_strict_mode=1",
61 'charset': 'utf8mb4',
62 },
63
64 'ATOMIC_REQUESTS': True
65}
66
67PRODUCTION_DB = {
68 'ENGINE': 'django.db.backends.mysql',
69 'NAME': 'kit2',
70 'USER': '',
71 'PASSWORD': '',
72 'HOST': 'db.kokoc.com',
73 'PORT': '',
74 'OPTIONS': {
75 'compress': True,
76 # 'init_command': "SET sql_mode='STRICT_TRANS_TABLES', innodb_strict_mode=1",
77 'charset': 'utf8mb4',
78 },
79
80 'ATOMIC_REQUESTS': True
81}
82
83PRODUCTION_SLAVE_DB = { # репликация
84 'ENGINE': 'django.db.backends.mysql',
85 'NAME': 'kit2',
86 'USER': '',
87 'PASSWORD': '',
88 'HOST': 'db.kokoc.com',
89 'PORT': '',
90 'OPTIONS': {
91 'compress': True,
92 # 'init_command': "SET sql_mode='STRICT_TRANS_TABLES', innodb_strict_mode=1",
93 'charset': 'utf8mb4',
94 },
95
96 'ATOMIC_REQUESTS': True
97}
98
99DATABASES_TEST = {
100 'default': TEST_DB,
101 'test': TEST_DB,
102 'slave': TEST_DB
103}
104
105DATABASES_DEBUG = {
106 'default': TEST_DB,
107 'slave': TEST_DB,
108 'test': TEST_DB
109}
110
111DATABASES_PRODUCTION = {
112 'default': PRODUCTION_DB,
113 'slave': PRODUCTION_DB
114 # 'slave': PRODUCTION_SLAVE_DB
115}
116
117DATABASES_MAKE_TEST_DB = {
118 'default': PRODUCTION_DB,
119 'slave': PRODUCTION_SLAVE_DB,
120 'local': TEST_DB,
121 'test': TEST_DB,
122}
123
124from libs.common.os_tools import query_yes_no
125
126DATABASES = DATABASES_DEBUG
127if 'make_test_database' in sys.argv:
128 print 'MAKE_TEST_DB_MODE'
129 DATABASES = DATABASES_MAKE_TEST_DB
130elif set(sys.argv) & set(['--database=test', 'test']):
131 print 'TEST MODE'
132 DATABASES = DATABASES_TEST
133elif RUN_ON_PRODUCTION:
134 print 'DEBUG_ON_PRODUCTION'
135 if 'migrate' in sys.argv:
136 if not query_yes_no("Миграция на продакшене?"):
137 sys.exit()
138 DATABASES = DATABASES_PRODUCTION
139else:
140 print 'DEBUG_ON_LOCAL'
141
142print DATABASES
143
144COMMAND_PASSWORD = 'NenEedVeb6'
145
146# DATABASES['slave'] = DATABASES['default']
147
148# Local time zone for this installation. Choices can be found here:
149# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
150# although not all choices may be available on all operating systems.
151# If running in a Windows environment this must be set to the same as your
152# system time zone.
153TIME_ZONE = 'Europe/Moscow'
154
155# Language code for this installation. All choices can be found here:
156# http://www.i18nguy.com/unicode/language-identifiers.html
157LANGUAGE_CODE = 'ru'
158
159# If you set this to False, Django will make some optimizations so as not
160# to load the internationalization machinery.
161USE_I18N = False
162
163HT_DOCS_ROOT = os.path.join(PROJECT_PATH, '..', 'htdocs')
164STATIC_ROOT = os.path.join(HT_DOCS_ROOT, 'static')
165STATIC_URL = '/static/'
166
167# Absolute path to the directory that holds media.
168# Example: "/home/metdia/media.lawrence.com/"
169MEDIA_ROOT = os.path.join(PROJECT_PATH, '..', 'htdocs', 'media')
170
171# URL that handles the media served from MEDIA_ROOT. Make sure to use a
172# trailing slash if there is a path component (optional in other cases).
173# Examples: "http://media.lawrence.com", "http://example.com/media/"
174MEDIA_URL = '/media/'
175
176# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
177# trailing slash.
178# Examples: "http://foo.com/media/", "/media/".
179ADMIN_MEDIA_PREFIX = '/media/admin/'
180
181# Make this unique, and don't share it with anybody.
182SECRET_KEY = 'e$*3_9mmedun&pd27)5vcw#rmqz_+pyo%6e_q5#dg#=-grbeeg'
183
184# List of callables that know how to import templates from various sources.
185TEMPLATE_LOADERS = (
186 'django.template.loaders.filesystem.Loader',
187 'django.template.loaders.app_directories.Loader',
188)
189
190CACHE_BACKEND = 'db://django_cache'
191
192MIDDLEWARE_CLASSES = (
193 'kit2.kit.middleware.AccessLogMiddleware',
194 'django.middleware.common.CommonMiddleware',
195 'django.contrib.sessions.middleware.SessionMiddleware',
196 'django.contrib.auth.middleware.AuthenticationMiddleware',
197 # 'django.middleware.transaction.TransactionMiddleware',
198)
199
200TEMPLATE_CONTEXT_PROCESSORS = (
201 "django.contrib.auth.context_processors.auth",
202 "django.core.context_processors.debug",
203 "django.core.context_processors.i18n",
204 "django.core.context_processors.media",
205 "django.core.context_processors.static",
206 "django.contrib.messages.context_processors.messages",
207 'kit2.crm.context_processors.settings_data',
208 'kit2.crm.context_processors.get_crm_model_for_status_choices',
209 # 'kit2.kit.context_processors.get_kit_global_vars'
210)
211
212ROOT_URLCONF = 'kit2.crm.urls'
213
214KIT_TEMPLATE_DIR = os.path.join(PROJECT_PATH, 'kit', 'templates')
215CC_TEMPLATE_DIR = os.path.join(PROJECT_PATH, 'client_cabinet', 'templates')
216CRM_TEMPLATE_DIR = os.path.join(PROJECT_PATH, 'crm', 'templates')
217CRM_DOCUMENT_TEMPLATE_DIR = os.path.join(CRM_TEMPLATE_DIR, 'docx_template')
218
219TEMPLATE_DIRS = (
220 CRM_TEMPLATE_DIR,
221 KIT_TEMPLATE_DIR,
222 CRM_DOCUMENT_TEMPLATE_DIR
223)
224
225RAVEN_CONFIG = {
226 'dsn': '',
227}
228
229INSTALLED_APPS = (
230 'django.contrib.sessions',
231 'django.contrib.humanize',
232 'django.contrib.contenttypes',
233 'django.contrib.admin',
234 'django.contrib.auth',
235 'kit2.kit.apps.KitConfig',
236 'kit2.kit.reports',
237 'kit2.kit.wordstat',
238 'kit2.kit.serp',
239 'kit2.crm',
240 'kit2.crm2',
241 'finance',
242 'document_flow',
243 'haystack',
244 'raven.contrib.django.raven_compat',
245 'collector',
246 'collector.antivirus',
247 'collector.ywm',
248 'sso',
249 'django.contrib.staticfiles',
250 'compressor',
251 'salary.apps.SalaryConfig',
252 'task_manager.apps.TaskManagerConfig',
253 'django_mysql',
254 'gdeslon',
255 'suppliers',
256 'site_audit',
257 'leads'
258)
259
260REST_FRAMEWORK = {
261 'DEFAULT_AUTHENTICATION_CLASSES': [
262 'site_audit.authentication.AuthenticationKit',
263 ],
264 'DEFAULT_PAGINATION_CLASS': 'site_audit.paginators.CustomPagination',
265 'PAGE_SIZE': 10
266}
267
268# настройки для поиска на elasticsearch
269
270
271
272HAYSTACK_URL = 'http://localhost:9200/'
273HAYSTACK_URL_CURL = 'http://localhost:9200/'
274
275# HAYSTACK_ENABLED = False
276HAYSTACK_ENABLED = True
277HAYSTACK_CONNECTIONS = {
278 'default': {
279 'ENGINE': 'kit2.crm.custom_haystack.CustomElasticSearchEngine',
280 'URL': HAYSTACK_URL,
281 'INDEX_NAME': 'crm',
282 'TIMEOUT': 60,
283 'EXCLUDED_INDEXES': ['task_manager.search_indexes.TaskIndex'],
284 },
285}
286HAYSTACK_SIGNAL_PROCESSOR = 'kit2.crm.search_indexes.SaleProjectSignalProcessor'
287HAYSTACK_IDENTIFIER_METHOD = 'kit2.crm.utils.search.get_identifier'
288
289print "ACHTUNG HAYSTACK URL={}".format(HAYSTACK_URL)
290
291LOGS_DIR = join(PROJECT_ROOT, 'logs')
292
293IP_LIST_PATH = join(PROJECT_ROOT, 'collector/util/ip_list.txt')
294
295
296LOGGING = {
297 'version': 1,
298 'disable_existing_loggers': False,
299 'root': {
300 'level': 'ERROR',
301 'handlers': ['console'],
302 },
303 'formatters': {
304 'verbose': {
305 'format': '%(levelname)s %(asctime)s %(module)s %(message)s'
306 },
307 'simple': {
308 'format': '%(levelname)s %(message)s'
309 },
310 },
311 'handlers': {
312 # 'sentry': {
313 # 'level': 'WARNING',
314 # 'class': 'raven.contrib.django.raven_compat.handlers.SentryHandler',
315 # },
316 'console': {
317 'level': 'DEBUG',
318 'class': 'logging.StreamHandler',
319 'formatter': 'verbose'
320 }
321 },
322 'loggers': {
323 # 'sentry': {
324 # 'level': 'ERROR',
325 # 'handlers': ['sentry'],
326 # 'propagate': False,
327 # },
328 'django': {
329 'handlers': ['console'],
330 'level': 'WARNING',
331 'propagate': False,
332 },
333 'django.db.backends': {
334 'handlers': None,
335 'level': 'DEBUG',
336 'propagate': False,
337 },
338 'elasticsearch': {
339 'handlers': ['console'],
340 'level': 'ERROR',
341 'propagate': False,
342 },
343 'haystack': {
344 'handlers': ['console'],
345 'level': 'DEBUG',
346 'propagate': False,
347 },
348 'urllib3.connectionpool': {
349 'handlers': ['console'],
350 'level': 'ERROR',
351 'propagate': False,
352 },
353 'django.db.backends': {
354 'handlers': ['console'],
355 # 'level': 'INFO',
356 'propagate': False,
357 },
358 },
359}
360
361PISTON_EMAIL_ERRORS = True
362PISTON_DISPLAY_ERRORS = False
363
364APPEND_SLASH = False
365
366FONTS_DIR = '/home/kit/fonts'
367EXT_VERSION = 4
368
369SESSION_ENGINE = 'django.contrib.sessions.backends.file'
370
371MOCK_REDIS = False
372
373TEST_RUNNER = 'test_common.KitTestRunner'
374
375PROJECT = 'crm'
376
377KIT_DOMAIN = 'http://127.0.0.1:8050'
378RBS_DOMAIN = 'http://tool.rbscorp.ru/'
379RBS_CRM_DOMAIN = 'http://crm-test.rbsdev.ru/'
380
381
382CLIENT_CABINET_GROUPS = (
383 57, 58, 59, 65, 66, 67, 74, 75, 84, 96, 108, 110) # группы для отображения в клиентском кабинете
384
385
386CLIENT_CABINET_MAIL_FROM = 'cabinet@seo-dream.ru'
387
388SMS_SERVICE_LOGIN = 'interrek'
389SMS_SERVICE_PASSWORD = 'safitugi'
390
391NEW_ORDER_MAIL_LIST = (
392 'ddn@sales.kokoc.com', 'a.mochichuk@sales.kokoc.com', 'm.rinat@sales.kokoc.com',
393 'd.martyushev@sales.kokoc.com', 'aga@sales.kokoc.com'
394)
395
396NOTIFY_USER_IDS = (96, 232)
397SEND_TO_1C = True
398
399DATABASE_STATUS_FILE = '/home/kit/database_status'
400CRM_REBOOT = '/home/kit/Kit/check_reboot'
401
402INCOME_EMAIL_DIR = '/home/aarra/CRM/Leds'
403WRONG_EMAIL_DIR = os.path.join(INCOME_EMAIL_DIR, 'bad')
404CRM_ORDERS_EMAIL_DIR = os.path.join(INCOME_EMAIL_DIR, 'crm_orders')
405
406
407KIT_UPLOAD_DOCUMENT_URL = 'http://127.0.0.1:8050/kit/api/internal/upload_document_file/'
408KIT_START_CONTRACT_URL = 'http://127.0.0.1:8050/finance/api/internal/contract/{contract_id}/start_work/'
409
410CRM_DOMAIN_NOTIFY_USER_IDS = (96, 147)
411
412AGENCY_KOKOC = 1
413AGENCY_SEODREAM = 2
414AGENCY_BDBD = 3
415# seop.ru
416AGENCY_ANTARION = 7
417
418WEBCONSULTANT = {
419 AGENCY_KOKOC: {
420 'auth_login': 'kokoc',
421 'auth_pass': '',
422 },
423 # AGENCY_BDBD: {
424 # 'auth_login': 'ivanrbs',
425 # 'auth_pass': '',
426 # }
427}
428
429LIVETEX = {
430 AGENCY_BDBD: {
431 'email': 'n.salihova@kokoc.com',
432 'password': '',
433 }
434}
435
436CACHES = {
437 'default': {
438 'BACKEND': 'redis_cache.RedisCache',
439 'LOCATION': 'redis.kokoc.com:6379',
440 'OPTIONS': {
441 'DB': 15
442 }
443 }
444}
445CACHEOPS_DEGRADE_ON_FAILURE = True
446CACHEOPS_REDIS = {
447 'host': 'localhost',
448 'port': 6379,
449 'db': 2,
450 'socket_timeout': 3,
451}
452CACHEOPS = {
453 'kit.person': ('all', 60 * 15),
454 'kit.agency': ('all', 24 * 60 * 60),
455 'kit.projectuserrole': ('all', 15 * 60),
456 'kit.usergrade': ('all', 15 * 60),
457 'kit.user': ('all', 15 * 60),
458}
459
460CRM_RBS_DB_SETTINGS = {
461 'host': 'vpn.rbscorp.ru',
462 'user': "crm",
463 'passwd': "",
464 'db': "crm",
465 'port': 3307
466}
467
468CRM_DOCUMENT_TEMPLATE_OUTPUT_DIR = '/home/kit/Kit/smb/'
469CRM_KOKOC_TMPLT_DIR = 'KOKOC_for_accaunts'
470CRM_BDBD_TMPLT_DIR = 'BDBD_for_accaunts'
471CRM_KOKOC_TMPLT_INPUT_DIR = 'KOKOC_CRM_patterns'
472CRM_BDBD_TMPLT_INPUT_DIR = 'BDBD_CRM_patterns'
473
474CALLTOUCH = {
475 1: (542, '', 5),
476 2: (624, '', 5),
477 3: (634, '', 5),
478 AGENCY_ANTARION: (1194, '', 5),
479}
480
481CALLTOUCH_FOR_SEO = {
482 1: (17253, '', 26),
483}
484
485MONTH_DIFF_FOR_DUPLICATES = 3
486
487ARROW_WEB_API = {
488 'url': 'https://as.arwm.ru:1443/api/1/',
489 'login': 'webapi',
490 'password': '',
491}
492
493MEDIAGURU_WEB_API = {
494 'url': 'https://crm.mediaguru.ru:1443/api/1/',
495 'login': 'webapi',
496 'password': '',
497}
498
499IS_CRM = True
500CRM_COMPANY_CALLTOUCH = 'calltouch'
501CRM_COMPANY_DEFAULT = 'default'
502
503CRM_COMPANY = CRM_COMPANY_DEFAULT
504CRM_EMAIL_SETTINGS = {
505 CRM_COMPANY_DEFAULT: {
506 'from': 'robot@gkit.ru'
507 },
508 CRM_COMPANY_CALLTOUCH: {
509 'from': 'crm@calltouch.ru'
510 }
511}
512
513CRM_LINKS = {
514 CRM_COMPANY_DEFAULT: 'http://crm.kokoc.com',
515 CRM_COMPANY_CALLTOUCH: 'http://crm.calltouch.ru'
516}
517
518NOTIFICATIONS_CRM = {
519 'login': 'event',
520 'password': 'event',
521 'host': 'localhost',
522 'virtual_host': 'event',
523 'exchange': 'notifications_crm',
524}
525
526import re
527
528CRM_URL = CRM_LINKS.get(CRM_COMPANY, 'http://localhost')
529CRM_WS_PORT = 5000
530CRM_WS_URL = re.sub(ur'http', '', CRM_URL)
531# Удаляем порт в конце CRL
532CRM_WS_URL = re.sub(ur':\d+$', '', CRM_WS_URL)
533CRM_WS_URL = 'ws{}:{}/ws'.format(CRM_WS_URL, CRM_WS_PORT)
534CRM_WS_ONLINE_URL = 'http://localhost:{}/online'.format(CRM_WS_PORT)
535
536# celery options
537BROKER_URL = "amqp://guest:guest@localhost:5672//"
538CELERY_IMPORTS = ("kit2.crm.tasks",)
539
540
541WELLTIME_HOST = '213.79.95.18'
542WELLTIME_CONFIG = {'host': WELLTIME_HOST,
543 'user': '',
544 'passwd': '',
545 'db': '',
546 'port': 63306,
547 'table': '', }
548
549BLANK_SOURCE = MEDIA_ROOT + '/office_files/' + u'Бланк для регистрации.docx'
550DOCUMENTS_PRINT_DIRECTORY = ''
551
552SITEANALYZE = {
553 'url': 'http://localhost:5000',
554 'dir': join(PROJECT_ROOT, 'tmp'),
555 'username': 'admin_crm',
556 'password': 'WSiwIzFi1',
557}
558
559WEBPROFY_WATCHER_USER_ID = 2667
560
561XMLRPC_SERVER_CONFIG = {
562 'ACCOUNTS': {
563 'webprofy': '',
564 'ruward': '',
565 'similarweb': '',
566 'partner': ''
567 },
568 'PORT': 6661,
569 'IPS_WITHOUT_AUTH': []
570}
571
572STATICFILES_FINDERS = (
573 'django.contrib.staticfiles.finders.FileSystemFinder',
574 'django.contrib.staticfiles.finders.AppDirectoriesFinder',
575 # other finders..
576 'compressor.finders.CompressorFinder',
577)
578
579WIZARD_XMLRPC_API = ''
580CRM_TEMPLATE_DIR_BRIEFS = os.path.join(CRM_TEMPLATE_DIR, 'briefs')
581CRM_WELLTIME_LOG_DIR = os.path.join(PROJECT_PATH, 'crm', 'welltime', 'logs')
582WELLTIME_SETTINGS = {
583 'port': '10022',
584 'host': '',
585 'user': '',
586 'password': ''
587}
588WELLTIME_PATH = '/var/calls'
589
590USER_RECEIVE_LEADS_ID = 3390
591
592GDESLON = {
593 'user': '',
594 'password': ''
595}
596
597AUTHENTICATION_BACKENDS = [
598 'kit2.kit.backends.auth.AuthBackend',
599 'kit2.kit.backends.auth.CrmBackend'
600]
601
602AUTH_USER_MODEL = 'kit.User'
603
604
605PATH_2_PYTHON_3_WITH_UNO = u'/usr/bin/python3'
606
607USE_ODT = True
608
609LLMANICUR_DB = {
610 'user': '',
611 'password': ''
612}
613
614IS_PRESALE = False
615USE_L10N = False
616
617CONFIGS_1C = {
618 'debug': {
619 'wsdl_url': '',
620 'username': 'KIT',
621 'password': ''
622 },
623 'production': {
624 'wsdl_url': '',
625 'username': 'KIT',
626 'password': ''
627 }
628}
629
630SEND_SAY_CONFIG = {
631 'login': '',
632 'password': ''
633}
634
635USERS_CAN_VIEW_ZP_SUMMARY = ()
636USERS_CAN_SET_PAYMENT_MARGIN_ZP = ()
637USERS_WHO_CAN_CHANGE_CHEAF_NOTE = (96, 2521)
638
639USERS_FOR_SEND_MAIL_CREATE_PRIMARY_INVOICE = [630, 3389] # Гуляева. Горохова
640USER_FOR_SEND_RECEIVE_INFO_LEAD = [3389] # Горохова
641
642USER_WATCHER_PRE_PRESALES = [599, 3459, 1222, 3468] # Богданкевич, Ермаков, Яхимович, Дончев
643ALL_INCOMING_LEAD_WATCHER = 630
644
645PROFITATOR_MAIN_ANALYST = 3446 # Девятых Денис
646
647R7K12_TOKEN = ''
648
649requires_system_checks = False
650if not requires_system_checks:
651 from django.core.management.base import BaseCommand
652
653 BaseCommand.requires_system_checks = requires_system_checks
654
655CELERY_ALWAYS_EAGER = True
656
657
658SSO = {
659 'AUTH_URL': 'https://gkit.ru',
660 'API_KEY': '',
661 'CALLBACK_URL': 'http://crm.kokoc.com',
662 'REQUEST_TOKEN_URL': 'https://gkit.ru/sso/requesttoken',
663 'ACCESS_URL': 'https://gkit.ru/sso/checkaccess',
664 'AUTH_TOKEN_URL': 'https://gkit.ru/sso/authtoken'
665}