summaryrefslogtreecommitdiff
path: root/django/views
diff options
context:
space:
mode:
authorAdrian Holovaty <adrian@holovaty.com>2005-10-17 13:24:29 +0000
committerAdrian Holovaty <adrian@holovaty.com>2005-10-17 13:24:29 +0000
commit383704ac844323375e743b555f6a64d6daf6d14d (patch)
treec7c3cd7ccf7720731b30a53eb0976ca51eb9a6bf /django/views
parent0bb68cd0725988bd7302da293ffdb2fa9e1b2750 (diff)
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
Diffstat (limited to 'django/views')
-rw-r--r--django/views/defaults.py10
1 files 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):
"""