""" Django settings for cp_video project. Generated by 'django-admin startproject' using Django 3.0.6. For more information on this file, see https://docs.djangoproject.com/en/3.0/topics/settings/ For the full list of settings and their values, see https://docs.djangoproject.com/en/3.0/ref/settings/ """ import os import environ import sys from pathlib import Path from django.core.management.utils import get_random_secret_key env = environ.Env(DEBUG=(bool, False)) # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = env('SECRET_KEY', default=get_random_secret_key()) # Take environment variables from .env file environ.Env.read_env(os.path.join(BASE_DIR, '.env')) # SECURITY WARNING: don't run with debug turned on in production! DEBUG = env('DEBUG', default=True) DEVELOPMENT_MODE = env('DEVELOPMENT_MODE', default=True) ALLOWED_HOSTS = env('ALLOWED_HOSTS', default=[]) # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'storages', 'rest_framework', 'django_celery_beat', 'apps.core', ] MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] ROOT_URLCONF = 'cp_video.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [ os.path.join(BASE_DIR, 'templates') ], '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 = 'cp_video.wsgi.application' # Database if DEVELOPMENT_MODE is True: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'cp_video', 'USER': 'django', 'PASSWORD': 'django', 'HOST': '127.0.0.1', } } elif len(sys.argv) > 0 and sys.argv[1] != 'collectstatic': if env('DATABASE_URL', default=None) is None: raise Exception('DATABASE_URL environment variable not defined') DATABASES = { 'default': env.db( 'DATABASE_URL', default='postgres://user:pass@postgreshost:5432/dbname' ), } # Password validation # https://docs.djangoproject.com/en/3.0/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', }, ] # Internationalization # https://docs.djangoproject.com/en/3.0/topics/i18n/ LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' USE_I18N = True USE_L10N = True USE_TZ = True # Static files (CSS, JavaScript, Images) STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'static/') MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media/') # Celery REDIS_URL = env('REDIS_URL', default=f'redis://127.0.0.1:6379') CELERY_BROKER_URL = env('CELERY_BROKER_URL', default=f'{REDIS_URL}') CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler' FILE_UPLOAD_MAX_MEMORY_SIZE = 900000000 # 900 MB # AWS path = f'{BASE_DIR}/cp_video/local.py' if os.path.exists(path): from .local import * else: AWS_STORAGE_BUCKET_NAME = env('AWS_STORAGE_BUCKET_NAME') AWS_ACCESS_KEY_ID = env('AWS_ACCESS_KEY_ID') AWS_SECRET_ACCESS_KEY = env('AWS_SECRET_ACCESS_KEY') AWS_REGION_NAME = env('AWS_REGION_NAME') # CloudFront AWS_S3_CUSTOM_DOMAIN = env('AWS_S3_CUSTOM_DOMAIN') DOMAIN_NAME = env('DOMAIN_NAME', default='http://localhost:8000') # Logs LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'default': { 'format': "%(asctime)s:%(name)s:%(levelname)s:%(message)s" }, 'verbose': { 'format': '%(levelname)s %(asctime)s %(name)s %(message)s', 'datefmt': '%Y-%m-%d %H:%M:%S', }, }, 'handlers': { 'console': { 'level': 'DEBUG', 'class': 'logging.StreamHandler', 'stream': sys.stdout, 'formatter': 'verbose', }, }, 'loggers': { 'django': { 'handlers': ['console'], 'level': 'INFO', 'propagate': True, }, 'django.request': { 'handlers': ['console'], 'level': 'ERROR', 'propagate': False, }, 'send_video_to_s3': { 'handlers': ['console'], 'level': 'INFO', 'propagate': True, }, }, }