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

Merge branch '168-str' into 'master'

Resolve "Issue with ManyToManyField while PUTting resource"

Closes #168

See merge request startinblox/djangoldp-packages/djangoldp!95
parents 9c944971 e761b742
No related branches found
Tags v0.6.4
No related merge requests found
......@@ -270,35 +270,39 @@ class LDPSerializer(HyperlinkedModelSerializer):
class JSonLDPropertyField(ReadOnlyField):
def to_representation(self, instance):
from djangoldp.views import LDPViewSet
try:
model_class = instance.model
except :
model_class = instance.__class__
serializer_generator = LDPViewSet(model=model_class,
lookup_field=Model.get_meta(model_class, 'lookup_field', 'pk'),
permission_classes=Model.get_meta(model_class,
'permission_classes',
[LDPPermissions]),
fields=Model.get_meta(model_class, 'serializer_fields', []),
nested_fields=Model.get_meta(model_class, 'nested_fields', []))
parent_depth = max(getattr(self.parent.Meta, "depth", 0) - 1, 0)
serializer_generator.depth = parent_depth
serializer = serializer_generator.build_read_serializer()(context=self.parent.context)
if parent_depth is 0:
serializer.Meta.fields = ["@id"]
if isinstance(instance, QuerySet):
data = list(instance)
return {'@id': '{}{}{}/'.format(settings.SITE_URL, '{}{}/', self.source),
'@type': 'ldp:Container',
'ldp:contains': [serializer.to_representation(item) if item is not None else None for item
in data],
'permissions': Model.get_permissions(self.parent.Meta.model, self.context['request'].user,
['view', 'add'])
}
if isinstance(instance, QuerySet) or isinstance(instance, Model):
try:
model_class = instance.model
except :
model_class = instance.__class__
serializer_generator = LDPViewSet(model=model_class,
lookup_field=Model.get_meta(model_class, 'lookup_field', 'pk'),
permission_classes=Model.get_meta(model_class,
'permission_classes',
[LDPPermissions]),
fields=Model.get_meta(model_class, 'serializer_fields', []),
nested_fields=Model.get_meta(model_class, 'nested_fields', []))
parent_depth = max(getattr(self.parent.Meta, "depth", 0) - 1, 0)
serializer_generator.depth = parent_depth
serializer = serializer_generator.build_read_serializer()(context=self.parent.context)
if parent_depth is 0:
serializer.Meta.fields = ["@id"]
if isinstance(instance, QuerySet):
data = list(instance)
return {'@id': '{}{}{}/'.format(settings.SITE_URL, '{}{}/', self.source),
'@type': 'ldp:Container',
'ldp:contains': [serializer.to_representation(item) if item is not None else None for item
in data],
'permissions': Model.get_permissions(self.parent.Meta.model, self.context['request'].user,
['view', 'add'])
}
else:
return serializer.to_representation(instance)
else:
return serializer.to_representation(instance)
return instance
field_class = JSonLDPropertyField
field_kwargs = {}
......
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