From 8fbb6a9a25b3e3c07de78743966c06a059da948a Mon Sep 17 00:00:00 2001 From: Brian Helba Date: Thu, 29 Jan 2026 07:49:56 -0500 Subject: [PATCH] Simplify the setting of `DJANGO_BATAI_URL_PATH` --- bats_ai/settings/base.py | 10 +++------- bats_ai/settings/nabat_production.py | 8 ++++++++ bats_ai/urls.py | 9 +-------- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/bats_ai/settings/base.py b/bats_ai/settings/base.py index 39d68ae7..95e7c754 100644 --- a/bats_ai/settings/base.py +++ b/bats_ai/settings/base.py @@ -98,21 +98,17 @@ # Django staticfiles auto-creates any intermediate directories, but do so here to prevent warnings. STATIC_ROOT.mkdir(exist_ok=True) -# Can be set to mount all URLs at a subpath -BATAI_URL_PATH: str = env.str('DJANGO_BATAI_URL_PATH', default='').strip('/') - BATAI_NABAT_API_URL: str = env.str( 'DJANGO_BATAI_NABAT_API_URL', default='https://api.sciencebase.gov/nabat-graphql/graphql' ) # Django's docs suggest that STATIC_URL should be a relative path, # for convenience serving a site on a subpath. -STATIC_URL = f'/{BATAI_URL_PATH}/static/' if BATAI_URL_PATH else '/static/' -LOGIN_URL = f'/{BATAI_URL_PATH}/accounts/login/' if BATAI_URL_PATH else '/accounts/login/' +STATIC_URL = 'static/' # Make Django and Allauth redirects consistent, but both may be changed. -LOGIN_REDIRECT_URL = f'/{BATAI_URL_PATH}' -ACCOUNT_LOGOUT_REDIRECT_URL = f'/{BATAI_URL_PATH}' +LOGIN_REDIRECT_URL = '/' +ACCOUNT_LOGOUT_REDIRECT_URL = '/' CORS_ALLOWED_ORIGINS: list[str] = env.list('DJANGO_CORS_ALLOWED_ORIGINS', cast=str, default=[]) CORS_ALLOWED_ORIGIN_REGEXES: list[str] = env.list( diff --git a/bats_ai/settings/nabat_production.py b/bats_ai/settings/nabat_production.py index f7ff3ecd..51f8ab0a 100644 --- a/bats_ai/settings/nabat_production.py +++ b/bats_ai/settings/nabat_production.py @@ -17,3 +17,11 @@ CORS_ALLOWED_ORIGINS = [f'https://{BASE_HOST}', f'https://{BASE_HOST}'] SECURE_SSL_REDIRECT = False + +# Can be set to mount all URLs at a subpath +_proxy_subpath: str | None = env.str('DJANGO_BATAI_URL_PATH', default=None) +if _proxy_subpath: + _proxy_subpath = f'/{_proxy_subpath.strip("/")}' + FORCE_SCRIPT_NAME = _proxy_subpath + # Work around https://code.djangoproject.com/ticket/36653 + STORAGES['staticfiles'].setdefault('OPTIONS', {})['base_url'] = f'{_proxy_subpath}/{STATIC_URL}' diff --git a/bats_ai/urls.py b/bats_ai/urls.py index 344d3928..00183486 100644 --- a/bats_ai/urls.py +++ b/bats_ai/urls.py @@ -4,7 +4,7 @@ from .api import api -base_urlpatterns = [ +urlpatterns = [ path('accounts/', include('allauth.urls')), path('oauth/', include('oauth2_provider.urls')), path('admin/', admin.site.urls), @@ -12,13 +12,6 @@ path('api/v1/', api.urls), ] - -# Support mounting within a sub-path -if settings.BATAI_URL_PATH: - urlpatterns = [path(f'{settings.BATAI_URL_PATH}/', include(base_urlpatterns))] -else: - urlpatterns = base_urlpatterns - if settings.DEBUG: import debug_toolbar.toolbar