Commit 5a59f339 by Tom Christie

Urg. Fixing broken merge

parent b1830258
...@@ -68,7 +68,7 @@ class UserLoggedInAuthenticator(BaseAuthenticator): ...@@ -68,7 +68,7 @@ class UserLoggedInAuthenticator(BaseAuthenticator):
if request.method.upper() == 'POST': if request.method.upper() == 'POST':
# Temporarily replace request.POST with .RAW_CONTENT, # Temporarily replace request.POST with .RAW_CONTENT,
# so that we use our more generic request parsing # so that we use our more generic request parsing
request._post = self.mixin.RAW_CONTENT request._post = self.view.RAW_CONTENT
resp = CsrfViewMiddleware().process_view(request, None, (), {}) resp = CsrfViewMiddleware().process_view(request, None, (), {})
del(request._post) del(request._post)
if resp is not None: # csrf failed if resp is not None: # csrf failed
......
...@@ -9,8 +9,14 @@ from django.template import RequestContext, loader ...@@ -9,8 +9,14 @@ from django.template import RequestContext, loader
from django.utils import simplejson as json from django.utils import simplejson as json
from django import forms from django import forms
from decimal import Decimal from djangorestframework.utils import dict2xml, url_resolves
from djangorestframework.markdownwrapper import apply_markdown
from djangorestframework.breadcrumbs import get_breadcrumbs
from djangorestframework.description import get_name, get_description
from djangorestframework import status
from decimal import Decimal
import string
# TODO: Rename verbose to something more appropriate # TODO: Rename verbose to something more appropriate
# TODO: Maybe None could be handled more cleanly. It'd be nice if it was handled by default, # TODO: Maybe None could be handled more cleanly. It'd be nice if it was handled by default,
......
...@@ -77,55 +77,59 @@ class Resource(RequestMixin, ResponseMixin, AuthMixin, View): ...@@ -77,55 +77,59 @@ class Resource(RequestMixin, ResponseMixin, AuthMixin, View):
# all other authentication is CSRF exempt. # all other authentication is CSRF exempt.
@csrf_exempt @csrf_exempt
def dispatch(self, request, *args, **kwargs): def dispatch(self, request, *args, **kwargs):
self.request = request
self.args = args
self.kwargs = kwargs
# Calls to 'reverse' will not be fully qualified unless we set the scheme/host/port here.
prefix = '%s://%s' % (request.is_secure() and 'https' or 'http', request.get_host())
set_script_prefix(prefix)
try: try:
# If using a form POST with '_method'/'_content'/'_content_type' overrides, then alter self.request = request
# self.method, self.content_type, self.RAW_CONTENT & self.CONTENT appropriately. self.args = args
self.perform_form_overloading() self.kwargs = kwargs
# Authenticate and check request is has the relevant permissions # Calls to 'reverse' will not be fully qualified unless we set the scheme/host/port here.
self.check_permissions() prefix = '%s://%s' % (request.is_secure() and 'https' or 'http', request.get_host())
set_script_prefix(prefix)
# Get the appropriate handler method
if self.method.lower() in self.http_method_names: try:
handler = getattr(self, self.method.lower(), self.http_method_not_allowed) # If using a form POST with '_method'/'_content'/'_content_type' overrides, then alter
# If a previously defined method has been disabled # self.method, self.content_type, self.RAW_CONTENT & self.CONTENT appropriately.
if handler is None: self.perform_form_overloading()
# Authenticate and check request is has the relevant permissions
self.check_permissions()
# Get the appropriate handler method
if self.method.lower() in self.http_method_names:
handler = getattr(self, self.method.lower(), self.http_method_not_allowed)
# If a previously defined method has been disabled
if handler is None:
handler = self.http_method_not_allowed
else:
handler = self.http_method_not_allowed handler = self.http_method_not_allowed
else:
handler = self.http_method_not_allowed response_obj = handler(request, *args, **kwargs)
response_obj = handler(request, *args, **kwargs) # Allow return value to be either Response, or an object, or None
if isinstance(response_obj, Response):
# Allow return value to be either Response, or an object, or None response = response_obj
if isinstance(response_obj, Response): elif response_obj is not None:
response = response_obj response = Response(status.HTTP_200_OK, response_obj)
elif response_obj is not None: else:
response = Response(status.HTTP_200_OK, response_obj) response = Response(status.HTTP_204_NO_CONTENT)
else:
response = Response(status.HTTP_204_NO_CONTENT) # Pre-serialize filtering (eg filter complex objects into natively serializable types)
response.cleaned_content = self.cleanup_response(response.raw_content)
# Pre-serialize filtering (eg filter complex objects into natively serializable types)
response.cleaned_content = self.cleanup_response(response.raw_content) except ErrorResponse, exc:
response = exc.response
except ErrorResponse, exc:
response = exc.response # Always add these headers.
#
# Always add these headers. # TODO - this isn't actually the correct way to set the vary header,
# # also it's currently sub-obtimal for HTTP caching - need to sort that out.
# TODO - this isn't actually the correct way to set the vary header, response.headers['Allow'] = ', '.join(self.allowed_methods)
# also it's currently sub-obtimal for HTTP caching - need to sort that out. response.headers['Vary'] = 'Authenticate, Accept'
response.headers['Allow'] = ', '.join(self.allowed_methods)
response.headers['Vary'] = 'Authenticate, Accept' return self.emit(response)
except:
return self.emit(response) import traceback
traceback.print_exc()
...@@ -3,10 +3,7 @@ ...@@ -3,10 +3,7 @@
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.test import TestCase from django.test import TestCase
<<<<<<< local
=======
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
>>>>>>> other
from django.utils import simplejson as json from django.utils import simplejson as json
from djangorestframework.compat import RequestFactory from djangorestframework.compat import RequestFactory
...@@ -170,10 +167,7 @@ class AllowedMethodsTests(TestCase): ...@@ -170,10 +167,7 @@ class AllowedMethodsTests(TestCase):
#above testcases need to probably moved to the core #above testcases need to probably moved to the core
<<<<<<< local
=======
>>>>>>> other
class TestRotation(TestCase): class TestRotation(TestCase):
"""For the example the maximum amount of Blogposts is capped off at views.MAX_POSTS. """For the example the maximum amount of Blogposts is capped off at views.MAX_POSTS.
......
from django.test import TestCase from django.test import TestCase
from django.utils import simplejson as json from django.utils import simplejson as json
<<<<<<< local
=======
>>>>>>> other
from djangorestframework.compat import RequestFactory from djangorestframework.compat import RequestFactory
from pygments_api import views from pygments_api import views
import tempfile, shutil import tempfile, shutil
<<<<<<< local
=======
>>>>>>> other
class TestPygmentsExample(TestCase): class TestPygmentsExample(TestCase):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment