Urg. Fixing broken merge

This commit is contained in:
Tom Christie 2011-04-27 18:44:21 +01:00
parent b18302586c
commit 5a59f339c1
5 changed files with 59 additions and 61 deletions

View File

@ -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

View File

@ -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,

View File

@ -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 try:
if self.method.lower() in self.http_method_names: # If using a form POST with '_method'/'_content'/'_content_type' overrides, then alter
handler = getattr(self, self.method.lower(), self.http_method_not_allowed) # self.method, self.content_type, self.RAW_CONTENT & self.CONTENT appropriately.
# If a previously defined method has been disabled self.perform_form_overloading()
if handler is None:
# 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 # Allow return value to be either Response, or an object, or None
if isinstance(response_obj, Response): if isinstance(response_obj, Response):
response = response_obj response = response_obj
elif response_obj is not None: elif response_obj is not None:
response = Response(status.HTTP_200_OK, response_obj) response = Response(status.HTTP_200_OK, response_obj)
else: else:
response = Response(status.HTTP_204_NO_CONTENT) response = Response(status.HTTP_204_NO_CONTENT)
# Pre-serialize filtering (eg filter complex objects into natively serializable types) # Pre-serialize filtering (eg filter complex objects into natively serializable types)
response.cleaned_content = self.cleanup_response(response.raw_content) response.cleaned_content = self.cleanup_response(response.raw_content)
except ErrorResponse, exc: except ErrorResponse, exc:
response = exc.response response = exc.response
# Always add these headers. # Always add these headers.
# #
# TODO - this isn't actually the correct way to set the vary header, # 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. # also it's currently sub-obtimal for HTTP caching - need to sort that out.
response.headers['Allow'] = ', '.join(self.allowed_methods) response.headers['Allow'] = ', '.join(self.allowed_methods)
response.headers['Vary'] = 'Authenticate, Accept' response.headers['Vary'] = 'Authenticate, Accept'
return self.emit(response) return self.emit(response)
except:
import traceback
traceback.print_exc()

View File

@ -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):
#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.

View File

@ -1,18 +1,12 @@
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):