From fa4d46aa507782d8d208e392eef5e09880e6c5cb Mon Sep 17 00:00:00 2001 From: Jean-Baptiste <bleme@pm.me> Date: Wed, 6 Feb 2019 15:20:44 +0100 Subject: [PATCH] update: add a many_depth parameter to the view --- djangoldp/serializers.py | 4 ++++ djangoldp/views.py | 12 ++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/djangoldp/serializers.py b/djangoldp/serializers.py index 530cc1f8..6ce27477 100644 --- a/djangoldp/serializers.py +++ b/djangoldp/serializers.py @@ -155,6 +155,10 @@ class LDPSerializer(HyperlinkedModelSerializer): @classmethod def many_init(cls, *args, **kwargs): kwargs['child'] = cls() + try: + cls.Meta.depth = kwargs['context']['view'].many_depth + except KeyError: + pass return ContainerSerializer(*args, **kwargs) def create(self, validated_data): diff --git a/djangoldp/views.py b/djangoldp/views.py index 9f38b079..8ddcbb3e 100644 --- a/djangoldp/views.py +++ b/djangoldp/views.py @@ -89,9 +89,10 @@ class LDPViewSet(LDPViewSetGenerator): """An automatically generated viewset that serves models following the Linked Data Platform convention""" fields = None exclude = None - depth = 0 + depth = 1 + many_depth = 0 renderer_classes = (JSONLDRenderer,) - parser_classes =(JSONLDParser,) + parser_classes = (JSONLDParser,) authentication_classes = (NoCSRFAuthentication,) def __init__(self, **kwargs): @@ -106,8 +107,10 @@ class LDPViewSet(LDPViewSetGenerator): def build_serializer(self): model_name = self.model._meta.object_name.lower() 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, - 'extra_fields': self.nested_fields} + meta_args = {'model': self.model, 'extra_kwargs': { + '@id': {'lookup_field': lookup_field}}, + 'depth': self.depth, + 'extra_fields': self.nested_fields} if self.fields: meta_args['fields'] = self.fields else: @@ -141,6 +144,7 @@ class LDPViewSet(LDPViewSetGenerator): response = super().update(request, *args, **kwargs) return response + class LDPNestedViewSet(LDPViewSet): """A special case of LDPViewSet serving objects of a relation of a given object (e.g. members of a group, or skills of a user)""" parent_model = None -- GitLab