Skip to content
Snippets Groups Projects
Commit 17ab9ee1 authored by Jean-Baptiste's avatar Jean-Baptiste
Browse files

Merge branch 'many-depth' into 'master'

update: add a many_depth parameter to the view

See merge request startinblox/djangoldp-packages/djangoldp!16
parents 00743d42 fa4d46aa
No related branches found
No related tags found
1 merge request!16update: add a many_depth parameter to the view
Pipeline #696 passed
...@@ -155,6 +155,10 @@ class LDPSerializer(HyperlinkedModelSerializer): ...@@ -155,6 +155,10 @@ class LDPSerializer(HyperlinkedModelSerializer):
@classmethod @classmethod
def many_init(cls, *args, **kwargs): def many_init(cls, *args, **kwargs):
kwargs['child'] = cls() kwargs['child'] = cls()
try:
cls.Meta.depth = kwargs['context']['view'].many_depth
except KeyError:
pass
return ContainerSerializer(*args, **kwargs) return ContainerSerializer(*args, **kwargs)
def create(self, validated_data): def create(self, validated_data):
......
...@@ -89,9 +89,10 @@ class LDPViewSet(LDPViewSetGenerator): ...@@ -89,9 +89,10 @@ class LDPViewSet(LDPViewSetGenerator):
"""An automatically generated viewset that serves models following the Linked Data Platform convention""" """An automatically generated viewset that serves models following the Linked Data Platform convention"""
fields = None fields = None
exclude = None exclude = None
depth = 0 depth = 1
many_depth = 0
renderer_classes = (JSONLDRenderer,) renderer_classes = (JSONLDRenderer,)
parser_classes =(JSONLDParser,) parser_classes = (JSONLDParser,)
authentication_classes = (NoCSRFAuthentication,) authentication_classes = (NoCSRFAuthentication,)
def __init__(self, **kwargs): def __init__(self, **kwargs):
...@@ -106,8 +107,10 @@ class LDPViewSet(LDPViewSetGenerator): ...@@ -106,8 +107,10 @@ class LDPViewSet(LDPViewSetGenerator):
def build_serializer(self): def build_serializer(self):
model_name = self.model._meta.object_name.lower() model_name = self.model._meta.object_name.lower()
lookup_field = get_resolver().reverse_dict[model_name + '-detail'][0][0][1][0] 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, meta_args = {'model': self.model, 'extra_kwargs': {
'extra_fields': self.nested_fields} '@id': {'lookup_field': lookup_field}},
'depth': self.depth,
'extra_fields': self.nested_fields}
if self.fields: if self.fields:
meta_args['fields'] = self.fields meta_args['fields'] = self.fields
else: else:
...@@ -141,6 +144,7 @@ class LDPViewSet(LDPViewSetGenerator): ...@@ -141,6 +144,7 @@ class LDPViewSet(LDPViewSetGenerator):
response = super().update(request, *args, **kwargs) response = super().update(request, *args, **kwargs)
return response return response
class LDPNestedViewSet(LDPViewSet): 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)""" """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 parent_model = None
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment