diff --git a/djangoldp/models.py b/djangoldp/models.py index 0bef4dcf8424df51df836fd9c599de616252063f..6e02705c724270e6299eb2010c8d93e383f76e23 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 f6318c283c3aa1ee0c5662051236eb7aa13b7b57..8f68daec47f465da5e069173e9d976f2dfb8592a 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 53644644214c6047dcb98a6aa2ee70e596d12eeb..4f47388ea9004d46c6181dab81688f4fcb19449c 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()