From 6b88d4abd08b05a24a7ff13f6a51579c48118747 Mon Sep 17 00:00:00 2001 From: Malcolm Tredinnick Date: Sun, 24 Jun 2007 09:38:30 +0000 Subject: [PATCH] Fixed #4673 -- Fixed error reporting bug from [5516]. Also changed the timing for populating the reverse cache, since that may have been happening too early. git-svn-id: http://code.djangoproject.com/svn/django/trunk@5520 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/core/urlresolvers.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/django/core/urlresolvers.py b/django/core/urlresolvers.py index 669b2d1afa..6ac406c907 100644 --- a/django/core/urlresolvers.py +++ b/django/core/urlresolvers.py @@ -156,8 +156,10 @@ class RegexURLPattern(object): try: self._callback = get_callable(self._callback_str) except ImportError, e: + mod_name, _ = get_mod_func(self._callback_str) raise ViewDoesNotExist, "Could not import %s. Error was: %s" % (mod_name, str(e)) except AttributeError, e: + mod_name, func_name = get_mod_func(self._callback_str) raise ViewDoesNotExist, "Tried %s in module %s. Error was: %s" % (func_name, mod_name, str(e)) return self._callback callback = property(_get_callback) @@ -183,15 +185,19 @@ class RegexURLResolver(object): self.urlconf_name = urlconf_name self.callback = None self.default_kwargs = default_kwargs or {} - self.reverse_dict = {} + self._reverse_dict = {} - for pattern in reversed(self.urlconf_module.urlpatterns): - if isinstance(pattern, RegexURLResolver): - for key, value in pattern.reverse_dict.iteritems(): - self.reverse_dict[key] = (pattern,) + value - else: - self.reverse_dict[pattern.callback] = (pattern,) - self.reverse_dict[pattern.name] = (pattern,) + def _get_reverse_dict(self): + if not self._reverse_dict: + for pattern in reversed(self.urlconf_module.urlpatterns): + if isinstance(pattern, RegexURLResolver): + for key, value in pattern.reverse_dict.iteritems(): + self._reverse_dict[key] = (pattern,) + value + else: + self._reverse_dict[pattern.callback] = (pattern,) + self._reverse_dict[pattern.name] = (pattern,) + return self._reverse_dict + reverse_dict = property(_get_reverse_dict) def resolve(self, path): tried = []