From 96e8f5be61a66d6c7c1711f3320da8c05cc82cac Mon Sep 17 00:00:00 2001
From: Jean-Baptiste <bleme@pm.me>
Date: Mon, 4 Feb 2019 11:00:30 +0100
Subject: [PATCH] update: test pass. still need to be generic

---
 djangoldp/serializers.py | 22 +++++++++++++++-------
 djangoldp/tests/tests.py |  1 -
 2 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/djangoldp/serializers.py b/djangoldp/serializers.py
index 33f4feb0..639e408c 100644
--- a/djangoldp/serializers.py
+++ b/djangoldp/serializers.py
@@ -1,5 +1,4 @@
 import json
-import pdb
 
 from django.core.exceptions import ImproperlyConfigured
 from django.core.urlresolvers import get_resolver
@@ -19,7 +18,7 @@ class LDListMixin:
         data = data['ldp:contains']
         if isinstance(data, dict):
            data = [data]
-        return [self.child.to_internal_value(item['@id']) for item in data]
+        return [self.child.to_internal_value(item) for item in data]
 
     def to_representation(self, value):
         return {'@id': self.id, 'ldp:contains': super().to_representation(value)}
@@ -43,6 +42,12 @@ class ContainerSerializer(LDListMixin, ListSerializer):
         print(validated_data)
         return super().create(validated_data)
 
+    def to_internal_value(self, data):
+        try:
+            return super().to_internal_value(data['@id'])
+        except:
+            return super().to_internal_value(data)
+
 
 
 class ManyJsonLdRelatedField(LDListMixin, ManyRelatedField):
@@ -126,7 +131,7 @@ class LDPSerializer(HyperlinkedModelSerializer):
                     fields = '__all__'
 
             def to_internal_value(self, data):
-                return JsonLdRelatedField(view_name="skill-detail",queryset=Skill.objects.all()).to_internal_value(data)
+                return JsonLdRelatedField(view_name="skill-detail", queryset=Skill.objects.all()).to_internal_value(data)
                 # super().to_internal_value(data)]
 
         kwargs = get_nested_relation_kwargs(relation_info)
@@ -134,14 +139,17 @@ class LDPSerializer(HyperlinkedModelSerializer):
         return NestedLDPSerializer, kwargs
         # return NestedLDPSerializer, {"many": True}
 
-
-
     @classmethod
     def many_init(cls, *args, **kwargs):
         kwargs['child'] = cls()
         return ContainerSerializer(*args, **kwargs)
 
-
     def create(self, validated_data):
-        self.Meta.model.objects.create(**validated_data)
+        skills = validated_data.pop('skills')
+        job_offer = self.Meta.model.objects.create(**validated_data)
+
+        for skill in skills:
+            skill.save()
+            job_offer.skills.add(skill)
+        return job_offer
 
diff --git a/djangoldp/tests/tests.py b/djangoldp/tests/tests.py
index cc031014..e101f69a 100644
--- a/djangoldp/tests/tests.py
+++ b/djangoldp/tests/tests.py
@@ -14,7 +14,6 @@ class Serializer(TestCase):
                    "ldp:contains": [
                        {"@id": "https://happy-dev.fr/skills/{}/".format(skill1.pk)},
                        {"@id": "https://happy-dev.fr/skills/{}/".format(skill2.pk)},
-
                    ]}
                }
 
-- 
GitLab