Server configuration
Config keys are inputs read through the env adapter by get_defaults and get_production_defaults. Django settings are the values the application reads after settings assembly. A config key can supply a differently named or nested Django setting.
Defaults below are Python expressions from source, not values from a running project. A key without a default is required whenever its read executes. Production keys apply only when calling get_production_defaults; Mailgun keys apply only with that email backend. Projects can override the returned Django settings.
The settings inventory includes direct reads, local fallbacks, and selected conditional factory outputs. Standard Django settings used without changing their meaning can have explicit exemptions, listed below. Factory declarations show source expressions and overrides in order; they do not evaluate local variables or optional imports.
See Configuration surface and defaults for assembly and override behavior, and Configure cache and sessions for cache setup. Client configuration belongs in the JavaScript API reference.
Config keys
| Key | Django setting paths | Default or requirement |
|---|---|---|
ACCOUNT_REAUTHENTICATION_TIMEOUT | ACCOUNT_REAUTHENTICATION_TIMEOUT | 300 |
ALLAUTH_ACCOUNT_ADAPTER | ACCOUNT_ADAPTER | 'vueda.user.adapters.VuedaAllAuthAccountAdapter' |
ALLAUTH_HEADLESS_ADAPTER | HEADLESS_ADAPTER | 'vueda.user.adapters.VuedaAllAuthHeadlessAdapter' |
ALLAUTH_MFA_ADAPTER | MFA_ADAPTER | 'vueda.user.adapters.VuedaAllAuthMFAAdapter' |
ALLOWED_HOSTS | ALLOWED_HOSTS | Required when read |
ANYMAIL_MAILGUN_API_KEY | ANYMAIL_MAILGUN_API_KEY | Required when read |
ANYMAIL_MAILGUN_API_URL | ANYMAIL_MAILGUN_API_URL | 'https://api.mailgun.net/v3' |
ANYMAIL_MAILGUN_SENDER_DOMAIN | ANYMAIL_MAILGUN_SENDER_DOMAIN | Required when read |
ANYMAIL_MAILGUN_WEBHOOK_SIGNING_KEY | ANYMAIL_MAILGUN_WEBHOOK_SIGNING_KEY | Required when read |
ANYMAIL_WEBHOOK_SECRET | ANYMAIL_WEBHOOK_SECRET | Required when read |
AUTH_USER_MODEL | AUTH_USER_MODEL | Required when read |
CACHE_URL | CACHES.default | Required when read |
CELERY_BROKER_URL | CELERY_BROKER_URL | '' |
CORS_ALLOWED_ORIGINS | CORS_ALLOWED_ORIGINS | Required when read |
CSRF_TRUSTED_ORIGINS | CSRF_TRUSTED_ORIGINS | Required when read |
DATABASE_BACKUP_DIR | DATABASE_BACKUP_DIR | Required when read |
DATABASE_URL | DATABASES.default | Required when read |
DEBUG | DEBUG | False |
DJANGO_APPS | DJANGO_APPS | ['django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.postgres'] |
EMAIL_BACKEND | EMAIL_BACKEND, MAILERS.default.BACKEND | 'django.core.mail.backends.console.EmailBackend' |
EMAIL_SUBJECT_PREFIX | EMAIL_SUBJECT_PREFIX | '' |
FRONTEND_DOMAIN | FRONTEND_DOMAIN | Required when read |
FRONTEND_LOGIN_URL | FRONTEND_LOGIN_URL | Required when read |
FRONTEND_RESET_URL | FRONTEND_RESET_URL | '/reset-password' |
LANGUAGE_CODE | LANGUAGE_CODE | 'en-us' |
LOCAL_APPS | LOCAL_APPS | [] |
LOGS_FOLDER | LOGGING.handlers.file.filename | '.' |
MEDIA_ROOT | MEDIA_ROOT | '/tmp/media' |
MEDIA_URL | MEDIA_URL | '/media/' |
NO_REPLY_EMAIL | NO_REPLY_EMAIL | Required when read |
PACKAGE_MANAGER | PACKAGE_MANAGER | 'auto' |
SECRET_KEY | SECRET_KEY | Required when read |
SECURE_CONTENT_TYPE_NOSNIFF | SECURE_CONTENT_TYPE_NOSNIFF | True |
SECURE_CROSS_ORIGIN_OPENER_POLICY | SECURE_CROSS_ORIGIN_OPENER_POLICY | 'same-origin' |
SECURE_HSTS_SECONDS | SECURE_HSTS_SECONDS | 31536000 |
SECURE_REFERRER_POLICY | SECURE_REFERRER_POLICY | 'same-origin' |
SENTRY_DSN | SENTRY_DSN | Required when read |
SENTRY_ENVIRONMENT | SENTRY_ENVIRONMENT | 'production' |
SENTRY_LOG_LEVEL | SENTRY_LOG_LEVEL | logging.INFO |
SENTRY_TRACES_SAMPLE_RATE | SENTRY_TRACES_SAMPLE_RATE | 0.1 |
SITE_ID | SITE_ID | 1 |
SITE_NAME | SITE_NAME | Required when read |
STATIC_ROOT | STATIC_ROOT | Required when read |
STATIC_URL | STATIC_URL | '/static/' |
STATICFILES_DIRS | STATICFILES_DIRS | Required when read |
SUPPORT_EMAIL | SUPPORT_EMAIL | Required when read |
TEST_POSTGRES_DB | TEST_POSTGRES_DB | 'dbname=postgres user=postgres' |
THIRD_PARTY_APPS | THIRD_PARTY_APPS | ['rest_framework', 'corsheaders', 'django_extensions', 'private_storage', 'django_filters', 'generic_relations', 'phonenumber_field', 'anymail', 'allauth', 'allauth.account', 'allauth.headless', 'allauth.mfa'] |
TIME_ZONE | TIME_ZONE | Required when read |
TWILIO_ACCOUNT_SID | TWILIO_ACCOUNT_SID | '' |
TWILIO_AUTH_TOKEN | TWILIO_AUTH_TOKEN | '' |
TWILIO_CALLER_ID | TWILIO_CALLER_ID | '' |
VUEDA_APPS | VUEDA_APPS | ['vueda.core', 'vueda.history', 'vueda.info', 'vueda.user', 'vueda.workflow', 'vueda.vdq', 'vueda.release'] |
VUEDA_USER_ADAPTER | VUEDA_USER_ADAPTER | 'vueda.user.adapters.DefaultUserAdapter' |
ACCOUNT_REAUTHENTICATION_TIMEOUT
Time in seconds during which django-allauth considers a recent authentication valid for reauthentication checks.
Django setting paths: ACCOUNT_REAUTHENTICATION_TIMEOUT.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env.int(...) | 300 | Base defaults | server/vueda/core/default_settings.py:304 |
ALLAUTH_ACCOUNT_ADAPTER
Class path assigned to ACCOUNT_ADAPTER for django-allauth account behavior.
Django setting paths: ACCOUNT_ADAPTER.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | 'vueda.user.adapters.VuedaAllAuthAccountAdapter' | Base defaults | server/vueda/core/default_settings.py:300 |
ALLAUTH_HEADLESS_ADAPTER
Class path assigned to HEADLESS_ADAPTER for django-allauth headless behavior.
Django setting paths: HEADLESS_ADAPTER.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | 'vueda.user.adapters.VuedaAllAuthHeadlessAdapter' | Base defaults | server/vueda/core/default_settings.py:299 |
ALLAUTH_MFA_ADAPTER
Class path assigned to MFA_ADAPTER for django-allauth multi-factor authentication behavior.
Django setting paths: MFA_ADAPTER.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | 'vueda.user.adapters.VuedaAllAuthMFAAdapter' | Base defaults | server/vueda/core/default_settings.py:301 |
ALLOWED_HOSTS
Hostnames that Django accepts in incoming requests. Use hostnames without URL schemes or ports.
Django setting paths: ALLOWED_HOSTS.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env.list(...) | Required when read | Base defaults | server/vueda/core/default_settings.py:181 |
ANYMAIL_MAILGUN_API_KEY
API credential for sending email through Mailgun.
Django setting paths: ANYMAIL_MAILGUN_API_KEY.
Applies: When EMAIL_BACKEND selects anymail.backends.mailgun.EmailBackend.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | Required when read | Base defaults; email_backend == 'anymail.backends.mailgun.EmailBackend' | server/vueda/core/default_settings.py:411 |
ANYMAIL_MAILGUN_API_URL
Mailgun API base URL used by the email backend.
Django setting paths: ANYMAIL_MAILGUN_API_URL.
Applies: When EMAIL_BACKEND selects anymail.backends.mailgun.EmailBackend.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | 'https://api.mailgun.net/v3' | Base defaults; email_backend == 'anymail.backends.mailgun.EmailBackend' | server/vueda/core/default_settings.py:413 |
ANYMAIL_MAILGUN_SENDER_DOMAIN
Mailgun sending domain for outgoing email.
Django setting paths: ANYMAIL_MAILGUN_SENDER_DOMAIN.
Applies: When EMAIL_BACKEND selects anymail.backends.mailgun.EmailBackend.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | Required when read | Base defaults; email_backend == 'anymail.backends.mailgun.EmailBackend' | server/vueda/core/default_settings.py:412 |
ANYMAIL_MAILGUN_WEBHOOK_SIGNING_KEY
Signing key for validating Mailgun webhook payloads.
Django setting paths: ANYMAIL_MAILGUN_WEBHOOK_SIGNING_KEY.
Applies: When EMAIL_BACKEND selects anymail.backends.mailgun.EmailBackend.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | Required when read | Base defaults; email_backend == 'anymail.backends.mailgun.EmailBackend' | server/vueda/core/default_settings.py:414 |
ANYMAIL_WEBHOOK_SECRET
Shared secret used by django-anymail webhook authentication.
Django setting paths: ANYMAIL_WEBHOOK_SECRET.
Applies: When EMAIL_BACKEND selects anymail.backends.mailgun.EmailBackend.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | Required when read | Base defaults; email_backend == 'anymail.backends.mailgun.EmailBackend' | server/vueda/core/default_settings.py:415 |
AUTH_USER_MODEL
Django user model label used by VUEDA model relationships and migration generation.
Django setting paths: AUTH_USER_MODEL.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | Required when read | Base defaults | server/vueda/core/default_settings.py:223 |
CACHE_URL
Cache connection URL parsed into CACHES.default. Required because the factory stores sessions in this cache. Use a shared cache for multiple worker processes; a Redis URL also needs the redis extra.
Django setting paths: CACHES.default.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env.dj_cache_url(...) | Required when read | Base defaults | server/vueda/core/default_settings.py:189 |
CELERY_BROKER_URL
Broker URL for Celery task delivery, including the VDQ dispatch queue.
Django setting paths: CELERY_BROKER_URL.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | '' | Base defaults | server/vueda/core/default_settings.py:131 |
CORS_ALLOWED_ORIGINS
Origins allowed by the configured CORS middleware for HTTP and ASGI requests.
Django setting paths: CORS_ALLOWED_ORIGINS.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env.list(...) | Required when read | Base defaults | server/vueda/core/default_settings.py:372 |
CSRF_TRUSTED_ORIGINS
Origins Django trusts for CSRF origin checks. Include each origin’s URL scheme.
Django setting paths: CSRF_TRUSTED_ORIGINS.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env.list(...) | Required when read | Base defaults | server/vueda/core/default_settings.py:206 |
DATABASE_BACKUP_DIR
Directory where the VUEDA update command writes a PostgreSQL backup before applying migrations.
Django setting paths: DATABASE_BACKUP_DIR.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | Required when read | Base defaults | server/vueda/core/default_settings.py:399 |
DATABASE_URL
Database connection URL parsed into DATABASES.default. The factory enables atomic requests, disables persistent connections, and selects repeatable-read isolation for supported PostgreSQL backends.
Django setting paths: DATABASES.default.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env.dj_db_url(...) | Required when read | Base defaults | server/vueda/core/default_settings.py:182 |
DEBUG
Enables Django debug mode and VUEDA debug routes and exception details. Also lowers the CORS preflight cache lifetime to 600 seconds.
Django setting paths: DEBUG.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env.bool(...) | False | Base defaults | server/vueda/core/default_settings.py:135 |
DJANGO_APPS
Django applications included in the assembled INSTALLED_APPS list.
Django setting paths: DJANGO_APPS.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env.list(...) | ['django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.postgres'] | Base defaults | server/vueda/core/default_settings.py:254 |
EMAIL_BACKEND
Email backend class path. The console backend prints messages during development. With use_mailers=True, the factory places this value in MAILERS.default.BACKEND; otherwise it sets EMAIL_BACKEND. Selecting the Mailgun backend also reads the ANYMAIL_MAILGUN_* keys and ANYMAIL_WEBHOOK_SECRET.
Django setting paths: EMAIL_BACKEND, MAILERS.default.BACKEND.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | 'django.core.mail.backends.console.EmailBackend' | Base defaults | server/vueda/core/default_settings.py:128 |
EMAIL_SUBJECT_PREFIX
Prefix for account email subjects. When empty, the user adapter uses SITE_NAME in square brackets.
Django setting paths: EMAIL_SUBJECT_PREFIX.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | '' | Base defaults | server/vueda/core/default_settings.py:190 |
FRONTEND_DOMAIN
Frontend origin prepended to login and password-reset paths in account emails.
Django setting paths: FRONTEND_DOMAIN.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | Required when read | Base defaults | server/vueda/core/default_settings.py:173 |
FRONTEND_LOGIN_URL
Frontend login path used in account emails, appended to FRONTEND_DOMAIN.
Django setting paths: FRONTEND_LOGIN_URL.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | Required when read | Base defaults | server/vueda/core/default_settings.py:174 |
FRONTEND_RESET_URL
Frontend password-reset path used to build the reset link with its token and user identifier.
Django setting paths: FRONTEND_RESET_URL.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | '/reset-password' | Base defaults | server/vueda/core/default_settings.py:175 |
LANGUAGE_CODE
Default language code used by Django.
Django setting paths: LANGUAGE_CODE.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | 'en-us' | Base defaults | server/vueda/core/default_settings.py:177 |
LOCAL_APPS
Project applications appended to INSTALLED_APPS. VUEDA also uses this list to group models in the permissions overview.
Django setting paths: LOCAL_APPS.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env.list(...) | [] | Base defaults | server/vueda/core/default_settings.py:296 |
LOGS_FOLDER
Directory containing django.log for the rotating file handler declared in LOGGING. The root logger uses only the console handler by default.
Django setting paths: LOGGING.handlers.file.filename.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | '.' | Base defaults | server/vueda/core/default_settings.py:158 |
MEDIA_ROOT
Filesystem directory for uploaded media.
Django setting paths: MEDIA_ROOT.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | '/tmp/media' | Base defaults | server/vueda/core/default_settings.py:216 |
MEDIA_URL
URL prefix for uploaded media.
Django setting paths: MEDIA_URL.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | '/media/' | Base defaults | server/vueda/core/default_settings.py:217 |
NO_REPLY_EMAIL
Sender address for user account email and the SYSTEM sender record used by VDQ.
Django setting paths: NO_REPLY_EMAIL.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | Required when read | Base defaults | server/vueda/core/default_settings.py:203 |
PACKAGE_MANAGER
Returned package-manager preference (auto, uv, or pipenv). The current update command detects the manager from project files and executable availability; it does not read this setting.
Django setting paths: PACKAGE_MANAGER.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | 'auto' | Base defaults | server/vueda/core/default_settings.py:400 |
SECRET_KEY
Django signing secret. Supply a private value for each project environment.
Django setting paths: SECRET_KEY.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | Required when read | Base defaults | server/vueda/core/default_settings.py:136 |
SECURE_CONTENT_TYPE_NOSNIFF
Controls the nosniff response header from Django security middleware.
Django setting paths: SECURE_CONTENT_TYPE_NOSNIFF.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env.bool(...) | True | Base defaults | server/vueda/core/default_settings.py:195 |
SECURE_CROSS_ORIGIN_OPENER_POLICY
Cross-origin opener policy for Django security middleware. An empty string becomes None and disables the header.
Django setting paths: SECURE_CROSS_ORIGIN_OPENER_POLICY.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | 'same-origin' | Base defaults | server/vueda/core/default_settings.py:196 |
SECURE_HSTS_SECONDS
Lifetime in seconds advertised by the HTTP Strict Transport Security header.
Django setting paths: SECURE_HSTS_SECONDS.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env.int(...) | 31536000 | Base defaults | server/vueda/core/default_settings.py:197 |
SECURE_REFERRER_POLICY
Referrer policy for Django security middleware. An empty string becomes None and disables the header.
Django setting paths: SECURE_REFERRER_POLICY.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | 'same-origin' | Base defaults | server/vueda/core/default_settings.py:199 |
SENTRY_DSN
Sentry destination supplied by the production defaults for project error-reporting setup.
Django setting paths: SENTRY_DSN.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | Required when read | Production defaults | server/vueda/core/default_settings.py:547 |
SENTRY_ENVIRONMENT
Environment name supplied by the production defaults for Sentry events.
Django setting paths: SENTRY_ENVIRONMENT.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | 'production' | Production defaults | server/vueda/core/default_settings.py:549 |
SENTRY_LOG_LEVEL
Logging threshold supplied by the production defaults. logging.INFO is the Python INFO logging level.
Django setting paths: SENTRY_LOG_LEVEL.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env.int(...) | logging.INFO | Production defaults | server/vueda/core/default_settings.py:548 |
SENTRY_TRACES_SAMPLE_RATE
Trace sampling rate supplied by the production defaults for Sentry.
Django setting paths: SENTRY_TRACES_SAMPLE_RATE.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env.float(...) | 0.1 | Production defaults | server/vueda/core/default_settings.py:550 |
SITE_ID
Django sites framework identifier for this installation.
Django setting paths: SITE_ID.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env.int(...) | 1 | Base defaults | server/vueda/core/default_settings.py:176 |
SITE_NAME
Site name in account email templates and the fallback email subject prefix.
Django setting paths: SITE_NAME.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | Required when read | Base defaults | server/vueda/core/default_settings.py:200 |
STATIC_ROOT
Destination directory for collected static files.
Django setting paths: STATIC_ROOT.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | Required when read | Base defaults | server/vueda/core/default_settings.py:209 |
STATIC_URL
URL prefix for static files.
Django setting paths: STATIC_URL.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | '/static/' | Base defaults | server/vueda/core/default_settings.py:210 |
STATICFILES_DIRS
Additional directories searched for static files.
Django setting paths: STATICFILES_DIRS.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env.list(...) | Required when read | Base defaults | server/vueda/core/default_settings.py:211 |
SUPPORT_EMAIL
Support address inserted into account email context.
Django setting paths: SUPPORT_EMAIL.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | Required when read | Base defaults | server/vueda/core/default_settings.py:201 |
TEST_POSTGRES_DB
PostgreSQL connection string supplied as TEST_POSTGRES_DB for project test setup.
Django setting paths: TEST_POSTGRES_DB.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | 'dbname=postgres user=postgres' | Base defaults | server/vueda/core/default_settings.py:353 |
THIRD_PARTY_APPS
Third-party applications included in INSTALLED_APPS. The factory appends pgtrigger and pghistory, plus drf_spectacular when importable.
Django setting paths: THIRD_PARTY_APPS.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env.list(...) | ['rest_framework', 'corsheaders', 'django_extensions', 'private_storage', 'django_filters', 'generic_relations', 'phonenumber_field', 'anymail', 'allauth', 'allauth.account', 'allauth.headless', 'allauth.mfa'] | Base defaults | server/vueda/core/default_settings.py:279 |
TIME_ZONE
Default time zone used by Django. The factory also enables time-zone-aware datetimes.
Django setting paths: TIME_ZONE.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | Required when read | Base defaults | server/vueda/core/default_settings.py:178 |
TWILIO_ACCOUNT_SID
Twilio account identifier. VDQ initializes its Twilio client and status polling only when this value is nonempty and the Twilio package is available.
Django setting paths: TWILIO_ACCOUNT_SID.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | '' | Base defaults | server/vueda/core/default_settings.py:132 |
TWILIO_AUTH_TOKEN
Twilio credential used to send SMS messages and validate incoming webhook signatures.
Django setting paths: TWILIO_AUTH_TOKEN.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | '' | Base defaults | server/vueda/core/default_settings.py:134 |
TWILIO_CALLER_ID
Sender phone number for user account SMS messages and the SYSTEM sender record.
Django setting paths: TWILIO_CALLER_ID.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | '' | Base defaults | server/vueda/core/default_settings.py:133 |
VUEDA_APPS
VUEDA applications included in INSTALLED_APPS. The factory requires vueda.history because the shipped migrations depend on it. Including vueda.workflow also adds its OpenAPI tag when drf_spectacular is available.
Django setting paths: VUEDA_APPS.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env.list(...) | ['vueda.core', 'vueda.history', 'vueda.info', 'vueda.user', 'vueda.workflow', 'vueda.vdq', 'vueda.release'] | Base defaults | server/vueda/core/default_settings.py:266 |
VUEDA_USER_ADAPTER
Class path for the user adapter that implements VUEDA account operations.
Django setting paths: VUEDA_USER_ADAPTER.
| Accessor | Default or requirement | Scope | Read at |
|---|---|---|---|
env(...) | 'vueda.user.adapters.DefaultUserAdapter' | Base defaults | server/vueda/core/default_settings.py:278 |
Django settings
Local fallbacks belong to individual reads. They do not replace values supplied by the defaults factories or by a project's settings module.
AUTH_USER_MODELCACHESCOLUMN_TOTALS_PARAMCORS_ALLOW_CREDENTIALSCORS_ALLOW_HEADERSCORS_ALLOW_METHODSCORS_ALLOWED_ORIGINSCORS_EXPOSE_HEADERSCORS_PREFLIGHT_MAX_AGEDATABASE_BACKUP_DIRDATABASESDEBUGEMAIL_BACKENDEMAIL_SUBJECT_PREFIXEMAIL_TIMEOUTFRONTEND_DOMAINFRONTEND_LOGIN_URLFRONTEND_RESET_URLIN_TESTSINSTALLED_APPSLOCAL_APPSMAILERSMAX_PAGE_SIZEMIDDLEWARENO_REPLY_EMAILPAGE_QUERY_PARAMPAGE_SIZE_QUERY_PARAMPERMISSION_NAMES_MAPPINGPGHISTORY_APPEND_ONLYPGHISTORY_CREATED_AT_FUNCTIONQUEUE_ITEM_SERIALIZERREST_AUTHREST_FLEX_FIELDS2REST_FRAMEWORKSEND_QUEUE_VIEWSETSENT_ITEM_SERIALIZERSENT_ITEM_VIEWSETSESSION_CACHE_ALIASSESSION_ENGINESITE_NAMESPECTACULAR_SETTINGSSUPPORT_EMAILTWILIO_ACCOUNT_SIDTWILIO_AUTH_TOKENTWILIO_CALLER_IDTWILIO_WEBHOOK_URLVDQ_EMAIL_TRACKING_STRATEGYVDQ_MAX_FILES_AGE_IN_SECONDSVDQ_TWILIO_SMS_TIMEOUT_HOURSVDQ_URLVUEDA_USER_ADAPTERVUEDA_VDQ_RECEIVER_MODELVUEDA_VDQ_SENDER_MODEL
AUTH_USER_MODEL
Django user model label used by VUEDA model relationships and migration generation.
Config input: AUTH_USER_MODEL.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:223.
AUTH_USER_MODEL = env('AUTH_USER_MODEL')No fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/user/management/commands/makegroupmigrations.py:497 | attribute | None supplied |
server/vueda/user/migrations/0001_initial.py:9 | attribute | None supplied |
server/vueda/user/migrations/0001_initial.py:22 | attribute | None supplied |
server/vueda/user/migrations/0001_initial.py:34 | attribute | None supplied |
server/vueda/user/migrations/0003_totpdevice.py:14 | attribute | None supplied |
server/vueda/user/migrations/0003_totpdevice.py:59 | attribute | None supplied |
server/vueda/user/migrations/0006_totpdeviceevent_totpdevice_insert_insert_and_more.py:17 | attribute | None supplied |
server/vueda/user/migrations/0006_totpdeviceevent_totpdevice_insert_insert_and_more.py:132 | attribute | None supplied |
server/vueda/user/models.py:208 | attribute | None supplied |
server/vueda/vdq/migrations/0002_workflow_migrations_2025_09_22.py:2122 | attribute | None supplied |
server/vueda/vdq/migrations/0005_workflow_migrations_2025_11_21.py:1018 | attribute | None supplied |
server/vueda/workflow/management/commands/makeworkflowmigrations.py:173 | attribute | None supplied |
server/vueda/workflow/migrations/0001_initial.py:25 | attribute | None supplied |
server/vueda/workflow/migrations/0001_initial.py:195 | attribute | None supplied |
server/vueda/workflow/migrations/0002_statepermission_historical_group_name_and_more.py:14 | attribute | None supplied |
server/vueda/workflow/migrations/0002_statepermission_historical_group_name_and_more.py:114 | attribute | None supplied |
server/vueda/workflow/migrations/0002_statepermission_historical_group_name_and_more.py:176 | attribute | None supplied |
server/vueda/workflow/migrations/0002_statepermission_historical_group_name_and_more.py:241 | attribute | None supplied |
server/vueda/workflow/migrations/0002_statepermission_historical_group_name_and_more.py:303 | attribute | None supplied |
server/vueda/workflow/migrations/0002_statepermission_historical_group_name_and_more.py:366 | attribute | None supplied |
server/vueda/workflow/migrations/0002_statepermission_historical_group_name_and_more.py:426 | attribute | None supplied |
server/vueda/workflow/migrations/0002_statepermission_historical_group_name_and_more.py:501 | attribute | None supplied |
server/vueda/workflow/migrations/0002_statepermission_historical_group_name_and_more.py:542 | attribute | None supplied |
CACHES
VUEDA checks that the cache selected for sessions can be shared between production workers.
Config input: CACHE_URL.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:189.
CACHES = {'default': env.dj_cache_url('CACHE_URL')}Local fallback values: {}. These apply only at the read sites that supply them.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/core/checks.py:468 | getattr | {} |
COLUMN_TOTALS_PARAM
Query parameter selecting named column totals for list requests. The client has a matching constant that must change with this setting.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:369.
COLUMN_TOTALS_PARAM = 'ct'No fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/core/open_api.py:453 | attribute | None supplied |
server/vueda/core/viewsets/__init__.py:348 | attribute | None supplied |
server/vueda/core/viewsets/__init__.py:1309 | attribute | None supplied |
CORS_ALLOW_CREDENTIALS
Allows credentials in cross-origin requests accepted by the CORS middleware.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:396.
CORS_ALLOW_CREDENTIALS = TrueNo fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/core/middleware.py:73 | attribute | None supplied |
CORS_ALLOW_HEADERS
Request headers allowed by the CORS middleware, including VUEDA’s dry-run and acknowledge-warnings headers.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:381.
CORS_ALLOW_HEADERS = ['accept', 'accept-encoding', 'content-type', 'user-agent', 'x-csrftoken', 'x-requested-with', 'dry-run', 'acknowledge-warnings']No fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/core/middleware.py:70 | attribute | None supplied |
CORS_ALLOW_METHODS
HTTP methods allowed by the CORS middleware.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:373.
CORS_ALLOW_METHODS = ['DELETE', 'GET', 'OPTIONS', 'PATCH', 'POST', 'PUT']No fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/core/middleware.py:72 | attribute | None supplied |
CORS_ALLOWED_ORIGINS
Origins allowed by the configured CORS middleware for HTTP and ASGI requests.
Config input: CORS_ALLOWED_ORIGINS.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:372.
CORS_ALLOWED_ORIGINS = env.list('CORS_ALLOWED_ORIGINS')No fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/core/middleware.py:69 | attribute | None supplied |
CORS_EXPOSE_HEADERS
Response headers readable by cross-origin browser clients. The factory exposes content-disposition and retry-after.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:391.
CORS_EXPOSE_HEADERS = ['content-disposition', 'retry-after']No fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/core/middleware.py:71 | attribute | None supplied |
CORS_PREFLIGHT_MAX_AGE
Lifetime in seconds of cached CORS preflight results. DEBUG reduces the factory value from 86400 to 600.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:395.
CORS_PREFLIGHT_MAX_AGE = 86400Base defaults; return_dict['DEBUG']. Source: server/vueda/core/default_settings.py:419.
CORS_PREFLIGHT_MAX_AGE = 600No fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/core/middleware.py:74 | attribute | None supplied |
DATABASE_BACKUP_DIR
Directory where the VUEDA update command writes a PostgreSQL backup before applying migrations.
Config input: DATABASE_BACKUP_DIR.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:399.
DATABASE_BACKUP_DIR = env('DATABASE_BACKUP_DIR')No fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/update.py:235 | attribute | None supplied |
DATABASES
The update command reads the default database connection to create backups.
Config input: DATABASE_URL.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:182.
DATABASES = {'default': env.dj_db_url('DATABASE_URL')}Base defaults. Source: server/vueda/core/default_settings.py:492.
DATABASES["default"]["ATOMIC_REQUESTS"] = TrueBase defaults; 'OPTIONS' not in return_dict['DATABASES']['default']. Source: server/vueda/core/default_settings.py:494.
DATABASES["default"]["OPTIONS"] = {}Base defaults; return_dict['DATABASES']['default'].get('ENGINE') in _POSTGRES_ENGINES. Source: server/vueda/core/default_settings.py:496.
DATABASES["default"]["OPTIONS"]["isolation_level"] = IsolationLevel.REPEATABLE_READBase defaults. Source: server/vueda/core/default_settings.py:498.
DATABASES["default"]["CONN_MAX_AGE"] = 0No fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/update.py:236 | attribute | None supplied |
server/vueda/update.py:237 | attribute | None supplied |
DEBUG
Enables Django debug mode and VUEDA debug routes and exception details. Also lowers the CORS preflight cache lifetime to 600 seconds.
Config input: DEBUG.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:135.
DEBUG = env.bool('DEBUG', default=False)No fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/core/checks.py:462 | attribute | None supplied |
server/vueda/core/exceptions.py:95 | attribute | None supplied |
server/vueda/core/exceptions.py:99 | attribute | None supplied |
server/vueda/info/urls.py:24 | attribute | None supplied |
server/vueda/update.py:295 | attribute | None supplied |
server/vueda/update.py:349 | attribute | None supplied |
server/vueda/update.py:472 | attribute | None supplied |
server/vueda/update.py:492 | attribute | None supplied |
server/vueda/update.py:535 | attribute | None supplied |
server/vueda/user/urls.py:50 | attribute | None supplied |
server/vueda/workflow/urls.py:20 | attribute | None supplied |
EMAIL_BACKEND
Email backend class path. The console backend prints messages during development. With use_mailers=True, the factory places this value in MAILERS.default.BACKEND; otherwise it sets EMAIL_BACKEND. Selecting the Mailgun backend also reads the ANYMAIL_MAILGUN_* keys and ANYMAIL_WEBHOOK_SECRET.
Config input: EMAIL_BACKEND.
Factory declarations and overrides
Base defaults; not (use_mailers). Source: server/vueda/core/default_settings.py:406.
EMAIL_BACKEND = email_backendEMAIL_SUBJECT_PREFIX
Prefix for account email subjects. When empty, the user adapter uses SITE_NAME in square brackets.
Config input: EMAIL_SUBJECT_PREFIX.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:190.
EMAIL_SUBJECT_PREFIX = env('EMAIL_SUBJECT_PREFIX', default='')No fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/user/adapters.py:116 | attribute | None supplied |
EMAIL_TIMEOUT
Email timeout in seconds supplied when use_mailers=False.
Factory declarations and overrides
Base defaults; not (use_mailers). Source: server/vueda/core/default_settings.py:407.
EMAIL_TIMEOUT = 5FRONTEND_DOMAIN
Frontend origin prepended to login and password-reset paths in account emails.
Config input: FRONTEND_DOMAIN.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:173.
FRONTEND_DOMAIN = env('FRONTEND_DOMAIN')No fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/user/models.py:126 | attribute | None supplied |
server/vueda/user/models.py:139 | attribute | None supplied |
FRONTEND_LOGIN_URL
Frontend login path used in account emails, appended to FRONTEND_DOMAIN.
Config input: FRONTEND_LOGIN_URL.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:174.
FRONTEND_LOGIN_URL = env('FRONTEND_LOGIN_URL')No fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/user/models.py:126 | attribute | None supplied |
FRONTEND_RESET_URL
Frontend password-reset path used to build the reset link with its token and user identifier.
Config input: FRONTEND_RESET_URL.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:175.
FRONTEND_RESET_URL = env('FRONTEND_RESET_URL', '/reset-password')No fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/user/models.py:139 | attribute | None supplied |
IN_TESTS
Treat exception handling as a test environment even when DEBUG is false. Includes diagnostic tracebacks in responses and suppresses Sentry capture of ValidationError exceptions.
The defaults factories do not set this Django setting.
Local fallback values: False. These apply only at the read sites that supply them.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/core/exceptions.py:95 | getattr | False |
server/vueda/core/exceptions.py:99 | getattr | False |
INSTALLED_APPS
Assembled from DJANGO_APPS, VUEDA_APPS, THIRD_PARTY_APPS, and LOCAL_APPS. VUEDA uses it to detect optional application behavior.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:532.
INSTALLED_APPS = return_dict['DJANGO_APPS'] + return_dict['VUEDA_APPS'] + return_dict['THIRD_PARTY_APPS'] + return_dict['LOCAL_APPS']No fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/core/installed_apps.py:22 | attribute | None supplied |
server/vueda/user/mixins.py:50 | attribute | None supplied |
LOCAL_APPS
Project applications appended to INSTALLED_APPS. VUEDA also uses this list to group models in the permissions overview.
Config input: LOCAL_APPS.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:296.
LOCAL_APPS = env.list('LOCAL_APPS', default=[])No fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/user/views.py:363 | attribute | None supplied |
MAILERS
With use_mailers=True, the factory creates the default mailer and its timeout option.
Config input: EMAIL_BACKEND.
Factory declarations and overrides
Base defaults; use_mailers. Source: server/vueda/core/default_settings.py:404.
MAILERS = {'default': {'BACKEND': email_backend, 'OPTIONS': {'timeout': 5}}}MAX_PAGE_SIZE
Maximum requested page size. VUEDA also uses it when computing pagination metadata and documenting page-size defaults.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:359.
MAX_PAGE_SIZE = 200No fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/core/open_api.py:380 | attribute | None supplied |
server/vueda/core/pagination.py:22 | attribute | None supplied |
server/vueda/core/pagination.py:37 | attribute | None supplied |
server/vueda/core/pagination.py:68 | attribute | None supplied |
server/vueda/core/spectacular_hooks.py:105 | attribute | None supplied |
server/vueda/info/serializers.py:1748 | attribute | None supplied |
server/vueda/info/serializers.py:1759 | attribute | None supplied |
server/vueda/info/serializers.py:1915 | attribute | None supplied |
server/vueda/info/serializers.py:1929 | attribute | None supplied |
server/vueda/info/serializers.py:2049 | attribute | None supplied |
server/vueda/info/serializers.py:2063 | attribute | None supplied |
MIDDLEWARE
Default Django, CORS, allauth, and VUEDA history middleware. The factory inserts VuedaHistoryMiddleware immediately after AuthenticationMiddleware to record the actor and request. History checks validate its presence and order. User decorators also check for CSRF middleware.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:242.
MIDDLEWARE = ['corsheaders.middleware.CorsMiddleware', 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.common.BrokenLinkEmailsMiddleware', 'allauth.account.middleware.AccountMiddleware']Base defaults. Source: server/vueda/core/default_settings.py:519.
MIDDLEWARE = middlewareLocal fallback values: None. These apply only at the read sites that supply them.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/history/checks.py:36 | getattr | None |
server/vueda/user/decorators.py:19 | attribute | None supplied |
NO_REPLY_EMAIL
Sender address for user account email and the SYSTEM sender record used by VDQ.
Config input: NO_REPLY_EMAIL.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:203.
NO_REPLY_EMAIL = env('NO_REPLY_EMAIL')No fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/user/adapters.py:148 | attribute | None supplied |
server/vueda/user/adapters.py:167 | attribute | None supplied |
PAGE_QUERY_PARAM
Query parameter for the requested page. Server schemas and request validation use this name. A change requires a matching client constant change.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:361.
PAGE_QUERY_PARAM = 'p'No fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/core/open_api.py:374 | attribute | None supplied |
server/vueda/core/pagination.py:20 | attribute | None supplied |
server/vueda/core/viewsets/__init__.py:1300 | attribute | None supplied |
PAGE_SIZE_QUERY_PARAM
Query parameter for the requested page size. Server schemas and request validation use this name. A change requires a matching client constant change.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:360.
PAGE_SIZE_QUERY_PARAM = 'ps'No fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/core/open_api.py:379 | attribute | None supplied |
server/vueda/core/pagination.py:21 | attribute | None supplied |
server/vueda/core/viewsets/__init__.py:1301 | attribute | None supplied |
PERMISSION_NAMES_MAPPING
Maps Django permission verbs to VUEDA CRUDL verbs (create, read, update, delete, and list). The factory remaps add, change, and view. Runtime authorization and metadata read this mapping. Set it before importing vueda.core.patch_django; changing it does not rename existing permission rows.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:236.
PERMISSION_NAMES_MAPPING = {'add': 'create', 'change': 'update', 'view': 'read'}Local fallback values: None. These apply only at the read sites that supply them.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/core/checks.py:503 | getattr | None |
server/vueda/core/patch_django.py:31 | attribute | None supplied |
server/vueda/core/patch_django.py:119 | attribute | None supplied |
server/vueda/core/permissions.py:394 | attribute | None supplied |
server/vueda/core/permissions.py:395 | attribute | None supplied |
server/vueda/info/serializers.py:208 | attribute | None supplied |
server/vueda/info/serializers.py:209 | attribute | None supplied |
server/vueda/info/serializers.py:212 | attribute | None supplied |
server/vueda/info/serializers.py:213 | attribute | None supplied |
server/vueda/info/viewsets.py:306 | attribute | None supplied |
server/vueda/info/viewsets.py:307 | attribute | None supplied |
server/vueda/info/viewsets.py:310 | attribute | None supplied |
server/vueda/info/viewsets.py:311 | attribute | None supplied |
server/vueda/info/viewsets.py:558 | attribute | None supplied |
server/vueda/info/viewsets.py:559 | attribute | None supplied |
server/vueda/info/viewsets.py:562 | attribute | None supplied |
server/vueda/info/viewsets.py:563 | attribute | None supplied |
PGHISTORY_APPEND_ONLY
Requires tracked event rows to remain immutable. The factory sets this to True to match the trigger operations in shipped migrations.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:523.
PGHISTORY_APPEND_ONLY = TruePGHISTORY_CREATED_AT_FUNCTION
Uses clock_timestamp() so each event records its write time, rather than the transaction start time. This matches the trigger operations in shipped migrations.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:529.
PGHISTORY_CREATED_AT_FUNCTION = 'clock_timestamp()'QUEUE_ITEM_SERIALIZER
Serializer class object for queued items, selected at module import time. Supply the class itself, not a dotted import string.
The defaults factories do not set this Django setting.
Local fallback values: DefaultQueueItemSerializer. These apply only at the read sites that supply them.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/vdq/serializers.py:122 | getattr | DefaultQueueItemSerializer |
REST_AUTH
Authentication serializer defaults. The who-is endpoint imports USER_DETAILS_SERIALIZER, with vueda.user.serializers.WhoIsSerializer as its fallback when the dictionary omits that key.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:339.
REST_AUTH = {'LOGIN_SERIALIZER': 'vueda.user.serializers.LoginSerializer', 'USER_DETAILS_SERIALIZER': 'vueda.user.serializers.WhoIsSerializer', 'TOKEN_MODEL': None, 'TOKEN_SERIALIZER': 'vueda.user.serializers.VuedaTokenSerializer', 'OLD_PASSWORD_FIELD_ENABLED': True}No fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/user/views.py:119 | attribute | None supplied |
REST_FLEX_FIELDS2
Names of the expand, selected-field, and omitted-field query parameters, plus the maximum expansion depth. VUEDA reads these for serialization, request validation, metadata, and OpenAPI. Query names must agree with the client.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:346.
REST_FLEX_FIELDS2 = {'EXPAND_PARAM': 'e', 'FIELDS_PARAM': 'f', 'OMIT_PARAM': 'om', 'MAXIMUM_EXPANSION_DEPTH': 4}No fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/core/open_api.py:616 | attribute | None supplied |
server/vueda/core/serializers/__init__.py:675 | attribute | None supplied |
server/vueda/core/serializers/__init__.py:680 | attribute | None supplied |
server/vueda/core/serializers/__init__.py:691 | attribute | None supplied |
server/vueda/core/serializers/__init__.py:757 | attribute | None supplied |
server/vueda/core/serializers/__init__.py:777 | attribute | None supplied |
server/vueda/core/serializers/__init__.py:847 | attribute | None supplied |
server/vueda/core/serializers/__init__.py:1265 | attribute | None supplied |
server/vueda/core/serializers/__init__.py:1266 | attribute | None supplied |
server/vueda/core/spectacular_hooks.py:18 | attribute | None supplied |
server/vueda/core/spectacular_hooks.py:135 | attribute | None supplied |
server/vueda/core/viewsets/__init__.py:595 | attribute | None supplied |
server/vueda/core/viewsets/__init__.py:1302 | attribute | None supplied |
server/vueda/core/viewsets/__init__.py:1303 | attribute | None supplied |
server/vueda/core/viewsets/__init__.py:1304 | attribute | None supplied |
server/vueda/core/viewsets/__init__.py:1315 | attribute | None supplied |
server/vueda/core/viewsets/__init__.py:1316 | attribute | None supplied |
server/vueda/core/viewsets/__init__.py:1317 | attribute | None supplied |
server/vueda/core/viewsets/__init__.py:1354 | attribute | None supplied |
server/vueda/core/viewsets/__init__.py:1355 | attribute | None supplied |
server/vueda/core/viewsets/__init__.py:1357 | attribute | None supplied |
server/vueda/core/viewsets/__init__.py:1359 | attribute | None supplied |
server/vueda/core/viewsets/__init__.py:1373 | attribute | None supplied |
server/vueda/core/viewsets/__init__.py:1394 | attribute | None supplied |
server/vueda/info/schema.py:135 | attribute | None supplied |
server/vueda/info/serializers.py:559 | attribute | None supplied |
server/vueda/info/serializers.py:1625 | attribute | None supplied |
server/vueda/workflow/schema.py:28 | attribute | None supplied |
server/vueda/workflow/serializers.py:96 | attribute | None supplied |
server/vueda/workflow/serializers.py:105 | attribute | None supplied |
REST_FRAMEWORK
VUEDA defaults for DRF renderers, authentication, pagination, filtering, permissions, throttling, and exception handling. VUEDA reads PAGE_SIZE, SEARCH_PARAM, and ORDERING_PARAM directly. Query names must agree with the client. When drf_spectacular imports successfully, the factory adds DEFAULT_SCHEMA_CLASS.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:309.
REST_FRAMEWORK = {'DEFAULT_THROTTLE_RATES': {'change_password': '5/min', 'forgot_password': '20/hour', 'totp_send_destination': '5/hour', 'totp_send_user': '5/hour'}, 'NON_FIELD_ERRORS_KEY': 'non_field_errors', 'DEFAULT_RENDERER_CLASSES': ['vueda.core.renderers.VuedaJSONRenderer'], 'DEFAULT_AUTHENTICATION_CLASSES': ['rest_framework.authentication.SessionAuthentication'], 'DEFAULT_PAGINATION_CLASS': 'vueda.core.pagination.VUEDAPageNumberPagination', 'PAGE_SIZE': 100, 'SEARCH_PARAM': 's', 'DEFAULT_FILTER_BACKENDS': ('vueda.core.filters.VuedaOrderingFilter', 'vueda.core.filters.VuedaSearchFilterBackend', 'django_filters.rest_framework.DjangoFilterBackend'), 'DEFAULT_PERMISSION_CLASSES': ['vueda.core.permissions.ObjectPermissions'], 'UPLOADED_FILES_USE_URL': True, 'EXCEPTION_HANDLER': 'vueda.core.exceptions.debug_stack_exception_handler', 'ORDERING_PARAM': 'o'}Base defaults; imports succeed: import drf_spectacular. Source: server/vueda/core/default_settings.py:458.
REST_FRAMEWORK["DEFAULT_SCHEMA_CLASS"] = 'vueda.core.open_api.VuedaAutoSchema'No fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/core/open_api.py:395 | attribute | None supplied |
server/vueda/core/open_api.py:396 | attribute | None supplied |
server/vueda/core/pagination.py:19 | attribute | None supplied |
server/vueda/core/viewsets/__init__.py:1305 | attribute | None supplied |
server/vueda/core/viewsets/__init__.py:1306 | attribute | None supplied |
SEND_QUEUE_VIEWSET
Viewset class object for queued items, selected at module import time. Supply the class itself, not a dotted import string.
The defaults factories do not set this Django setting.
Local fallback values: DefaultSendQueueViewSet. These apply only at the read sites that supply them.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/vdq/viewsets.py:58 | getattr | DefaultSendQueueViewSet |
SENT_ITEM_SERIALIZER
Serializer class object for sent items, selected at module import time. Supply the class itself, not a dotted import string.
The defaults factories do not set this Django setting.
Local fallback values: DefaultSentItemSerializer. These apply only at the read sites that supply them.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/vdq/serializers.py:153 | getattr | DefaultSentItemSerializer |
SENT_ITEM_VIEWSET
Viewset class object for sent items, selected at module import time. Supply the class itself, not a dotted import string.
The defaults factories do not set this Django setting.
Local fallback values: DefaultSentItemViewSet. These apply only at the read sites that supply them.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/vdq/viewsets.py:95 | getattr | DefaultSentItemViewSet |
SESSION_CACHE_ALIAS
Cache alias inspected by VUEDA’s production session-cache check. The local fallback is default, matching Django’s session cache alias.
The defaults factories do not set this Django setting.
Local fallback values: 'default'. These apply only at the read sites that supply them.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/core/checks.py:467 | getattr | 'default' |
SESSION_ENGINE
The factory selects cache-backed sessions. Production checks reject a process-local session cache.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:191.
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'Local fallback values: ''. These apply only at the read sites that supply them.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/core/checks.py:464 | getattr | '' |
SITE_NAME
Site name in account email templates and the fallback email subject prefix.
Config input: SITE_NAME.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:200.
SITE_NAME = env('SITE_NAME')No fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/user/adapters.py:118 | attribute | None supplied |
server/vueda/user/adapters.py:136 | attribute | None supplied |
server/vueda/user/adapters.py:185 | attribute | None supplied |
SPECTACULAR_SETTINGS
OpenAPI title, tags, schema options, and hooks supplied only when drf_spectacular imports successfully. Tags depend on the selected VUEDA_APPS.
Factory declarations and overrides
Base defaults; imports succeed: import drf_spectacular. Source: server/vueda/core/default_settings.py:459.
SPECTACULAR_SETTINGS = {'TITLE': 'VUEDA API', 'DESCRIPTION': "VUEDA is designed for projects that integrate Vue.js frontends with Django REST Framework backends. This server library enhances Django's native authentication and permissions systems with default DRF classes and optimizes integration with django-filter, drf-flex-fields2, and drf-writable-nested. It offers essential out-of-the-box functionalities such as custom workflow management, audit trails (with DRF support for django-pghistory), and row-level permissions. Additionally, vueda-server provides DRF classes to expose Django model details to the frontend, filtered by user permissions. It is built with customization in mind, offering most features as base classes that can be extended in your application, ensuring both control and adaptability.", 'VERSION': '1.0.0', 'TAGS': spectacular_tags, 'COMPONENT_SPLIT_PATCH': False, 'SHOW_REQUEST_BODY': True, 'SHOW_RESPONSE_BODY': True, 'DEFAULT_MODEL_DEPTH': None, 'SERVE_INCLUDE_SCHEMA': False, 'PARSER_WHITELIST': ['rest_framework.parsers.JSONParser'], 'PREPROCESSING_HOOKS': ['vueda.core.spectacular_hooks.preprocessing_hooks', 'vueda.core.spectacular_hooks.register_cart_with_model_info'], 'POSTPROCESSING_HOOKS': ['drf_spectacular.hooks.postprocess_schema_enums', 'vueda.core.spectacular_hooks.postprocess_schema_components'], 'SORT_OPERATION_PARAMETERS': False}SUPPORT_EMAIL
Support address inserted into account email context.
Config input: SUPPORT_EMAIL.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:201.
SUPPORT_EMAIL = env('SUPPORT_EMAIL')No fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/user/models.py:127 | attribute | None supplied |
TWILIO_ACCOUNT_SID
Twilio account identifier. VDQ initializes its Twilio client and status polling only when this value is nonempty and the Twilio package is available.
Config input: TWILIO_ACCOUNT_SID.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:132.
TWILIO_ACCOUNT_SID = env('TWILIO_ACCOUNT_SID', default='')Local fallback values: None. These apply only at the read sites that supply them.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/user/adapters.py:210 | attribute | None supplied |
server/vueda/user/utils.py:34 | getattr | None |
server/vueda/vdq/celery.py:34 | getattr | None |
server/vueda/vdq/celery.py:40 | getattr | None |
server/vueda/vdq/handlers.py:189 | getattr | None |
server/vueda/vdq/handlers.py:191 | attribute | None supplied |
TWILIO_AUTH_TOKEN
Twilio credential used to send SMS messages and validate incoming webhook signatures.
Config input: TWILIO_AUTH_TOKEN.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:134.
TWILIO_AUTH_TOKEN = env('TWILIO_AUTH_TOKEN', default='')Local fallback values: None. These apply only at the read sites that supply them.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/user/adapters.py:210 | attribute | None supplied |
server/vueda/user/utils.py:35 | getattr | None |
server/vueda/vdq/handlers.py:192 | attribute | None supplied |
server/vueda/vdq/views.py:48 | attribute | None supplied |
TWILIO_CALLER_ID
Sender phone number for user account SMS messages and the SYSTEM sender record.
Config input: TWILIO_CALLER_ID.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:133.
TWILIO_CALLER_ID = env('TWILIO_CALLER_ID', default='')Local fallback values: None. These apply only at the read sites that supply them.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/user/adapters.py:199 | attribute | None supplied |
server/vueda/user/adapters.py:213 | attribute | None supplied |
server/vueda/user/utils.py:36 | getattr | None |
TWILIO_WEBHOOK_URL
Twilio SMS status callback URL. A truthy URL enables webhook-based status updates with timeout polling; a false value selects status polling. Configure the URL when using Twilio callbacks.
The defaults factories do not set this Django setting.
Local fallback values: False. These apply only at the read sites that supply them.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/vdq/celery.py:35 | getattr | False |
server/vueda/vdq/celery.py:40 | getattr | False |
server/vueda/vdq/handlers.py:207 | getattr | False |
VDQ_EMAIL_TRACKING_STRATEGY
Class, or dotted import path of the class, that attaches the queue item's key to an outgoing email and reads it back from an Anymail tracking event. The read site falls back to vueda.vdq.tracking.MetadataEmailTrackingStrategy, which carries the key in Anymail metadata. Set vueda.vdq.tracking.EmailTrackingStrategy to send without tracking data on an ESP that accepts no metadata.
The defaults factories do not set this Django setting.
Local fallback values: MetadataEmailTrackingStrategy. These apply only at the read sites that supply them.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/vdq/tracking.py:65 | getattr | MetadataEmailTrackingStrategy |
VDQ_MAX_FILES_AGE_IN_SECONDS
A value of zero deletes queue attachment files when an item reaches a done state. The current read site does nothing for None or positive values; this setting alone does not schedule age-based cleanup.
The defaults factories do not set this Django setting.
Local fallback values: None. These apply only at the read sites that supply them.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/vdq/models.py:155 | getattr | None |
VDQ_TWILIO_SMS_TIMEOUT_HOURS
Time in hours before awaiting SMS messages time out. Also determines the retry count of the unknown-message check task. The task class reads it at import time.
The defaults factories do not set this Django setting.
Local fallback values: 2. These apply only at the read sites that supply them.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/vdq/handlers.py:275 | getattr | 2 |
server/vueda/vdq/handlers.py:311 | getattr | 2 |
server/vueda/vdq/tasks.py:184 | getattr | 2 |
VDQ_URL
VDQ URL prefix used to build attachment download URLs. Supply it when serializing queue attachments; neither get_defaults nor the read site supplies a fallback.
The defaults factories do not set this Django setting.
No fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/vdq/serializers.py:60 | attribute | None supplied |
VUEDA_USER_ADAPTER
Class path for the user adapter that implements VUEDA account operations.
Config input: VUEDA_USER_ADAPTER.
Factory declarations and overrides
Base defaults. Source: server/vueda/core/default_settings.py:278.
VUEDA_USER_ADAPTER = env('VUEDA_USER_ADAPTER', default='vueda.user.adapters.DefaultUserAdapter')No fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/user/adapters.py:223 | attribute | None supplied |
VUEDA_VDQ_RECEIVER_MODEL
Swapper model label for the VDQ receiver. Swapper supplies vueda_vdq.Receiver when no override exists; VUEDA migration files read the setting directly. Choose the replacement model before creating project migrations.
The defaults factories do not set this Django setting.
No fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/vdq/migrations/0001_initial.py:170 | attribute | None supplied |
server/vueda/vdq/migrations/0001_initial.py:186 | attribute | None supplied |
server/vueda/vdq/migrations/0001_initial.py:212 | attribute | None supplied |
server/vueda/vdq/migrations/0001_initial.py:228 | attribute | None supplied |
server/vueda/vdq/migrations/0001_initial.py:254 | attribute | None supplied |
server/vueda/vdq/migrations/0001_initial.py:270 | attribute | None supplied |
server/vueda/vdq/migrations/0001_initial.py:309 | attribute | None supplied |
server/vueda/vdq/migrations/0007_queueitemevent_receiverevent_senderevent_and_more.py:253 | attribute | None supplied |
server/vueda/vdq/migrations/0007_queueitemevent_receiverevent_senderevent_and_more.py:285 | attribute | None supplied |
VUEDA_VDQ_SENDER_MODEL
Swapper model label for the VDQ sender. Swapper supplies vueda_vdq.Sender when no override exists; VUEDA migration files read the setting directly. Choose the replacement model before creating project migrations.
The defaults factories do not set this Django setting.
No fallback at the direct read sites. The setting must exist when those reads execute.
Read locations
| Source | Access | Local fallback |
|---|---|---|
server/vueda/vdq/migrations/0001_initial.py:316 | attribute | None supplied |
server/vueda/vdq/migrations/0007_queueitemevent_receiverevent_senderevent_and_more.py:264 | attribute | None supplied |
server/vueda/vdq/migrations/0007_queueitemevent_receiverevent_senderevent_and_more.py:306 | attribute | None supplied |
Django exemptions
MIGRATION_MODULES: Django migration module overrides retain their Django meaning in migration discovery and generation.