diff --git a/djangoldp/serializers.py b/djangoldp/serializers.py index 2726cc90684eca9497da303172e103a7a17731c1..5e78815515679e14bfab79d1a573260a2ad5d818 100644 --- a/djangoldp/serializers.py +++ b/djangoldp/serializers.py @@ -17,9 +17,9 @@ from rest_framework.utils import model_meta from rest_framework.utils.field_mapping import get_nested_relation_kwargs from rest_framework.utils.serializer_helpers import ReturnDict +from djangoldp import permissions from djangoldp.fields import LDPUrlField, IdURLField from djangoldp.models import Model -from djangoldp import permissions class LDListMixin: @@ -210,11 +210,11 @@ class LDPSerializer(HyperlinkedModelSerializer): if hasattr(obj._meta, 'auto_author'): data['permissions'] += permissions.AnonymousReadOnly.author_perms else: - data['permissions'] += permissions.AnonymousReadOnly.authenticated_perms + data['permissions'] += permissions.AnonymousReadOnly.authenticated_perms if hasattr(obj._meta, 'rdf_context'): data['@context'] = obj._meta.rdf_context - + return data def build_standard_field(self, field_name, model_field): diff --git a/djangoldp/tests/tests_save.py b/djangoldp/tests/tests_save.py index 36f724bb19de040e21eac8d4204fc5a0ea39b5c7..e560f01962fe31d03dc008e2300be63f3eecdd9e 100644 --- a/djangoldp/tests/tests_save.py +++ b/djangoldp/tests/tests_save.py @@ -1,11 +1,45 @@ from django.test import TestCase from djangoldp.serializers import LDPSerializer -from djangoldp.tests.models import Skill, JobOffer +from djangoldp.tests.models import Skill, JobOffer, Invoice class Save(TestCase): + def test_save_m2m_graph_with_many_nested(self): + invoice = { + "@graph": [ + { + "@id": "./", + "batches": {"@id": "_:b381"}, + "title": "Nouvelle facture", + }, + { + "@id": "_:b381", + "tasks": {"@id": "_:b382"}, + "title": "Batch 1" + }, + { + "@id": "_:b382", + "title": "Tache 1" + } + ] + } + + meta_args = {'model': Invoice, 'depth': 2, 'fields': ("@id", "title", "batches")} + + meta_class = type('Meta', (), meta_args) + serializer_class = type(LDPSerializer)('InvoiceSerializer', (LDPSerializer,), {'Meta': meta_class}) + serializer = serializer_class(data=invoice) + serializer.is_valid() + result = serializer.save() + + self.assertEquals(result.title, "Nouvelle facture") + self.assertIs(result.batches.count(), 1) + self.assertEquals(result.batches.all()[0].title, "Batch 1") + self.assertIs(result.batches.all()[0].tasks.count(), 1) + #self.assertEquals(result.batches.all()[0].tasks.all()[0].title, "Tache 1") + def test_save_m2m(self): skill1 = Skill.objects.create(title="skill1", obligatoire="obligatoire") skill2 = Skill.objects.create(title="skill2", obligatoire="obligatoire") @@ -35,9 +69,9 @@ class Save(TestCase): def test_save_m2m_graph_simple(self): job = {"@graph": [ - {"title": "job test", - }, - ]} + {"title": "job test", + }, + ]} meta_args = {'model': JobOffer, 'depth': 1, 'fields': ("@id", "title", "skills")}