Cleanup how we handle inline serializers.
This commit is contained in:
@@ -29,7 +29,6 @@ from .models import Collection, CollectionItem
|
||||
from .serializers import (
|
||||
CollectionSerializer,
|
||||
CollectionItemSerializer,
|
||||
CollectionItemInlineSerializer,
|
||||
CollectionItemRevisionSerializer,
|
||||
CollectionItemChunkSerializer
|
||||
)
|
||||
@@ -66,12 +65,18 @@ class CollectionViewSet(BaseViewSet):
|
||||
queryset = type(self).queryset
|
||||
return self.get_collection_queryset(queryset)
|
||||
|
||||
def get_serializer_context(self):
|
||||
context = super().get_serializer_context()
|
||||
prefer_inline = self.request.method == 'GET' and 'prefer_inline' in self.request.query_params
|
||||
context.update({'request': self.request, 'prefer_inline': prefer_inline})
|
||||
return context
|
||||
|
||||
def destroy(self, request, uid=None):
|
||||
# FIXME: implement
|
||||
return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED)
|
||||
|
||||
def create(self, request, *args, **kwargs):
|
||||
serializer = self.serializer_class(data=request.data)
|
||||
serializer = self.serializer_class(data=request.data, context=self.get_serializer_context())
|
||||
if serializer.is_valid():
|
||||
try:
|
||||
serializer.save(owner=self.request.user)
|
||||
@@ -86,7 +91,7 @@ class CollectionViewSet(BaseViewSet):
|
||||
def list(self, request):
|
||||
queryset = self.get_queryset()
|
||||
|
||||
serializer = self.serializer_class(queryset, context={'request': request}, many=True)
|
||||
serializer = self.serializer_class(queryset, context=self.get_serializer_context(), many=True)
|
||||
return Response(serializer.data)
|
||||
|
||||
|
||||
@@ -98,12 +103,6 @@ class CollectionItemViewSet(BaseViewSet):
|
||||
pagination_class = paginators.LinkHeaderPagination
|
||||
lookup_field = 'uid'
|
||||
|
||||
def get_serializer_class(self):
|
||||
if self.request.method == 'GET' and self.request.query_params.get('prefer_inline'):
|
||||
return CollectionItemInlineSerializer
|
||||
|
||||
return super().get_serializer_class()
|
||||
|
||||
def get_queryset(self):
|
||||
collection_uid = self.kwargs['collection_uid']
|
||||
try:
|
||||
@@ -117,6 +116,12 @@ class CollectionItemViewSet(BaseViewSet):
|
||||
|
||||
return queryset
|
||||
|
||||
def get_serializer_context(self):
|
||||
context = super().get_serializer_context()
|
||||
prefer_inline = self.request.method == 'GET' and 'prefer_inline' in self.request.query_params
|
||||
context.update({'request': self.request, 'prefer_inline': prefer_inline})
|
||||
return context
|
||||
|
||||
def create(self, request, collection_uid=None):
|
||||
collection_object = get_object_or_404(self.get_collection_queryset(Collection.objects), uid=collection_uid)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user