summaryrefslogtreecommitdiff
path: root/django/core
diff options
context:
space:
mode:
authorFlorian Apolloner <florian@apolloner.eu>2012-08-14 21:12:08 +0200
committerFlorian Apolloner <florian@apolloner.eu>2012-08-14 21:23:25 +0200
commit367bfaa5226eaae3278989e63f16063d5cc46cd8 (patch)
tree915044cce7ef89d1f53aacd3e665f2505d456e8b /django/core
parent37c9318748896a1bb7e33a05a7db2c5de268ff22 (diff)
Don't swallow AttributeError in core.urlresolvers.get_callable.
Diffstat (limited to 'django/core')
-rw-r--r--django/core/urlresolvers.py27
1 files changed, 16 insertions, 11 deletions
diff --git a/django/core/urlresolvers.py b/django/core/urlresolvers.py
index 1498c9989d..b83f2f51b0 100644
--- a/django/core/urlresolvers.py
+++ b/django/core/urlresolvers.py
@@ -89,18 +89,11 @@ def get_callable(lookup_view, can_fail=False):
"""
if not callable(lookup_view):
mod_name, func_name = get_mod_func(lookup_view)
+ if func_name == '':
+ return lookup_view
+
try:
- if func_name != '':
- lookup_view = getattr(import_module(mod_name), func_name)
- if not callable(lookup_view):
- raise ViewDoesNotExist(
- "Could not import %s.%s. View is not callable." %
- (mod_name, func_name))
- except AttributeError:
- if not can_fail:
- raise ViewDoesNotExist(
- "Could not import %s. View does not exist in module %s." %
- (lookup_view, mod_name))
+ mod = import_module(mod_name)
except ImportError:
parentmod, submod = get_mod_func(mod_name)
if (not can_fail and submod != '' and
@@ -110,6 +103,18 @@ def get_callable(lookup_view, can_fail=False):
(lookup_view, mod_name))
if not can_fail:
raise
+ else:
+ try:
+ lookup_view = getattr(mod, func_name)
+ if not callable(lookup_view):
+ raise ViewDoesNotExist(
+ "Could not import %s.%s. View is not callable." %
+ (mod_name, func_name))
+ except AttributeError:
+ if not can_fail:
+ raise ViewDoesNotExist(
+ "Could not import %s. View does not exist in module %s." %
+ (lookup_view, mod_name))
return lookup_view
get_callable = memoize(get_callable, _callable_cache, 1)