Example #1
0
from datetime import timedelta

from app.conf.environ import env

AUTH_USER_MODEL = 'users.User'

AUTHENTICATION_BACKENDS = [
    'axes.backends.AxesBackend',
    'django.contrib.auth.backends.ModelBackend',
    'django.contrib.auth.backends.RemoteUserBackend',
]

JWT_AUTH = {
    'JWT_EXPIRATION_DELTA': timedelta(days=14),
    'JWT_REFRESH_EXPIRATION_DELTA': timedelta(days=21),
    'JWT_ALLOW_REFRESH': True,
}
DANGEROUSLY_MAKE_ONE_TIME_PASSWORDLESS_TOKEN_MULTI_PASS = env(
    'DANGEROUSLY_MAKE_ONE_TIME_PASSWORDLESS_TOKEN_MULTI_PASS',
    cast=bool,
    default=False)
Example #2
0
from celery import Celery
from celery.schedules import crontab
from django.conf import settings

from app.conf.environ import env

__all__ = [
    'celery',
]

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'app.settings')

celery = Celery('app')

celery.conf.update(
    broker_url=env('REDISCLOUD_URL'),
    task_always_eager=env('CELERY_ALWAYS_EAGER', cast=bool, default=settings.DEBUG),  # by default in debug mode we run all celery tasks in foregroud.
    task_eager_propagates=True,
    task_ignore_result=True,
    timezone=env('TIME_ZONE', cast=str, default='Europe/Moscow'),
    enable_utc=False,
    beat_schedule={
        'run_started_purchase_trigger': {
            'task': 'triggers.tasks.check_for_started_purchase_triggers',
            'schedule': crontab(hour='*', minute=15),
        },
        'run_record_feedback_trigger': {
            'task': 'triggers.tasks.check_for_record_feedback_triggers',
            'schedule': crontab(hour='*', minute=15),
        },
        'ship_unshipped_orders': {
Example #3
0
from app.conf.environ import env

ZOOMUS_API_KEY = env('ZOOMUS_API_KEY', default=None, cast=str)
ZOOMUS_API_SECRET = env('ZOOMUS_API_SECRET', default=None, cast=str)
Example #4
0
from app.conf.environ import env

ABSOLUTE_HOST = env('ABSOLUTE_HOST',
                    cast=str,
                    default='https://edu-app.borshev.com')
ALLOWED_HOSTS = [
    'education-backend.herokuapp.com',
    'edu-app.borshev.com',
    'localhost',
    'localhost:8000',
    'education.borshev.com',
    ABSOLUTE_HOST.replace('https://', ''),
]

CSRF_TRUSTED_ORIGINS = [
    'education.borshev.com',
    'borshev.com',
]
CORS_ALLOWED_ORIGINS = [
    'https://education.borshev.com',
]
CORS_ORIGIN_REGEX_WHITELIST = [
    r'.*education-frontend.netlify.app.*',
]

FRONTEND_URL = env('FRONTEND_URL',
                   cast=str,
                   default='https://education.borshev.com/lms/')
DIPLOMA_FRONTEND_URL = env('DIPLOMA_FRONTEND_URL',
                           cast=str,
                           default='https://certificates.borshev.com/')
Example #5
0
from app.conf.environ import env

ALLOWED_HOSTS = ['*']  # host validation is not necessary in 2020
CSRF_TRUSTED_ORIGINS = [
    'your.app.origin',
]

if env('DEBUG'):
    ABSOLUTE_HOST = 'http://localhost:3000'
else:
    ABSOLUTE_HOST = 'https://your.app.com'
Example #6
0
from app.conf.environ import env

# Django REST Framework
# https://www.django-rest-framework.org/api-guide/settings/

DISABLE_THROTTLING = env('DISABLE_THROTTLING', cast=bool, default=False)
MAX_PAGE_SIZE = env('MAX_PAGE_SIZE', cast=int, default=1000)

REST_FRAMEWORK = {
    'DEFAULT_FILTER_BACKENDS':
    ('django_filters.rest_framework.DjangoFilterBackend', ),
    'DEFAULT_PERMISSION_CLASSES':
    ('rest_framework.permissions.IsAuthenticated', ),
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.TokenAuthentication',
        'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
    ),
    'DEFAULT_RENDERER_CLASSES': [
        'app.renderers.AppJSONRenderer',
    ],
    'DEFAULT_VERSIONING_CLASS':
    'rest_framework.versioning.NamespaceVersioning',
    'DEFAULT_PAGINATION_CLASS':
    'app.pagination.AppPagination',
    'PAGE_SIZE':
    env('PAGE_SIZE', cast=int, default=20),
}
Example #7
0
# This file was generated using http://github.com/f213/django starter template.
#
# Settings are split into multiple files using http://github.com/sobolevn/django-split-settings

from split_settings.tools import include

from app.conf.environ import env

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = env('SECRET_KEY')

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = env('DEBUG', cast=bool, default=False)
CI = env('CI', cast=bool, default=False)

include(
    'conf/api.py',
    'conf/auth.py',
    'conf/boilerplate.py',
    'conf/db.py',
    'conf/healthchecks.py',
    'conf/http.py',
    'conf/i18n.py',
    'conf/installed_apps.py',
    'conf/media.py',
    'conf/middleware.py',
    'conf/storage.py',
    'conf/sentry.py',
    'conf/static.py',
    'conf/templates.py',
    'conf/timezone.py',
Example #8
0
from app.conf.environ import env

MEDIA_URL = '/media/'
MEDIA_ROOT = env('MEDIA_ROOT', cast=str, default='media')
Example #9
0
from app.conf.environ import env

BOT_TOKEN = env('BOT_TOKEN', cast=str, default=None)
HAPPINESS_MESSAGES_CHAT_ID = env('HAPPINESS_MESSAGES_CHAT_ID',
                                 cast=str,
                                 default=None)
Example #10
0
from app.conf.environ import env

DEFAULT_FILE_STORAGE = env(
    'DEFAULT_FILE_STORAGE',
    cast=str,
    default='django.core.files.storage.FileSystemStorage')
AWS_ACCESS_KEY_ID = env('AWS_ACCESS_KEY_ID', default=None)
AWS_SECRET_ACCESS_KEY = env('AWS_SECRET_ACCESS_KEY', default=None)
AWS_STORAGE_BUCKET_NAME = env('AWS_STORAGE_BUCKET_NAME', default=None)
AWS_S3_REGION_NAME = env('AWS_S3_REGION_NAME', default=None)
AWS_S3_ENDPOINT_URL = env('AWS_S3_ENDPOINT_URL', default=None)
AWS_DEFAULT_ACL = env('AWS_DEFAULT_ACL', default='public-read')

AWS_S3_FILE_OVERWRITE = False
AWS_QUERYSTRING_AUTH = False
Example #11
0
from app.conf.environ import env

MEDIA_URL = env('MEDIA_URL', default='/media/')
Example #12
0
from app.conf.environ import env

DEFAULT_FILE_STORAGE = env(
    'DEFAULT_FILE_STORAGE',
    cast=str,
    default='django.core.files.storage.FileSystemStorage')
Example #13
0
from app.conf.environ import env

USE_TZ = False

TIME_ZONE = env('TIME_ZONE', cast=str, default='Europe/Moscow')
Example #14
0
import os.path

from app.conf.boilerplate import BASE_DIR
from app.conf.environ import env

STATIC_URL = env('STATIC_URL', default='/static/')
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
Example #15
0
from app.conf.environ import env

# Sentry
# https://sentry.io/for/django/

SENTRY_DSN = env('SENTRY_DSN', cast=str, default='')

if not env('DEBUG') and len(SENTRY_DSN):
    import sentry_sdk
    from sentry_sdk.integrations.django import DjangoIntegration

    sentry_sdk.init(
        dsn=SENTRY_DSN,
        integrations=[DjangoIntegration()],
    )
from app.conf.environ import env

CLICKMEETING_API_KEY = env('CLICKMEETING_API_KEY', default=None, cast=str)
Example #17
0
from split_settings.tools import include

from app.conf.environ import env

# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = env('SECRET_KEY', cast=str, default='s3cr3t')

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = env('DEBUG', cast=bool, default=False)
CI = env('CI', cast=bool, default=False)
ANONYMIZE_ENABLED = DEBUG

# Application definition

include(
    'conf/api.py',
    'conf/auth.py',
    'conf/boilerplate.py',
    'conf/cache.py',
    'conf/celery.py',
    'conf/db.py',
    'conf/email.py',
    'conf/features.py',
    'conf/healthchecks.py',
    'conf/http.py',
    'conf/i18n.py',
    'conf/installed_apps.py',
    'conf/markdown.py',
Example #18
0
from app.conf.environ import env

if not env('NO_CACHE', cast=bool, default=False):
    CACHES = {
        'default': env.cache('REDISCLOUD_URL'),
    }

CACHALOT_UNCACHABLE_TABLES = [
    'django_migrations',
    'django_content_type',
    'orders_order',  # https://github.com/noripyt/django-cachalot/issues/126
]
Example #19
0
from app.conf.environ import env

# Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases
DATABASES = {
    'default': env.db(),    # Raises ImproperlyConfigured exception if DATABASE_URL not in os.environ
}

if not env('DEBUG', cast=bool):
    DATABASES['default']['CONN_MAX_AGE'] = 600
Example #20
0
from app.conf.environ import env

DEBUG = env('DEBUG', cast=bool, default=False)

DISABLE_HOMEWORK_PERMISSIONS_CHECKING = env('DISABLE_HOMEWORK_PERMISSIONS_CHECKING', cast=bool, default=DEBUG)

DISABLE_NEW_ANSWER_NOTIFICATIONS = env('DISABLE_NEW_ANSWER_NOTIFICATIONS', cast=bool, default=False)
from app.conf.environ import env

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.RemoteUserMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'app.middleware.real_ip.real_ip_middleware',
    'axes.middleware.AxesMiddleware',
]

if not env('DEBUG') and not env('CI', cast=bool, default=False):
    MIDDLEWARE.insert(1, 'whitenoise.middleware.WhiteNoiseMiddleware')
Example #22
0
from app.conf.environ import env

DEBUG = env('DEBUG', cast=bool, default=False)

DISABLE_HOMEWORK_PERMISSIONS_CHECKING = env(
    'DISABLE_HOMEWORK_PERMISSIONS_CHECKING', cast=bool, default=DEBUG)
Example #23
0
from app.conf.environ import env

MEDIA_URL = env('MEDIA_URL', default='/media/')
MEDIA_ROOT = env('MEDIA_ROOT', cast=str, default='media')
Example #24
0
from app.conf.environ import env

EMAIL_ENABLED = env('EMAIL_ENABLED', cast=bool, default=False)

EMAIL_BACKEND = env('EMAIL_BACKEND',
                    default='django.core.mail.backends.console.EmailBackend')

MAILCHIMP_API_KEY = env('MAILCHIMP_API_KEY', default='')
MAILCHIMP_CONTACT_LIST_ID = env('MAILCHIMP_CONTACT_LIST_ID',
                                cast=str,
                                default=None)

DEFAULT_FROM_EMAIL = env('EMAIL_FROM', cast=str, default='')
ANYMAIL = {
    'POSTMARK_SERVER_TOKEN': env('POSTMARK_SERVER_TOKEN', cast=str,
                                 default=''),
    'DEBUG_API_REQUESTS': env('DEBUG'),
}
Example #25
0
from app.conf.environ import env

DISABLE_THROTTLING = env('DISABLE_THROTTLING', cast=bool, default=env('DEBUG'))

REST_FRAMEWORK = {
    'DEFAULT_FILTER_BACKENDS': [
        'django_filters.rest_framework.DjangoFilterBackend',
    ],
    'DEFAULT_PERMISSION_CLASSES':
    ('rest_framework.permissions.IsAuthenticated', ),
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.TokenAuthentication',
        'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
    ],
    'DEFAULT_RENDERER_CLASSES': [
        'app.renderers.AppJSONRenderer',
    ],
    'DEFAULT_VERSIONING_CLASS':
    'rest_framework.versioning.URLPathVersioning',
    'DEFAULT_PAGINATION_CLASS':
    'app.pagination.AppPagination',
    'EXCEPTION_HANDLER':
    'app.sentry_exception_handler.sentry_exception_handler',
    'PAGE_SIZE':
    20,
    'DEFAULT_THROTTLE_RATES': {
        'anon-auth': '10/min',
    },
}
DRF_RECAPTCHA_SECRET_KEY = env('RECAPTCHA_SECRET_KEY', cast=str, default='')
DRF_RECAPTCHA_TESTING = DRF_RECAPTCHA_TESTING_PASS = not env(
Example #26
0
from app.conf.environ import env

TINKOFF_TERMINAL_KEY = env('TINKOFF_TERMINAL_KEY', default=None)
TINKOFF_TERMINAL_PASSWORD = env('TINKOFF_TERMINAL_PASSWORD', default=None)
TINKOFF_CREDIT_SHOP_ID = env('TINKOFF_CREDIT_SHOP_ID', default=None)
TINKOFF_CREDIT_SHOWCASE_ID = env('TINKOFF_CREDIT_SHOWCASE_ID', default=None)

TINKOFF_CREDIT_DEMO_MODE = env('TINKOFF_CREDIT_DEMO_MODE', default=env('DEBUG'))
Example #27
0
from celery.schedules import crontab

from app.conf.environ import env

BROKER_URL = env('REDIS_URL')
CELERY_ALWAYS_EAGER = env('CELERY_ALWAYS_EAGER', cast=bool, default=env('DEBUG'))  # by default in debug mode we run all celery tasks in foregroud.
CELERY_TIMEZONE = env('TIME_ZONE', cast=str, default='Europe/Moscow')
CELERY_ENABLE_UTC = False
CELERYBEAT_SCHEDULE = {
    'run_started_purchase_trigger': {
        'task': 'triggers.tasks.check_for_started_purchase_triggers',
        'schedule': crontab(hour='*', minute=15),
    },
    'run_record_feedback_trigger': {
        'task': 'triggers.tasks.check_for_record_feedback_triggers',
        'schedule': crontab(hour='*', minute=15),
    },
    'ship_unshipped_orders': {
        'task': 'orders.tasks.ship_unshipped_orders',
        'schedule': crontab(hour='*', minute='*/2'),
    },
}
Example #28
0
from app.conf.environ import env

ABSOLUTE_HOST = env('ABSOLUTE_HOST',
                    cast=str,
                    default='https://edu-app.borshev.com')
ALLOWED_HOSTS = [
    'education-backend.herokuapp.com',
    'edu-app.borshev.com',
    'localhost',
    'localhost:8000',
    'education.borshev.com',
    ABSOLUTE_HOST.replace('https://', ''),
]

CSRF_TRUSTED_ORIGINS = [
    'education.borshev.com',
    'borshev.com',
]
CORS_ALLOWED_ORIGINS = [
    'https://education.borshev.com',
]
CORS_ORIGIN_REGEX_WHITELIST = [
    r'.*education-frontend.netlify.app.*',
]

FRONTEND_URL = env('FRONTEND_URL',
                   cast=str,
                   default='https://education.borshev.com/lms/')