Files
dilib_operations/config/settings.py
T
ms 2c1c48df0c
PostgreSQL integration / tests (push) Has been cancelled
init
2026-11-09 13:15:48 +01:00

66 lines
4.8 KiB
Python

import os
from pathlib import Path
from urllib.parse import urlparse, unquote, parse_qs
from dotenv import load_dotenv
BASE_DIR=Path(__file__).resolve().parent.parent
load_dotenv(os.getenv('DASHBOARD_ENV_FILE', str(BASE_DIR/'.env')))
SECRET_KEY=os.environ.get('DJANGO_SECRET_KEY','')
if not SECRET_KEY or SECRET_KEY.startswith('CHANGE_ME'):
raise RuntimeError('Set a random DJANGO_SECRET_KEY in .env')
DEBUG=os.getenv('DEBUG','0')=='1'
ALLOWED_HOSTS=os.getenv('ALLOWED_HOSTS','127.0.0.1,localhost').split(',')
CSRF_TRUSTED_ORIGINS=list(filter(None,os.getenv('CSRF_TRUSTED_ORIGINS','').split(',')))
INSTALLED_APPS=['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','rest_framework','monitoring']
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='config.urls'
TEMPLATES=[{'BACKEND':'django.template.backends.django.DjangoTemplates','DIRS':[],'APP_DIRS':True,'OPTIONS':{'context_processors':['django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages']}}]
WSGI_APPLICATION='config.wsgi.application'
if os.getenv('TEST_SQLITE')=='1':
DATABASES={'default':{'ENGINE':'django.db.backends.sqlite3','NAME':BASE_DIR/'var/test.sqlite3'}}
else:
u=urlparse(os.environ['DATABASE_URL'])
if u.scheme not in ('postgres','postgresql'): raise RuntimeError('PostgreSQL is required')
DATABASES={'default':{'ENGINE':'django.db.backends.postgresql','NAME':u.path.lstrip('/'),'USER':unquote(u.username or ''),'PASSWORD':unquote(u.password or ''),'HOST':u.hostname,'PORT':u.port or 5432,'CONN_MAX_AGE':60,'OPTIONS':{k:v[0] for k,v in parse_qs(u.query).items() if k in ('sslmode','sslrootcert')}}}
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='de-de'
TIME_ZONE='Europe/Berlin'
USE_TZ=True
STATIC_URL='/static/'
STATIC_ROOT=BASE_DIR/'staticfiles'
DEFAULT_AUTO_FIELD='django.db.models.BigAutoField'
SECURE_PROXY_SSL_HEADER=('HTTP_X_FORWARDED_PROTO','https')
SESSION_COOKIE_SECURE=os.getenv('COOKIE_SECURE','1')=='1'
CSRF_COOKIE_SECURE=SESSION_COOKIE_SECURE
SECURE_CONTENT_TYPE_NOSNIFF=True
SECURE_HSTS_SECONDS=0 if DEBUG else 31536000
SECURE_HSTS_INCLUDE_SUBDOMAINS=False
SECURE_HSTS_PRELOAD=False
X_FRAME_OPTIONS='DENY'
DATA_UPLOAD_MAX_MEMORY_SIZE=2*1024*1024
REST_FRAMEWORK={'DEFAULT_AUTHENTICATION_CLASSES':['monitoring.auth.BearerAuthentication'],'DEFAULT_PERMISSION_CLASSES':['rest_framework.permissions.IsAuthenticated'],'DEFAULT_RENDERER_CLASSES':['rest_framework.renderers.JSONRenderer'],'DEFAULT_PARSER_CLASSES':['rest_framework.parsers.JSONParser'],'DEFAULT_THROTTLE_CLASSES':['rest_framework.throttling.AnonRateThrottle'],'DEFAULT_THROTTLE_RATES':{'anon':'60/min'}}
if os.getenv('TEST_SQLITE')=='1':
CACHES={'default':{'BACKEND':'django.core.cache.backends.locmem.LocMemCache'}}
else:
CACHES={'default':{'BACKEND':'django.core.cache.backends.redis.RedisCache','LOCATION':os.environ['CACHE_URL']}}
CELERY_BROKER_URL=os.environ.get('CELERY_BROKER_URL','redis://127.0.0.1:6379/5')
CELERY_TASK_IGNORE_RESULT=True
CELERY_TASK_SERIALIZER='json'
CELERY_ACCEPT_CONTENT=['json']
CELERY_TIMEZONE='UTC'
CELERY_BEAT_SCHEDULE={'alarms':{'task':'monitoring.tasks.evaluate_alarms','schedule':15.0},'mail':{'task':'monitoring.tasks.deliver_notifications','schedule':30.0},'retention':{'task':'monitoring.tasks.cleanup','schedule':3600.0}}
EMAIL_BACKEND=os.getenv('EMAIL_BACKEND','django.core.mail.backends.smtp.EmailBackend')
EMAIL_HOST=os.getenv('EMAIL_HOST','localhost')
EMAIL_PORT=int(os.getenv('EMAIL_PORT','25'))
EMAIL_USE_TLS=os.getenv('EMAIL_USE_TLS','0')=='1'
EMAIL_HOST_USER=os.getenv('EMAIL_HOST_USER','')
EMAIL_HOST_PASSWORD=os.getenv('EMAIL_HOST_PASSWORD','')
EMAIL_TIMEOUT=15
DEFAULT_FROM_EMAIL=os.getenv('DEFAULT_FROM_EMAIL','monitoring@localhost')
ALERT_RECIPIENTS=list(filter(None,os.getenv('ALERT_RECIPIENTS','').split(',')))
LOGGING={'version':1,'disable_existing_loggers':False,'handlers':{'console':{'class':'logging.StreamHandler'}},'root':{'handlers':['console'],'level':'INFO'}}
CELERY_WORKER_SEND_TASK_EVENTS=True
CELERY_TASK_SEND_SENT_EVENT=True
CELERY_TASK_TRACK_STARTED=True
CELERY_BROKER_CONNECTION_RETRY_ON_STARTUP=True