mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2026-01-02 04:47:02 -05:00
feat: Implement initial schema and add various API, service, and management command enhancements across the application.
This commit is contained in:
@@ -33,9 +33,7 @@ ACCOUNT_SIGNUP_FIELDS = ["email*", "username*", "password1*", "password2*"]
|
||||
ACCOUNT_LOGIN_METHODS = {"email", "username"}
|
||||
|
||||
# Email verification settings
|
||||
ACCOUNT_EMAIL_VERIFICATION = config(
|
||||
"ACCOUNT_EMAIL_VERIFICATION", default="mandatory"
|
||||
)
|
||||
ACCOUNT_EMAIL_VERIFICATION = config("ACCOUNT_EMAIL_VERIFICATION", default="mandatory")
|
||||
ACCOUNT_EMAIL_REQUIRED = True
|
||||
ACCOUNT_EMAIL_VERIFICATION_SUPPORTS_CHANGE = True
|
||||
ACCOUNT_EMAIL_VERIFICATION_SUPPORTS_RESEND = True
|
||||
@@ -114,12 +112,8 @@ CELERY_BROKER_URL = config("REDIS_URL", default="redis://localhost:6379/1")
|
||||
CELERY_RESULT_BACKEND = config("REDIS_URL", default="redis://localhost:6379/1")
|
||||
|
||||
# Task settings for test environments
|
||||
CELERY_TASK_ALWAYS_EAGER = config(
|
||||
"CELERY_TASK_ALWAYS_EAGER", default=False, cast=bool
|
||||
)
|
||||
CELERY_TASK_EAGER_PROPAGATES = config(
|
||||
"CELERY_TASK_EAGER_PROPAGATES", default=False, cast=bool
|
||||
)
|
||||
CELERY_TASK_ALWAYS_EAGER = config("CELERY_TASK_ALWAYS_EAGER", default=False, cast=bool)
|
||||
CELERY_TASK_EAGER_PROPAGATES = config("CELERY_TASK_EAGER_PROPAGATES", default=False, cast=bool)
|
||||
|
||||
# =============================================================================
|
||||
# Health Check Configuration
|
||||
@@ -165,16 +159,10 @@ CLOUDFLARE_IMAGES = {
|
||||
"DEFAULT_VARIANT": config("CLOUDFLARE_IMAGES_DEFAULT_VARIANT", default="public"),
|
||||
"UPLOAD_TIMEOUT": config("CLOUDFLARE_IMAGES_UPLOAD_TIMEOUT", default=300, cast=int),
|
||||
"WEBHOOK_SECRET": config("CLOUDFLARE_IMAGES_WEBHOOK_SECRET", default=""),
|
||||
"CLEANUP_EXPIRED_HOURS": config(
|
||||
"CLOUDFLARE_IMAGES_CLEANUP_HOURS", default=24, cast=int
|
||||
),
|
||||
"MAX_FILE_SIZE": config(
|
||||
"CLOUDFLARE_IMAGES_MAX_FILE_SIZE", default=10 * 1024 * 1024, cast=int
|
||||
),
|
||||
"CLEANUP_EXPIRED_HOURS": config("CLOUDFLARE_IMAGES_CLEANUP_HOURS", default=24, cast=int),
|
||||
"MAX_FILE_SIZE": config("CLOUDFLARE_IMAGES_MAX_FILE_SIZE", default=10 * 1024 * 1024, cast=int),
|
||||
"ALLOWED_FORMATS": ["jpeg", "png", "gif", "webp"],
|
||||
"REQUIRE_SIGNED_URLS": config(
|
||||
"CLOUDFLARE_IMAGES_REQUIRE_SIGNED_URLS", default=False, cast=bool
|
||||
),
|
||||
"REQUIRE_SIGNED_URLS": config("CLOUDFLARE_IMAGES_REQUIRE_SIGNED_URLS", default=False, cast=bool),
|
||||
"DEFAULT_METADATA": {},
|
||||
}
|
||||
|
||||
@@ -183,21 +171,13 @@ CLOUDFLARE_IMAGES = {
|
||||
# =============================================================================
|
||||
# Settings for the road trip planning service using OpenStreetMap
|
||||
|
||||
ROADTRIP_CACHE_TIMEOUT = config(
|
||||
"ROADTRIP_CACHE_TIMEOUT", default=3600 * 24, cast=int
|
||||
) # 24 hours for geocoding
|
||||
ROADTRIP_ROUTE_CACHE_TIMEOUT = config(
|
||||
"ROADTRIP_ROUTE_CACHE_TIMEOUT", default=3600 * 6, cast=int
|
||||
) # 6 hours for routes
|
||||
ROADTRIP_CACHE_TIMEOUT = config("ROADTRIP_CACHE_TIMEOUT", default=3600 * 24, cast=int) # 24 hours for geocoding
|
||||
ROADTRIP_ROUTE_CACHE_TIMEOUT = config("ROADTRIP_ROUTE_CACHE_TIMEOUT", default=3600 * 6, cast=int) # 6 hours for routes
|
||||
ROADTRIP_MAX_REQUESTS_PER_SECOND = config(
|
||||
"ROADTRIP_MAX_REQUESTS_PER_SECOND", default=1, cast=int
|
||||
) # Respect OSM rate limits
|
||||
ROADTRIP_USER_AGENT = config(
|
||||
"ROADTRIP_USER_AGENT", default="ThrillWiki/1.0 (https://thrillwiki.com)"
|
||||
)
|
||||
ROADTRIP_REQUEST_TIMEOUT = config(
|
||||
"ROADTRIP_REQUEST_TIMEOUT", default=10, cast=int
|
||||
) # seconds
|
||||
ROADTRIP_USER_AGENT = config("ROADTRIP_USER_AGENT", default="ThrillWiki/1.0 (https://thrillwiki.com)")
|
||||
ROADTRIP_REQUEST_TIMEOUT = config("ROADTRIP_REQUEST_TIMEOUT", default=10, cast=int) # seconds
|
||||
ROADTRIP_MAX_RETRIES = config("ROADTRIP_MAX_RETRIES", default=3, cast=int)
|
||||
ROADTRIP_BACKOFF_FACTOR = config("ROADTRIP_BACKOFF_FACTOR", default=2, cast=int)
|
||||
|
||||
@@ -206,9 +186,7 @@ ROADTRIP_BACKOFF_FACTOR = config("ROADTRIP_BACKOFF_FACTOR", default=2, cast=int)
|
||||
# =============================================================================
|
||||
# django-autocomplete-light settings
|
||||
|
||||
AUTOCOMPLETE_BLOCK_UNAUTHENTICATED = config(
|
||||
"AUTOCOMPLETE_BLOCK_UNAUTHENTICATED", default=False, cast=bool
|
||||
)
|
||||
AUTOCOMPLETE_BLOCK_UNAUTHENTICATED = config("AUTOCOMPLETE_BLOCK_UNAUTHENTICATED", default=False, cast=bool)
|
||||
|
||||
# =============================================================================
|
||||
# Frontend Configuration
|
||||
@@ -226,7 +204,5 @@ TURNSTILE_SECRET = config("TURNSTILE_SECRET", default="")
|
||||
|
||||
# Skip Turnstile validation in development if keys not set
|
||||
TURNSTILE_SKIP_VALIDATION = config(
|
||||
"TURNSTILE_SKIP_VALIDATION",
|
||||
default=not TURNSTILE_SECRET, # Skip if no secret
|
||||
cast=bool
|
||||
"TURNSTILE_SKIP_VALIDATION", default=not TURNSTILE_SECRET, cast=bool # Skip if no secret
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user