Skip to content

Commit ed5906c

Browse files
JacobCoffeemerwok
andauthored
fix(sentry#6931306293): fix issue with url context resolver (#2791)
* fix(sentry#6931306293): resolve 'NoneType' object has no attribute 'engine' for url context reslover * Update pydotorg/tests/test_context_processors.py Co-authored-by: Éric <merwok@netwok.org> * Update pydotorg/tests/test_context_processors.py Co-authored-by: Éric <merwok@netwok.org> --------- Co-authored-by: Éric <merwok@netwok.org>
1 parent 72e1672 commit ed5906c

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

pydotorg/context_processors.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ def url_name(request):
1010
try:
1111
match = resolve(request.path)
1212
except Resolver404:
13-
return {}
13+
return {'URL_NAMESPACE': None, 'URL_NAME': None}
1414
else:
1515
namespace, url_name_ = match.namespace, match.url_name
1616
if namespace:

pydotorg/tests/test_context_processors.py

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,13 @@ def test_url_name(self):
1919
self.assertEqual({'URL_NAMESPACE': 'events', 'URL_NAME': 'events:calendar_list'}, context_processors.url_name(request))
2020

2121
request = self.factory.get('/getit-404/releases/3.3.3/not-an-actual-thing/')
22-
self.assertEqual({}, context_processors.url_name(request))
22+
self.assertEqual({'URL_NAMESPACE': None, 'URL_NAME': None}, context_processors.url_name(request))
2323

2424
request = self.factory.get('/getit-404/releases/3.3.3/\r\n/')
25-
self.assertEqual({}, context_processors.url_name(request))
25+
self.assertEqual({'URL_NAMESPACE': None, 'URL_NAME': None}, context_processors.url_name(request))
2626

2727
request = self.factory.get('/nothing/here/')
28-
self.assertEqual({}, context_processors.url_name(request))
28+
self.assertEqual({'URL_NAMESPACE': None, 'URL_NAME': None}, context_processors.url_name(request))
2929

3030
def test_blog_url(self):
3131
request = self.factory.get('/about/')
@@ -114,3 +114,18 @@ def test_user_nav_bar_links_for_anonymous_user(self):
114114
request.user = AnonymousUser()
115115

116116
self.assertEqual({"USER_NAV_BAR": {}}, context_processors.user_nav_bar_links(request))
117+
118+
def test_url_name_always_returns_keys(self):
119+
# Ensure URL_NAME and URL_NAMESPACE are always present in context, even for 404s,
120+
# otherwise it makes sentry unhappy: https://python-software-foundation.sentry.io/issues/6931306293/
121+
# test with a 404 path
122+
request = self.factory.get('/this-does-not-exist/')
123+
result = context_processors.url_name(request)
124+
125+
# keys should always be present
126+
self.assertIn('URL_NAME', result)
127+
self.assertIn('URL_NAMESPACE', result)
128+
129+
# values should be None for unresolved URLs
130+
self.assertIsNone(result['URL_NAME'])
131+
self.assertIsNone(result['URL_NAMESPACE'])

0 commit comments

Comments
 (0)