From 383704ac844323375e743b555f6a64d6daf6d14d Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Mon, 17 Oct 2005 13:24:29 +0000 Subject: [PATCH] Fixed #634 -- Changed shortcut view to accept get_absolute_url()s that return URLs starting with http. Thanks, Hugo git-svn-id: http://code.djangoproject.com/svn/django/trunk@903 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/views/defaults.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/django/views/defaults.py b/django/views/defaults.py index d283e54c1b..decc220cf7 100644 --- a/django/views/defaults.py +++ b/django/views/defaults.py @@ -10,8 +10,12 @@ def shortcut(request, content_type_id, object_id): obj = content_type.get_object_for_this_type(pk=object_id) except ObjectDoesNotExist: raise Http404, "Content type %s object %s doesn't exist" % (content_type_id, object_id) - if not hasattr(obj, 'get_absolute_url'): + try: + absurl = obj.get_absolute_url() + except AttributeError: raise Http404, "%s objects don't have get_absolute_url() methods" % content_type.name + if absurl.startswith('http://'): + return httpwrappers.HttpResponseRedirect(absurl) object_domain = None if hasattr(obj, 'get_site_list'): site_list = obj.get_site_list() @@ -27,8 +31,8 @@ def shortcut(request, content_type_id, object_id): except sites.SiteDoesNotExist: pass if not object_domain: - return httpwrappers.HttpResponseRedirect(obj.get_absolute_url()) - return httpwrappers.HttpResponseRedirect('http://%s%s' % (object_domain, obj.get_absolute_url())) + return httpwrappers.HttpResponseRedirect(absurl) + return httpwrappers.HttpResponseRedirect('http://%s%s' % (object_domain, absurl)) def page_not_found(request): """