""" Django settings for cloud-reader backend. Generated using Django 5.1. Customised with pydantic-settings integration. """ from pathlib import Path from config.settings import settings # --------------------------------------------------------------------------- # Build paths # --------------------------------------------------------------------------- BASE_DIR = Path(__file__).resolve().parent.parent # --------------------------------------------------------------------------- # Security # --------------------------------------------------------------------------- SECRET_KEY = settings.DJANGO_SECRET_KEY DEBUG = settings.DJANGO_DEBUG ALLOWED_HOSTS = settings.DJANGO_ALLOWED_HOSTS # --------------------------------------------------------------------------- # Application definition # --------------------------------------------------------------------------- INSTALLED_APPS = [ # Django built-in "django.contrib.admin", "django.contrib.auth", "django.contrib.contenttypes", "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", # Third-party "rest_framework", "rest_framework_simplejwt", "corsheaders", "django_filters", # Local apps "apps.users", "apps.books", "apps.annotations", "apps.reader", ] MIDDLEWARE = [ "corsheaders.middleware.CorsMiddleware", "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.debug", "django.template.context_processors.request", "django.contrib.auth.context_processors.auth", "django.contrib.messages.context_processors.messages", ], }, }, ] WSGI_APPLICATION = "config.wsgi.application" # --------------------------------------------------------------------------- # Database # --------------------------------------------------------------------------- DATABASES = { "default": { "ENGINE": "django.db.backends.postgresql", "NAME": settings.DB_NAME, "USER": settings.DB_USER, "PASSWORD": settings.DB_PASSWORD, "HOST": settings.DB_HOST, "PORT": settings.DB_PORT, } } # --------------------------------------------------------------------------- # Auth # --------------------------------------------------------------------------- AUTH_USER_MODEL = "users.User" AUTH_PASSWORD_VALIDATORS = [ {"NAME": "django.contrib.auth.password_validation.MinimumLengthValidator"}, {"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator"}, ] # --------------------------------------------------------------------------- # DRF # --------------------------------------------------------------------------- REST_FRAMEWORK = { "DEFAULT_AUTHENTICATION_CLASSES": ( "rest_framework_simplejwt.authentication.JWTAuthentication", ), "DEFAULT_PERMISSION_CLASSES": ( "rest_framework.permissions.IsAuthenticated", ), "DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.PageNumberPagination", "PAGE_SIZE": 50, "DEFAULT_FILTER_BACKENDS": [ "django_filters.rest_framework.DjangoFilterBackend", "rest_framework.filters.OrderingFilter", "rest_framework.filters.SearchFilter", ], } # --------------------------------------------------------------------------- # SimpleJWT # --------------------------------------------------------------------------- from datetime import timedelta SIMPLE_JWT = { "ACCESS_TOKEN_LIFETIME": timedelta(minutes=settings.JWT_ACCESS_TOKEN_LIFETIME_MINUTES), "REFRESH_TOKEN_LIFETIME": timedelta(days=settings.JWT_REFRESH_TOKEN_LIFETIME_DAYS), } # --------------------------------------------------------------------------- # CORS # --------------------------------------------------------------------------- CORS_ALLOWED_ORIGINS = settings.CORS_ALLOWED_ORIGINS # --------------------------------------------------------------------------- # i18n # --------------------------------------------------------------------------- LANGUAGE_CODE = "en-us" TIME_ZONE = "UTC" USE_I18N = True USE_TZ = True # --------------------------------------------------------------------------- # Static / Media # --------------------------------------------------------------------------- STATIC_URL = "static/" STATIC_ROOT = BASE_DIR / "staticfiles" MEDIA_URL = "media/" MEDIA_ROOT = BASE_DIR / "media" # --------------------------------------------------------------------------- # Default primary key # --------------------------------------------------------------------------- DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"