diff options
| author | Florian Apolloner <florian@apolloner.eu> | 2012-08-14 21:12:08 +0200 |
|---|---|---|
| committer | Florian Apolloner <florian@apolloner.eu> | 2012-08-14 21:23:25 +0200 |
| commit | 367bfaa5226eaae3278989e63f16063d5cc46cd8 (patch) | |
| tree | 915044cce7ef89d1f53aacd3e665f2505d456e8b /django/core | |
| parent | 37c9318748896a1bb7e33a05a7db2c5de268ff22 (diff) | |
Don't swallow AttributeError in core.urlresolvers.get_callable.
Diffstat (limited to 'django/core')
| -rw-r--r-- | django/core/urlresolvers.py | 27 |
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) |
