Skip to content

Commit cd815d3

Browse files
Fix Static Build
Remove all unnecessary middleware and return a proper response for redirects to fix static builds. Signed-off-by: Hassan Abouelela <[email protected]>
1 parent 8f6d63c commit cd815d3

File tree

2 files changed

+33
-27
lines changed

2 files changed

+33
-27
lines changed

pydis_site/apps/redirect/urls.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
import yaml
55
from django import conf
6+
from django.http import HttpResponse
67
from django.urls import URLPattern, path
78
from django_distill import distill_path
89

@@ -53,7 +54,7 @@ def map_redirect(name: str, data: Redirect) -> list[URLPattern]:
5354

5455
class RedirectFunc:
5556
def __init__(self, new_url: str, _name: str):
56-
self.result = REDIRECT_TEMPLATE.format(url=new_url)
57+
self.result = HttpResponse(REDIRECT_TEMPLATE.format(url=new_url))
5758
self.__qualname__ = _name
5859

5960
def __call__(self, *args, **kwargs):
@@ -95,7 +96,7 @@ def __call__(self, *args, **kwargs):
9596

9697
return [distill_path(
9798
data.original_path,
98-
lambda *args: REDIRECT_TEMPLATE.format(url=new_redirect),
99+
lambda *args: HttpResponse(REDIRECT_TEMPLATE.format(url=new_redirect)),
99100
name=name,
100101
)]
101102

pydis_site/settings.py

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,13 @@
4343
# Allow the OAuth key to be loaded from a file
4444
GITHUB_APP_KEY = key_file.read_text(encoding="utf-8")
4545

46-
sentry_sdk.init(
47-
dsn=env('SITE_DSN'),
48-
integrations=[DjangoIntegration()],
49-
send_default_pii=True,
50-
release=f"site@{GIT_SHA}"
51-
)
46+
if not env("STATIC_BUILD"):
47+
sentry_sdk.init(
48+
dsn=env('SITE_DSN'),
49+
integrations=[DjangoIntegration()],
50+
send_default_pii=True,
51+
release=f"site@{GIT_SHA}"
52+
)
5253

5354
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
5455
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
@@ -128,25 +129,29 @@
128129
if not env("BUILDING_DOCKER"):
129130
INSTALLED_APPS.append("django_prometheus")
130131

131-
NON_STATIC_MIDDLEWARE = [
132-
'django_prometheus.middleware.PrometheusBeforeMiddleware',
133-
] if not env("STATIC_BUILD") else []
134-
135-
# Ensure that Prometheus middlewares are first and last here.
136-
MIDDLEWARE = [
137-
*NON_STATIC_MIDDLEWARE,
138-
139-
'django.middleware.security.SecurityMiddleware',
140-
'whitenoise.middleware.WhiteNoiseMiddleware',
141-
'django.contrib.sessions.middleware.SessionMiddleware',
142-
'django.middleware.common.CommonMiddleware',
143-
'django.middleware.csrf.CsrfViewMiddleware',
144-
'django.contrib.auth.middleware.AuthenticationMiddleware',
145-
'django.contrib.messages.middleware.MessageMiddleware',
146-
'django.middleware.clickjacking.XFrameOptionsMiddleware',
147-
148-
'django_prometheus.middleware.PrometheusAfterMiddleware'
149-
]
132+
if env("STATIC_BUILD"):
133+
# The only middleware required during static builds
134+
MIDDLEWARE = [
135+
'django.contrib.sessions.middleware.SessionMiddleware',
136+
'django.contrib.auth.middleware.AuthenticationMiddleware',
137+
'django.contrib.messages.middleware.MessageMiddleware',
138+
]
139+
else:
140+
# Ensure that Prometheus middlewares are first and last here.
141+
MIDDLEWARE = [
142+
'django_prometheus.middleware.PrometheusBeforeMiddleware',
143+
144+
'django.middleware.security.SecurityMiddleware',
145+
'whitenoise.middleware.WhiteNoiseMiddleware',
146+
'django.contrib.sessions.middleware.SessionMiddleware',
147+
'django.middleware.common.CommonMiddleware',
148+
'django.middleware.csrf.CsrfViewMiddleware',
149+
'django.contrib.auth.middleware.AuthenticationMiddleware',
150+
'django.contrib.messages.middleware.MessageMiddleware',
151+
'django.middleware.clickjacking.XFrameOptionsMiddleware',
152+
153+
'django_prometheus.middleware.PrometheusAfterMiddleware'
154+
]
150155

151156
ROOT_URLCONF = 'pydis_site.urls'
152157

0 commit comments

Comments
 (0)