""" Django settings for plovidba_projekt project. Generated by 'django-admin startproject' using Django 4.2.9. For more information on this file, see https://docs.djangoproject.com/en/4.2/topics/settings/ For the full list of settings and their values, see https://docs.djangoproject.com/en/4.2/ref/settings/ """ from pathlib import Path # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent # dodano import os from osgeo import gdal from datetime import timedelta from .env import BASE_DIR, ENV_BOOL, ENV_LIST, ENV_NUM, ENV_STR, PARDIR # noqa BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = 'django-insecure-6iovioyxw5hqwp)0=zu&yu&p!ql34g+x(p4xgk79vs57zpinio' # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True # DEBUG = ENV_BOOL("DEBUG") ALLOWED_HOSTS = [] # CSRF_TRUSTED_ORIGINS = ENV_LIST("CSRF_TRUSTED_ORIGINS", ",", []), # CORS settings CORS_ALLOW_ALL_ORIGINS = False CORS_ALLOW_CREDENTIALS = True CORS_ALLOWED_ORIGINS = ENV_LIST("CORS_ALLOWED_ORIGINS", ",", []) # HTTP -> HTTPS USE_X_FORWARDED_HOST = True SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https") # Frontend FRONTEND_URL = ENV_STR("FRONTEND_URL") # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.gis', 'django_extensions', # 3rd party 'rest_framework', 'drf_yasg', # Custom apps: 'plovidba_aplikacija', 'user', ] 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 = 'plovidba_projekt.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 = 'plovidba_projekt.wsgi.application' # Database # https://docs.djangoproject.com/en/4.2/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': 'django.contrib.gis.db.backends.postgis', 'NAME': 'plovidba_db', 'USER': 'postgres', 'PASSWORD': 'postgres', 'HOST': 'localhost', 'PORT': '5432', } } DATABASES["default"]["TEST"] = { "NAME": ENV_STR("DATABASE_TEST_NAME", "test_plovidba_dev_db") } AUTH_USER_MODEL = "user.User" AUTHENTICATION_BACKENDS = [ # Needed to login by username in Django admin, regardless of `allauth` "django.contrib.auth.backends.ModelBackend", ] # Password validation # https://docs.djangoproject.com/en/4.2/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', }, ] # Substituting a custom User model AUTH_USER_MODEL = "user.User" # Define DRF settings REST_FRAMEWORK = { "DEFAULT_AUTHENTICATION_CLASSES": [ "rest_framework_simplejwt.authentication.JWTAuthentication", ], "DEFAULT_PERMISSION_CLASSES": [ "rest_framework.permissions.IsAuthenticated", ], "DEFAULT_FILTER_BACKENDS": ["django_filters.rest_framework.DjangoFilterBackend"], "DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.LimitOffsetPagination", "PAGE_SIZE": 100, } # # # AUTH SETTINGS # Force email based auth # Custom auth variables AUTH_AUTHENTICATION_METHOD = "email" # Options: username | email | username_email AUTH_EMAIL_REQUIRED = True AUTH_USERNAME_REQUIRED = False # Require username in registration AUTH_EMAIL_VERIFICATION = "mandatory" # AUTH_ACCESS_TOKEN_NAME = "access" # set access token name AUTH_REFRESH_TOKEN_NAME = "refresh" # set access token name # Simple JWT config SIMPLE_JWT = { "REFRESH_TOKEN_LIFETIME": timedelta( days=ENV_NUM("JWT_REFRESH_TOKEN_LIFETIME_DAYS", 15) ), "ROTATE_REFRESH_TOKENS": True, "ACCESS_TOKEN_LIFETIME": timedelta( minutes=ENV_NUM("JWT_ACCESS_TOKEN_LIFETIME_MINUTES", 10) ), "AUTH_COOKIE_SECURE": True, "AUTH_COOKIE_SAMESITE": "None", "AUTH_COOKIE_HTTP_ONLY": True, } # API docs SHOW_API_DOCS = ENV_BOOL("SHOW_API_DOCS", True) # Internationalization # https://docs.djangoproject.com/en/4.2/topics/i18n/ LANGUAGE_CODE = 'hr' TIME_ZONE = 'Europe/Zagreb' USE_I18N = True USE_L10N = True USE_TZ = True LOCALE_PATHS = [os.path.join(BASE_DIR, "locale")] # Available languages LANGUAGES = [ ("hr", ("Croatian")), ] # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/4.2/howto/static-files/ # folder containing static files for production purposes (manage.py collectstatic) STATIC_ROOT = os.path.join(BASE_DIR, "static") # static files for each app STATIC_URL = "/api/static/" # static files directories for each app #STATICFILES_DIRS = [ #os.path.join(BASE_DIR, "user/static"), #] # Media Folder MEDIA_ROOT = os.path.join(BASE_DIR, "media") MEDIA_URL = "/api/media/" # Resources DIR RESOURCES_DIR = os.path.join(BASE_DIR, "resources") # TEMP DIR TEMP_DIR = os.path.join(BASE_DIR, "temp") # # # Email and support settings # # # ADMIN_EMAIL = ENV_STR("ADMIN_EMAIL") EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend" EMAIL_HOST = ENV_STR("EMAIL_HOST", "smtp.office365.com") EMAIL_USE_TLS = ENV_BOOL("EMAIL_USER_TLS", True) EMAIL_PORT = ENV_NUM("EMAIL_PORT", 587) EMAIL_HOST_USER = ENV_STR("EMAIL_HOST_USER") EMAIL_HOST_PASSWORD = ENV_STR("EMAIL_HOST_PASSWORD") DEFAULT_FROM_EMAIL = ENV_STR("DEFAULT_FROM_EMAIL") EMAIL_USE_SSL = ENV_BOOL("EMAIL_USER_TLS", False) # Default primary key field type # https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' PROJ_LIB = ENV_STR("PROJ_LIB", None) GDAL_DATA = ENV_STR("GDAL_DATA", None) if PROJ_LIB: os.environ["PROJ_LIB"] = PROJ_LIB if GDAL_DATA: os.environ["GDAL_DATA"] = GDAL_DATA