From 9d1a1d887acdaef0ca301a84206e903902bd2e5c Mon Sep 17 00:00:00 2001 From: Thibaud Duquennoy <thibaud@duquennoy.fr> Date: Thu, 7 Feb 2019 10:10:39 +0100 Subject: [PATCH] Bug Fixes: Url ID field Fix bugs: URLField represents ids of resources --- djangoldp/models.py | 7 +++++++ djangoldp/serializers.py | 8 ++++++++ djangoldp/tests/tests.py | 1 + 3 files changed, 16 insertions(+) diff --git a/djangoldp/models.py b/djangoldp/models.py index 0bef4dcf..6e02705c 100644 --- a/djangoldp/models.py +++ b/djangoldp/models.py @@ -1,6 +1,7 @@ from django.conf import settings from django.db import models from django.urls import get_resolver +from rest_framework import fields class Model(models.Model): @@ -70,6 +71,12 @@ class Model(models.Model): return path +class LDPUrlField (fields.URLField): + def to_representation(self, value): + str = super(LDPUrlField, self).to_representation(value) + return {'@id': str} + + class LDPSource(models.Model): container = models.URLField() federation = models.CharField(max_length=255) diff --git a/djangoldp/serializers.py b/djangoldp/serializers.py index f6318c28..8f68daec 100644 --- a/djangoldp/serializers.py +++ b/djangoldp/serializers.py @@ -18,6 +18,12 @@ from rest_framework.utils.serializer_helpers import ReturnDict from djangoldp.models import Model +from rest_framework.serializers import HyperlinkedModelSerializer, ListSerializer, ModelSerializer +from rest_framework.utils.field_mapping import get_nested_relation_kwargs +from rest_framework.utils.serializer_helpers import ReturnDict + +from django.db import models as django_models +from djangoldp import models class LDListMixin: def to_internal_value(self, data): @@ -163,6 +169,8 @@ class LDPSerializer(HyperlinkedModelSerializer): url_field_name = "@id" serializer_related_field = JsonLdRelatedField serializer_url_field = JsonLdIdentityField + ModelSerializer.serializer_field_mapping [django_models.URLField] = models.LDPUrlField + @property def data(self): diff --git a/djangoldp/tests/tests.py b/djangoldp/tests/tests.py index 53644644..4f47388e 100644 --- a/djangoldp/tests/tests.py +++ b/djangoldp/tests/tests.py @@ -36,6 +36,7 @@ class TestUserPermissions (TestCase): response = my_view(request) self.assertEqual(response.status_code, 201) + class TestAnonymousUserPermissions (TestCase): def setUp(self): self.factory = RequestFactory() -- GitLab