From 1b7fbdb3728b4bc58fa5539a1f5fa1b363d46591 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste <bleme@pm.me> Date: Tue, 30 Jul 2019 11:50:43 +0200 Subject: [PATCH] update: fix default depth to 0 and fix auto_author --- djangoldp/views.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/djangoldp/views.py b/djangoldp/views.py index addeb0ff..eab36c44 100644 --- a/djangoldp/views.py +++ b/djangoldp/views.py @@ -94,7 +94,6 @@ class LDPViewSet(LDPViewSetGenerator): """An automatically generated viewset that serves models following the Linked Data Platform convention""" fields = None exclude = None - depth = 1 renderer_classes = (JSONLDRenderer,) parser_classes = (JSONLDParser,) authentication_classes = (NoCSRFAuthentication,) @@ -114,7 +113,7 @@ class LDPViewSet(LDPViewSetGenerator): lookup_field = get_resolver().reverse_dict[model_name + '-detail'][0][0][1][0] meta_args = {'model': self.model, 'extra_kwargs': { '@id': {'lookup_field': lookup_field}}, - 'depth': self.depth, + 'depth': getattr(self, 'depth', Model.get_meta(self.model, 'depth', 0)), 'extra_fields': self.nested_fields} return self.build_serializer(meta_args, 'Read') @@ -143,6 +142,20 @@ class LDPViewSet(LDPViewSetGenerator): headers = self.get_success_headers(serializer.data) return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers) + def update(self, request, *args, **kwargs): + partial = kwargs.pop('partial', False) + instance = self.get_object() + serializer = self.get_write_serializer(instance, data=request.data, partial=partial) + serializer.is_valid(raise_exception=True) + self.perform_update(serializer) + + if getattr(instance, '_prefetched_objects_cache', None): + # If 'prefetch_related' has been applied to a queryset, we need to + # forcibly invalidate the prefetch cache on the instance. + instance._prefetched_objects_cache = {} + + return Response(serializer.data) + def get_write_serializer(self, *args, **kwargs): """ Return the serializer instance that should be used for validating and @@ -201,10 +214,6 @@ class LDPViewSet(LDPViewSetGenerator): pass return response - def update(self, request, *args, **kwargs): - response = super().update(request, *args, **kwargs) - return response - class LDPNestedViewSet(LDPViewSet): """ -- GitLab