64 lines
3.9 KiB
Python
64 lines
3.9 KiB
Python
import os
|
||
from datetime import timedelta
|
||
from pathlib import Path
|
||
BASE_DIR = Path(__file__).resolve().parent.parent
|
||
DEBUG = os.environ.get('DEBUG','false').lower() == 'true'
|
||
SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY', '')
|
||
if (not SECRET_KEY or SECRET_KEY.startswith('REMPLACE_')) and not DEBUG and os.environ.get('USE_SQLITE') != '1':
|
||
raise RuntimeError('Définis un DJANGO_SECRET_KEY aléatoire dans les variables d’environnement.')
|
||
if not SECRET_KEY:
|
||
SECRET_KEY = 'dev-only-unsafe-secret-key-for-local-tests'
|
||
ALLOWED_HOSTS = [x.strip() for x in os.environ.get('ALLOWED_HOSTS','localhost,127.0.0.1').split(',') if x.strip()]
|
||
INSTALLED_APPS = [
|
||
'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes',
|
||
'django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles',
|
||
'rest_framework','rest_framework_simplejwt','drive',
|
||
]
|
||
MIDDLEWARE = [
|
||
'django.middleware.security.SecurityMiddleware','whitenoise.middleware.WhiteNoiseMiddleware','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='core.urls'
|
||
TEMPLATES = [{'BACKEND':'django.template.backends.django.DjangoTemplates','DIRS':[], '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='core.wsgi.application'
|
||
if os.environ.get('USE_SQLITE')=='1':
|
||
DATABASES={'default':{'ENGINE':'django.db.backends.sqlite3','NAME':BASE_DIR/'test.sqlite3'}}
|
||
else:
|
||
DATABASES={'default':{'ENGINE':'django.db.backends.mysql',
|
||
'NAME':os.environ.get('MYSQL_DATABASE','bocagedrive'),'USER':os.environ.get('MYSQL_USER','bocagedrive'),
|
||
'PASSWORD':os.environ.get('MYSQL_PASSWORD',''),'HOST':os.environ.get('MYSQL_HOST','db'),
|
||
'PORT':os.environ.get('MYSQL_PORT','3306'), 'OPTIONS':{'charset':'utf8mb4'}}}
|
||
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='fr-fr'; TIME_ZONE='Europe/Paris'; USE_TZ=True; USE_I18N=True
|
||
STATIC_URL='/static/'; STATIC_ROOT=BASE_DIR/'staticfiles'
|
||
STORAGES={'staticfiles':{'BACKEND':'whitenoise.storage.CompressedManifestStaticFilesStorage'}}
|
||
DEFAULT_AUTO_FIELD='django.db.models.BigAutoField'
|
||
REST_FRAMEWORK={
|
||
'DEFAULT_AUTHENTICATION_CLASSES':['rest_framework_simplejwt.authentication.JWTAuthentication'],
|
||
'DEFAULT_PERMISSION_CLASSES':['rest_framework.permissions.IsAuthenticated'],
|
||
'DEFAULT_THROTTLE_CLASSES':['rest_framework.throttling.AnonRateThrottle'],
|
||
'DEFAULT_THROTTLE_RATES':{'anon':'30/min'},
|
||
}
|
||
SIMPLE_JWT={'ACCESS_TOKEN_LIFETIME':timedelta(minutes=30),'REFRESH_TOKEN_LIFETIME':timedelta(days=7),
|
||
'AUTH_HEADER_TYPES':('Bearer',)}
|
||
DRIVE_STORAGE_ROOT=Path(os.environ.get('DRIVE_STORAGE_ROOT','/data/files')).resolve()
|
||
FILE_UPLOAD_TEMP_DIR=str(DRIVE_STORAGE_ROOT.parent/'tmp')
|
||
Path(FILE_UPLOAD_TEMP_DIR).mkdir(parents=True,exist_ok=True)
|
||
DRIVE_STORAGE_ROOT.mkdir(parents=True,exist_ok=True)
|
||
DATA_UPLOAD_MAX_MEMORY_SIZE=5*1024*1024 # limits form-field memory, not file payload
|
||
FILE_UPLOAD_MAX_MEMORY_SIZE=0 # force uploads to use disk streaming
|
||
DRIVE_MAX_FILE_SIZE=int(os.environ.get('DRIVE_MAX_FILE_SIZE_MB','10240'))*1024*1024
|
||
SECURE_CONTENT_TYPE_NOSNIFF=True
|
||
SESSION_COOKIE_HTTPONLY=True
|
||
CSRF_COOKIE_HTTPONLY=True
|
||
SECURE_PROXY_SSL_HEADER=('HTTP_X_FORWARDED_PROTO','https')
|