# coding=utf-8 import os import raven import environ import socket root = environ.Path(__file__) - 2 env = environ.Env() MOD = os.environ.get('MOD', 'Test') DEBUG = os.environ.get('DEBUG', 'False') MASTER_PASSWORD = os.environ.get('MASTER_PASSWORD', '@J*1') if MOD == 'Test': environ.Env.read_env(str(root) + '/config_app/settings/test.env') elif MOD == 'Dev': environ.Env.read_env(str(root) + '/config_app/settings/dev.env') elif MOD == 'Prod': environ.Env.read_env(str(root) + '/config_app/settings/prod.env') else: raise ImportError('no such environ ' + MOD) EMAIL_CONFIG = env.email_url('EMAIL_URL',) vars().update(EMAIL_CONFIG) #TODO: Ответственый работник, который ставится в копию ко многим рассылкам, костыль SUPPORT_EMAIL = 'anastasiya.katyuhina@skillbox.ru' BROKER_URL = 'amqp://guest:guest@localhost:5672//' CELERY_RESULT_BACKEND = 'django-db' CELERY_CACHE_BACKEND = 'django-cache' BROKER_TRANSPORT_OPTIONS = {'visibility_timeout': 180} CELERY_EMAIL_TASK_CONFIG = { 'name': 'djcelery_email_send', 'queue': 'celery', 'rate_limit': '50/m', 'ignore_result': False, } CELERYD_TASK_TIME_LIMIT = 300 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) AUTH_USER_MODEL = 'access.User' VZAAR = 'f1e965defc6fbaa92c544cf84267e830' SMS = '5ED9C6BB-41E8-C760-10FA-F8A310D88952' ALLOWED_HOSTS = ['*'] DOMAIN = 'https://go.skillbox.ru' YANDEX_MONEY_DEBUG = False YANDEX_MONEY_SCID = '149639' YANDEX_MONEY_SHOP_ID = '157133' YANDEX_MONEY_SHOP_PASSWORD = 'nu5Xefise' YANDEX_MONEY_FAIL_URL = '%s/api/v1/finance/yandex/fail/' % DOMAIN YANDEX_MONEY_SUCCESS_URL = '%s/' % DOMAIN # информировать о случаях, когда модуль вернул Яндекс.Кассе ошибку YANDEX_MONEY_MAIL_ADMINS_ON_PAYMENT_ERROR = True # Application definition # место куда сохраняем пользовательские файлы PERSONAL_FILES = '/personal_files/' DATABASES = { 'default': env.db(), } COURSE_PROGRESS_SECRET_KEY = "!gf?s3@4Hr5#J#&%Kfr@56s" SESSION_ENGINE = 'redis_sessions.session' CELERY_EMAIL_CHUNK_SIZE = 1 DATA_UPLOAD_MAX_MEMORY_SIZE = 300000000 CACHES = { 'default': env.cache(), } EMAIL_BACKEND = 'djcelery_email.backends.CeleryEmailBackend' SECRET_KEY = env('SECRET_KEY') libs = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django_celery_results', 'django_celery_beat', "djcelery_email", 'yandex_money', 'phonenumber_field', 'raven.contrib.django.raven_compat', 'rest_framework', 'rest_framework_swagger', ) apps = ( 'access', 'progress', 'courses', 'storage', 'finance', 'library', 'achievements', 'config_app', ) INSTALLED_APPS = libs + apps MIDDLEWARE_CLASSES = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', #'access.middleware.CheckPerm', 'access.middleware.RequestToApi', 'access.middleware.UpdateActivity', ] REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework.authentication.SessionAuthentication', ), 'DEFAULT_PARSER_CLASSES': [ 'rest_framework.parsers.FormParser', 'rest_framework.parsers.MultiPartParser', 'rest_framework.parsers.JSONParser', ], } ROOT_URLCONF = 'lms.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates'), '/home/andrey/skill-front'] , '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', ], }, }, ] WSGI_APPLICATION = 'lms.wsgi.application' # Password validation # https://docs.djangoproject.com/en/1.9/ref/settings/#auth-password-validators AUTH_PASSWORD_VALIDATORS = [ { 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', }, { 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', }, { 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', }, { 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', }, ] LANGUAGE_CODE = 'ru-ru' TIME_ZONE = 'Europe/Moscow' USE_I18N = True USE_L10N = True USE_TZ = False MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_URL = '/media/' STATIC_ROOT = os.path.join(BASE_DIR, 'static') STATIC_URL = '/static/' RAVEN_CONFIG = { 'dsn': 'http://1a09557dbd144e52af4b14bea569c114:fbb5dfaa39e64f02a1b4cc7ac665d7d7@sentry.skillbox.ru/7' } LOGGING = { 'version': 1, 'disable_existing_loggers': True, 'root': { 'level': 'WARNING', 'handlers': ['sentry'], }, 'formatters': { 'verbose': { 'format': '%(levelname)s %(asctime)s %(module)s ' '%(process)d %(thread)d %(message)s' }, }, 'handlers': { 'sentry': { 'level': 'WARNING', # To capture more than ERROR, change to WARNING, INFO, etc. 'class': 'raven.contrib.django.raven_compat.handlers.SentryHandler', 'tags': {'custom-tag': 'x'}, }, 'yandex_money': { 'level': 'DEBUG', 'class': 'raven.contrib.django.raven_compat.handlers.SentryHandler', 'tags': {'custom-tag': 'yandex'}, }, 'console': { 'level': 'DEBUG', 'class': 'logging.StreamHandler', 'formatter': 'verbose' } }, 'loggers': { '': { 'level': 'WARNING', 'handlers': ['sentry'], }, 'yandex_money': { 'handlers': ['yandex_money'], 'level': 'DEBUG', 'propagate': False }, }, } # Configure loggers for all local apps LOCAL_APPS_LOGGERS = {} for app in apps: LOCAL_APPS_LOGGERS[app] = { 'handlers': ['console'], 'level': 'DEBUG', 'propagate': True, } LOGGING['loggers'].update(LOCAL_APPS_LOGGERS) SWAGGER_SETTINGS = { 'USE_SESSION_AUTH': True, 'LOGIN_URL': 'admin:login', 'LOGOUT_URL': 'admin:logout', 'SHOW_REQUEST_HEADERS': True, 'JSON_EDITOR': True, 'DOC_EXPANSION': 'list' } IMAGE_SAMPLES_DIR = os.path.join(BASE_DIR, 'tests', 'fixtures', 'images')