mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-07-18 12:12:19 +03:00
bug fix
This commit is contained in:
parent
587c890ef1
commit
e96666fa44
|
@ -490,6 +490,7 @@ class InstanceMixin(object):
|
||||||
"""
|
"""
|
||||||
view = super(InstanceMixin, cls).as_view(**initkwargs)
|
view = super(InstanceMixin, cls).as_view(**initkwargs)
|
||||||
resource_class = getattr(cls(**initkwargs), 'resource_class', None)
|
resource_class = getattr(cls(**initkwargs), 'resource_class', None)
|
||||||
|
# TODO: FIX !!! Very bad now, since this is attached on the class
|
||||||
if resource_class:
|
if resource_class:
|
||||||
# We do a little dance when we store the view callable...
|
# We do a little dance when we store the view callable...
|
||||||
# we need to store it wrapped in a 1-tuple, so that inspect will
|
# we need to store it wrapped in a 1-tuple, so that inspect will
|
||||||
|
@ -506,7 +507,7 @@ class GetResourceMixin(object):
|
||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
try:
|
try:
|
||||||
self.resource.retrieve(request, *args, **kwargs)
|
self.resource.retrieve(*args, **kwargs)
|
||||||
except self.resource.DoesNotExist:
|
except self.resource.DoesNotExist:
|
||||||
raise ErrorResponse(status.HTTP_404_NOT_FOUND)
|
raise ErrorResponse(status.HTTP_404_NOT_FOUND)
|
||||||
return self.resource.instance
|
return self.resource.instance
|
||||||
|
@ -515,8 +516,8 @@ class GetResourceMixin(object):
|
||||||
class PostResourceMixin(object):
|
class PostResourceMixin(object):
|
||||||
|
|
||||||
def post(self, request, *args, **kwargs):
|
def post(self, request, *args, **kwargs):
|
||||||
self.resource.create(request, *args, **kwargs)
|
self.resource.create(*args, **kwargs)
|
||||||
self.resource.update(self.CONTENT, request, *args, **kwargs)
|
self.resource.update(self.CONTENT, *args, **kwargs)
|
||||||
headers = {'Location': self.resource.get_url()}
|
headers = {'Location': self.resource.get_url()}
|
||||||
return Response(status.HTTP_201_CREATED, self.resource.instance, headers)
|
return Response(status.HTTP_201_CREATED, self.resource.instance, headers)
|
||||||
|
|
||||||
|
@ -526,12 +527,12 @@ class PutResourceMixin(object):
|
||||||
def put(self, request, *args, **kwargs):
|
def put(self, request, *args, **kwargs):
|
||||||
headers = {}
|
headers = {}
|
||||||
try:
|
try:
|
||||||
self.resource.retrieve(request, *args, **kwargs)
|
self.resource.retrieve(*args, **kwargs)
|
||||||
status_code = status.HTTP_204_NO_CONTENT
|
status_code = status.HTTP_204_NO_CONTENT
|
||||||
except self.resource.DoesNotExist:
|
except self.resource.DoesNotExist:
|
||||||
self.resource.create(request, *args, **kwargs)
|
self.resource.create(*args, **kwargs)
|
||||||
status_code = status.HTTP_201_CREATED
|
status_code = status.HTTP_201_CREATED
|
||||||
self.resource.update(self.CONTENT, request, *args, **kwargs)
|
self.resource.update(self.CONTENT, *args, **kwargs)
|
||||||
return Response(status_code, self.resource.instance, {})
|
return Response(status_code, self.resource.instance, {})
|
||||||
|
|
||||||
|
|
||||||
|
@ -539,17 +540,17 @@ class DeleteResourceMixin(object):
|
||||||
|
|
||||||
def delete(self, request, *args, **kwargs):
|
def delete(self, request, *args, **kwargs):
|
||||||
try:
|
try:
|
||||||
self.resource.retrieve(request, *args, **kwargs)
|
self.resource.retrieve(*args, **kwargs)
|
||||||
except self.resource.DoesNotExist:
|
except self.resource.DoesNotExist:
|
||||||
raise ErrorResponse(status.HTTP_404_NOT_FOUND)
|
raise ErrorResponse(status.HTTP_404_NOT_FOUND)
|
||||||
self.resource.delete(request, *args, **kwargs)
|
self.resource.delete(*args, **kwargs)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
class ListResourceMixin(object):
|
class ListResourceMixin(object):
|
||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
return self.resource.list(request, *args, **kwargs)
|
return self.resource.list(*args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
########## Pagination Mixins ##########
|
########## Pagination Mixins ##########
|
||||||
|
|
|
@ -19,7 +19,8 @@ class BaseResource(object):
|
||||||
# TODO: Inheritance, like for models
|
# TODO: Inheritance, like for models
|
||||||
class DoesNotExist(Exception): pass
|
class DoesNotExist(Exception): pass
|
||||||
|
|
||||||
def __init__(self, instance=None, view=None, depth=None, stack=[], **kwargs):
|
# !!! `view` should be first kwarg to avoid backward incompatibilities.
|
||||||
|
def __init__(self, view=None, instance=None, depth=None, stack=[], **kwargs):
|
||||||
super(BaseResource, self).__init__(depth, stack, **kwargs)
|
super(BaseResource, self).__init__(depth, stack, **kwargs)
|
||||||
self.view = view
|
self.view = view
|
||||||
self.instance = instance
|
self.instance = instance
|
||||||
|
@ -320,13 +321,13 @@ class ModelResource(FormResource):
|
||||||
is not set.
|
is not set.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, instance=None, view=None, depth=None, stack=[], **kwargs):
|
def __init__(self, view=None, instance=None, depth=None, stack=[], **kwargs):
|
||||||
"""
|
"""
|
||||||
Allow :attr:`form` and :attr:`model` attributes set on the
|
Allow :attr:`form` and :attr:`model` attributes set on the
|
||||||
:class:`View` to override the :attr:`form` and :attr:`model`
|
:class:`View` to override the :attr:`form` and :attr:`model`
|
||||||
attributes set on the :class:`Resource`.
|
attributes set on the :class:`Resource`.
|
||||||
"""
|
"""
|
||||||
super(ModelResource, self).__init__(instance=instance, view=view, depth=depth, stack=stack, **kwargs)
|
super(ModelResource, self).__init__(view=view, instance=instance, depth=depth, stack=stack, **kwargs)
|
||||||
|
|
||||||
self.model = getattr(view, 'model', None) or self.model
|
self.model = getattr(view, 'model', None) or self.model
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user