| |
|
|
| import os |
| from pathlib import Path |
| import dj_database_url |
| from dotenv import load_dotenv |
|
|
| load_dotenv() |
|
|
| BASE_DIR = Path(__file__).resolve().parent.parent |
| SECRET_KEY = os.getenv('SECRET_KEY', 'django-insecure-default-key') |
| DEBUG = os.getenv('DEBUG', 'True') == 'True' |
| ALLOWED_HOSTS = ['*'] |
|
|
| INSTALLED_APPS = [ |
| 'django.contrib.admin', |
| 'django.contrib.auth', |
| 'django.contrib.contenttypes', |
| 'django.contrib.sessions', |
| 'django.contrib.messages', |
| 'django.contrib.staticfiles', |
| 'rest_framework', |
| 'corsheaders', |
| 'users', |
| 'finance', |
| 'ai_assistant', |
| 'importer', |
| ] |
|
|
| 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 = 'aureon_backend.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 = 'aureon_backend.wsgi.application' |
|
|
| DATABASES = { |
| 'default': dj_database_url.config( |
| default=os.getenv('DATABASE_URL'), |
| conn_max_age=600, |
| conn_health_checks=True, |
| ssl_require=True, |
| ) |
| } |
|
|
| 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 = 'en-us' |
| TIME_ZONE = 'UTC' |
| USE_I18N = True |
| USE_TZ = True |
| STATIC_URL = 'static/' |
| DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' |
|
|
| AUTH_USER_MODEL = 'users.User' |
|
|
| REST_FRAMEWORK = { |
| 'DEFAULT_AUTHENTICATION_CLASSES': [ |
| 'users.authentication.SupabaseAuthentication', |
| ], |
| 'DEFAULT_PERMISSION_CLASSES': [ |
| 'rest_framework.permissions.IsAuthenticated', |
| ], |
| 'EXCEPTION_HANDLER': 'rest_framework.views.exception_handler', |
| } |
|
|
| |
| SUPABASE_URL = os.getenv('SUPABASE_URL') |
| SUPABASE_KEY = os.getenv('SUPABASE_KEY') |
| SUPABASE_JWT_SECRET = os.getenv('SUPABASE_JWT_SECRET') |
|
|
| |
| CORS_ALLOW_ALL_ORIGINS = True |
| CORS_ALLOW_CREDENTIALS = True |
| CORS_ALLOW_HEADERS = [ |
| 'accept', |
| 'accept-encoding', |
| 'authorization', |
| 'content-type', |
| 'dnt', |
| 'origin', |
| 'user-agent', |
| 'x-csrftoken', |
| 'x-requested-with', |
| ] |
| CORS_ALLOW_METHODS = [ |
| 'DELETE', |
| 'GET', |
| 'OPTIONS', |
| 'PATCH', |
| 'POST', |
| 'PUT', |
| ] |
|
|
| |
| CSRF_TRUSTED_ORIGINS = [ |
| origin.strip() for origin in os.getenv( |
| 'CSRF_TRUSTED_ORIGINS', |
| 'http://localhost:5173,http://127.0.0.1:5173' |
| ).split(',') |
| if origin.strip() |
| ] |
| CSRF_COOKIE_SECURE = not DEBUG |
| CSRF_COOKIE_HTTPONLY = True |
|
|
| |
| CACHES = { |
| 'default': { |
| 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', |
| 'LOCATION': 'unique-snowflake', |
| 'TIMEOUT': 3600, |
| 'OPTIONS': { |
| 'MAX_ENTRIES': 1000 |
| } |
| } |
| } |
|
|
| |
| EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' |
| EMAIL_HOST = 'smtp.sendgrid.net' |
| EMAIL_PORT = 587 |
| EMAIL_USE_TLS = True |
| EMAIL_HOST_USER = 'apikey' |
| EMAIL_HOST_PASSWORD = os.getenv('SENDGRID_API_KEY', '') |
| DEFAULT_FROM_EMAIL = os.getenv('DEFAULT_FROM_EMAIL', 'noreply@aureon.com') |
|
|
| |
| LOGGING = { |
| 'version': 1, |
| 'disable_existing_loggers': False, |
| 'handlers': { |
| 'console': { |
| 'class': 'logging.StreamHandler', |
| }, |
| }, |
| 'root': { |
| 'handlers': ['console'], |
| 'level': 'INFO', |
| }, |
| 'loggers': { |
| 'django': { |
| 'handlers': ['console'], |
| 'level': 'INFO', |
| 'propagate': False, |
| }, |
| }, |
| } |