From 8971752e5b074683a28f76f3a2d6c386a5a0ccbd Mon Sep 17 00:00:00 2001 From: MOIS3Y Date: Mon, 4 Sep 2023 21:58:42 +0900 Subject: [PATCH] Modify: settings set casting default env vars change files path disable drf web render in prod --- logs_collector/logs_collector/settings.py | 58 ++++++++++------------- 1 file changed, 26 insertions(+), 32 deletions(-) diff --git a/logs_collector/logs_collector/settings.py b/logs_collector/logs_collector/settings.py index 3acb37f..9c72247 100644 --- a/logs_collector/logs_collector/settings.py +++ b/logs_collector/logs_collector/settings.py @@ -3,16 +3,22 @@ from pathlib import Path from datetime import timedelta -env = environ.Env( - # set casting default value - DEBUG=(bool, False), - SECRET_KEY=(str, 'j9QGbvM9Z4otb47') -) # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent -environ.Env.read_env(BASE_DIR / '.env') +# Set default environ variables: +env = environ.Env( + # set casting default value + DEBUG=(bool, False), + SECRET_KEY=(str, 'j9QGbvM9Z4otb47'), + SQLITE_URL=(str, f'sqlite:///{BASE_DIR / "data/db.sqlite3"}'), + CSRF_TRUSTED_ORIGINS=(list, []), + ALLOWED_HOSTS=(list, ['*']), + TZ=(str, 'UTC'), +) +# Read .env file if exist: +environ.Env.read_env(BASE_DIR / '.env') # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = env('SECRET_KEY') @@ -20,18 +26,13 @@ SECRET_KEY = env('SECRET_KEY') # SECURITY WARNING: don't run with debug turned on in production! DEBUG = env('DEBUG') -ALLOWED_HOSTS = env.list("ALLOWED_HOSTS", default=["*"]) +ALLOWED_HOSTS = env.list("ALLOWED_HOSTS") # https://docs.djangoproject.com/en/4.2/ref/settings/#csrf-trusted-origins if not DEBUG: - CSRF_TRUSTED_ORIGINS = env.list("CSRF_TRUSTED_ORIGINS", default=[]) - -# TODO: required for docker image -# CSRF_TRUSTED_ORIGINS = env.list("CSRF_TRUSTED_ORIGINS", default=["*"]) - + CSRF_TRUSTED_ORIGINS = env.list("CSRF_TRUSTED_ORIGINS") # Application definition - INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', @@ -88,18 +89,12 @@ TEMPLATES = [ WSGI_APPLICATION = 'logs_collector.wsgi.application' - # Database # https://docs.djangoproject.com/en/4.2/ref/settings/#databases - DATABASES = { - 'default': env.db_url( - 'SQLITE_URL', - default=f'sqlite:///{BASE_DIR / "db.sqlite3"}' - ) + 'default': env.db_url('SQLITE_URL') } - # Password validation # https://docs.djangoproject.com/en/4.2/ref/settings/#auth-password-validators @@ -118,19 +113,17 @@ AUTH_PASSWORD_VALIDATORS = [ }, ] - # Internationalization # https://docs.djangoproject.com/en/4.2/topics/i18n/ LANGUAGE_CODE = 'en-us' -TIME_ZONE = env('TZ', default='UTC') +TIME_ZONE = env('TZ') USE_I18N = True USE_TZ = True - # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/4.2/howto/static-files/ # Whitenoise: @@ -143,15 +136,14 @@ STATIC_ROOT = BASE_DIR / 'static' DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' -MEDIA_ROOT = BASE_DIR / 'archives' +MEDIA_ROOT = BASE_DIR / 'data/archives' STORAGES = { - # ... "default": { "BACKEND": "django.core.files.storage.FileSystemStorage", "OPTIONS": { "location": MEDIA_ROOT, - "base_url": "/archives/", + "base_url": "/download/archives/", }, }, "staticfiles": { @@ -162,19 +154,15 @@ STORAGES = { # django-crispy-forms and crispy-bootstrap5 # https://django-crispy-forms.readthedocs.io/en/latest/ CRISPY_ALLOWED_TEMPLATE_PACKS = "bootstrap5" - CRISPY_TEMPLATE_PACK = "bootstrap5" # https://www.django-rest-framework.org/api-guide/settings/ - REST_FRAMEWORK = { 'DEFAULT_RENDERER_CLASSES': [ 'rest_framework.renderers.JSONRenderer', - 'rest_framework.renderers.BrowsableAPIRenderer', ], 'DEFAULT_PARSER_CLASSES': [ 'rest_framework.parsers.JSONParser', - 'rest_framework.renderers.BrowsableAPIRenderer', 'rest_framework.parsers.MultiPartParser' ], 'DEFAULT_AUTHENTICATION_CLASSES': [ @@ -188,9 +176,16 @@ REST_FRAMEWORK = { # 'PAGE_SIZE': 3, } +if DEBUG: + REST_FRAMEWORK.get( + 'DEFAULT_RENDERER_CLASSES', [] + ).append('rest_framework.renderers.BrowsableAPIRenderer') + REST_FRAMEWORK.get( + 'DEFAULT_PARSER_CLASSES', [] + ).append('rest_framework.renderers.BrowsableAPIRenderer') + # https://drf-spectacular.readthedocs.io/en/latest/readme.html # TODO: set environ vars config! - SPECTACULAR_SETTINGS = { 'TITLE': 'Logs collector API', 'DESCRIPTION': 'Collector of archives with log files for further analysis', @@ -200,7 +195,6 @@ SPECTACULAR_SETTINGS = { } # https://django-rest-framework-simplejwt.readthedocs.io/en/latest/ - SIMPLE_JWT = { "ACCESS_TOKEN_LIFETIME": timedelta(minutes=60), "REFRESH_TOKEN_LIFETIME": timedelta(days=1),