Merge meurig's absolute_url fix.

This commit is contained in:
Tom Christie 2011-12-09 12:54:11 +00:00
commit 42cdd00591
2 changed files with 24 additions and 21 deletions

View File

@ -18,6 +18,7 @@ Tom Drummond <devioustree>
Danilo Bargen <gwrtheyrn> Danilo Bargen <gwrtheyrn>
Andrew McCloud <amccloud> Andrew McCloud <amccloud>
Thomas Steinacher <thomasst> Thomas Steinacher <thomasst>
Meurig Freeman <meurig>
THANKS TO: THANKS TO:

View File

@ -5,7 +5,7 @@ be subclassing in your implementation.
By setting or modifying class attributes on your view, you change it's predefined behaviour. By setting or modifying class attributes on your view, you change it's predefined behaviour.
""" """
from django.core.urlresolvers import set_script_prefix from django.core.urlresolvers import set_script_prefix, get_script_prefix
from django.http import HttpResponse from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt from django.views.decorators.csrf import csrf_exempt
@ -114,8 +114,9 @@ class View(ResourceMixin, RequestMixin, ResponseMixin, AuthMixin, DjangoView):
self.headers = {} self.headers = {}
# Calls to 'reverse' will not be fully qualified unless we set the scheme/host/port here. # Calls to 'reverse' will not be fully qualified unless we set the scheme/host/port here.
orig_prefix = get_script_prefix()
prefix = '%s://%s' % (request.is_secure() and 'https' or 'http', request.get_host()) prefix = '%s://%s' % (request.is_secure() and 'https' or 'http', request.get_host())
set_script_prefix(prefix) set_script_prefix(prefix + orig_prefix)
try: try:
self.initial(request, *args, **kwargs) self.initial(request, *args, **kwargs)
@ -162,13 +163,14 @@ class View(ResourceMixin, RequestMixin, ResponseMixin, AuthMixin, DjangoView):
# merge with headers possibly set at some point in the view # merge with headers possibly set at some point in the view
response.headers.update(self.headers) response.headers.update(self.headers)
set_script_prefix(orig_prefix)
return self.render(response) return self.render(response)
def options(self, request, *args, **kwargs):
def options(self, request, *args, **kwargs):
response_obj = { response_obj = {
'name' : get_name(self), 'name': get_name(self),
'description' : get_description(self), 'description': get_description(self),
'renders': self._rendered_media_types, 'renders': self._rendered_media_types,
'parses': self._parsed_media_types, 'parses': self._parsed_media_types,
} }