Commit da4fa9bd by Tom Christie

Minor tweaks

parent c28b7193
...@@ -2,27 +2,6 @@ from djangorestframework import status ...@@ -2,27 +2,6 @@ from djangorestframework import status
from djangorestframework.response import Response from djangorestframework.response import Response
class MetadataMixin(object):
"""
Should be mixed in with any `BaseView`.
"""
def metadata(self, request, *args, **kwargs):
content = {
'name': self.get_name(),
'description': self.get_description(),
'renders': self._rendered_media_types,
'parses': self._parsed_media_types,
}
# TODO: Add 'fields', from serializer info.
# form = self.get_bound_form()
# if form is not None:
# field_name_types = {}
# for name, field in form.fields.iteritems():
# field_name_types[name] = field.__class__.__name__
# content['fields'] = field_name_types
raise Response(content, status=status.HTTP_200_OK)
class CreateModelMixin(object): class CreateModelMixin(object):
""" """
Create a model instance. Create a model instance.
...@@ -83,3 +62,25 @@ class DestroyModelMixin(object): ...@@ -83,3 +62,25 @@ class DestroyModelMixin(object):
self.object = self.get_object() self.object = self.get_object()
self.object.delete() self.object.delete()
return Response(status=status.HTTP_204_NO_CONTENT) return Response(status=status.HTTP_204_NO_CONTENT)
class MetadataMixin(object):
"""
Return a dicitonary of view metadata.
Should be mixed in with any `BaseView`.
"""
def metadata(self, request, *args, **kwargs):
content = {
'name': self.get_name(),
'description': self.get_description(),
'renders': self._rendered_media_types,
'parses': self._parsed_media_types,
}
# TODO: Add 'fields', from serializer info.
# form = self.get_bound_form()
# if form is not None:
# field_name_types = {}
# for name, field in form.fields.iteritems():
# field_name_types[name] = field.__class__.__name__
# content['fields'] = field_name_types
raise Response(content, status=status.HTTP_200_OK)
...@@ -234,6 +234,9 @@ class Request(object): ...@@ -234,6 +234,9 @@ class Request(object):
user = authentication.authenticate(self) user = authentication.authenticate(self)
if user: if user:
return user return user
return self._not_authenticated()
def _not_authenticated(self):
return AnonymousUser() return AnonymousUser()
def __getattr__(self, name): def __getattr__(self, name):
......
...@@ -224,18 +224,19 @@ class APIView(_View): ...@@ -224,18 +224,19 @@ class APIView(_View):
def initial(self, request, *args, **kargs): def initial(self, request, *args, **kargs):
""" """
This method is a hook for any code that needs to run prior to This method runs prior to anything else in the view.
anything else. It should return the initial request object.
Required if you want to do things like set `request.upload_handlers`
before the authentication and dispatch handling is run. You may need to override this if you want to do things like set
`request.upload_handlers` before the authentication and dispatch
handling is run.
""" """
pass return Request(request, parsers=self.parsers, authentication=self.authentication)
def final(self, request, response, *args, **kargs): def final(self, request, response, *args, **kargs):
""" """
This method is a hook for any code that needs to run after everything This method runs after everything else in the view.
else in the view. It should return the final response object.
Returns the final response object.
""" """
if isinstance(response, Response): if isinstance(response, Response):
response.view = self response.view = self
...@@ -269,14 +270,12 @@ class APIView(_View): ...@@ -269,14 +270,12 @@ class APIView(_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):
request = Request(request, parsers=self.parsers, authentication=self.authentication)
self.request = request
self.args = args self.args = args
self.kwargs = kwargs self.kwargs = kwargs
self.headers = self.default_response_headers self.headers = self.default_response_headers
try: try:
self.initial(request, *args, **kwargs) self.request = self.initial(request, *args, **kwargs)
# Check that the request is allowed # Check that the request is allowed
self.check_permissions(request) self.check_permissions(request)
......
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