diff --git a/djangoldp/serializers.py b/djangoldp/serializers.py index 530cc1f816fa889b484441a301e346290afd6edb..6ce27477ae679312382ea059919a57eede9bd9ea 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 9f38b07954063deaab01ec59ac33e37f3c306a17..8ddcbb3e5b0cd88eb722dcdc2c9751f5e37f7307 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