Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Fixed #634 -- Changed shortcut view to accept get_absolute_url()s tha…

…t return URLs starting with http. Thanks, Hugo

git-svn-id: http://code.djangoproject.com/svn/django/trunk@903 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 383704ac844323375e743b555f6a64d6daf6d14d 1 parent 0bb68cd
@adrianholovaty adrianholovaty authored
Showing with 7 additions and 3 deletions.
  1. +7 −3 django/views/defaults.py
View
10 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):
"""
Please sign in to comment.
Something went wrong with that request. Please try again.