summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorMarkus Holtermann <info@markusholtermann.eu>2014-10-04 19:04:21 +0200
committerTim Graham <timograham@gmail.com>2014-10-06 09:31:39 -0400
commit2f16ff5a6cbd71fc6c50e88e4087f3657222e90e (patch)
treeb407362fde4e16ee4ea53ce4346e13bd4fd2ed23 /django
parenta24cf217220dca44b7bd5b36ad9c14a96bca486e (diff)
Fixed #23601 -- Ensured view exists in URLconf before importing it in admindocs.
Diffstat (limited to 'django')
-rw-r--r--django/contrib/admindocs/views.py7
-rw-r--r--django/core/urlresolvers.py7
2 files changed, 10 insertions, 4 deletions
diff --git a/django/contrib/admindocs/views.py b/django/contrib/admindocs/views.py
index f2b6535ae5..6cd5df1e5c 100644
--- a/django/contrib/admindocs/views.py
+++ b/django/contrib/admindocs/views.py
@@ -143,10 +143,11 @@ class ViewDetailView(BaseAdminDocsView):
def get_context_data(self, **kwargs):
view = self.kwargs['view']
- mod, func = urlresolvers.get_mod_func(view)
- try:
+ urlconf = urlresolvers.get_urlconf()
+ if urlresolvers.get_resolver(urlconf)._is_callback(view):
+ mod, func = urlresolvers.get_mod_func(view)
view_func = getattr(import_module(mod), func)
- except (ImportError, AttributeError):
+ else:
raise Http404
title, body, metadata = utils.parse_docstring(view_func.__doc__)
if title:
diff --git a/django/core/urlresolvers.py b/django/core/urlresolvers.py
index 6cd612e208..eff7e078e4 100644
--- a/django/core/urlresolvers.py
+++ b/django/core/urlresolvers.py
@@ -353,6 +353,11 @@ class RegexURLResolver(LocaleRegexProvider):
self._populate()
return self._app_dict[language_code]
+ def _is_callback(self, name):
+ if not self._populated:
+ self._populate()
+ return name in self._callback_strs
+
def resolve(self, path):
path = force_text(path) # path may be a reverse_lazy object
tried = []
@@ -430,7 +435,7 @@ class RegexURLResolver(LocaleRegexProvider):
original_lookup = lookup_view
try:
- if lookup_view in self._callback_strs:
+ if self._is_callback(lookup_view):
lookup_view = get_callable(lookup_view, True)
except (ImportError, AttributeError) as e:
raise NoReverseMatch("Error importing '%s': %s." % (lookup_view, e))