From d42a03db13e15e5bebfc5d2d2f4926e07f484c68 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste <bleme@pm.me> Date: Tue, 17 Sep 2019 16:09:57 +0200 Subject: [PATCH] update: fix @id on custom container views --- djangoldp/serializers.py | 3 ++- djangoldp/tests/tests_sources.py | 6 ++++++ djangoldp/tests/tests_temp.py | 4 ++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/djangoldp/serializers.py b/djangoldp/serializers.py index 1d7a2720..8fbd6f2d 100644 --- a/djangoldp/serializers.py +++ b/djangoldp/serializers.py @@ -241,7 +241,6 @@ class JsonLdIdentityField(JsonLdField): return super().get_attribute(instance) - class LDPSerializer(HyperlinkedModelSerializer): url_field_name = "@id" serializer_related_field = JsonLdRelatedField @@ -461,6 +460,8 @@ class LDPSerializer(HyperlinkedModelSerializer): serializer = ContainerSerializer(*args, **kwargs) if 'context' in kwargs and getattr(kwargs['context']['view'], 'nested_field', None) is not None: serializer.id = '{}{}/'.format(serializer.id, kwargs['context']['view'].nested_field) + elif 'context' in kwargs: + serializer.id = '{}{}'.format(settings.BASE_URL, kwargs['context']['view'].request.path) return serializer def to_internal_value(self, data): diff --git a/djangoldp/tests/tests_sources.py b/djangoldp/tests/tests_sources.py index e43f3e94..94b58df8 100644 --- a/djangoldp/tests/tests_sources.py +++ b/djangoldp/tests/tests_sources.py @@ -16,3 +16,9 @@ class TestSource(APITestCase): source = LDPSource.objects.create(federation="source_name", urlid="http://bar.foo/") response = self.client.get('/sources/{}/'.format(source.federation), content_type='application/ld+json') self.assertEqual(response.status_code, 200) + self.assertEqual(response.data['@id'], 'http://happy-dev.fr/sources/source_name/') + + def test_get_empty_resource(self): + response = self.client.get('/sources/{}/'.format('unknown'), content_type='application/ld+json') + self.assertEqual(response.status_code, 200) + self.assertEqual(response.data['@id'], 'http://happy-dev.fr/sources/unknown/') diff --git a/djangoldp/tests/tests_temp.py b/djangoldp/tests/tests_temp.py index ef7792a2..db29aaf1 100644 --- a/djangoldp/tests/tests_temp.py +++ b/djangoldp/tests/tests_temp.py @@ -2,6 +2,9 @@ from django.contrib.auth.models import User from django.test import TestCase from rest_framework.test import APIRequestFactory, APIClient +from djangoldp.models import LDPSource + + class TestTemp(TestCase): def setUp(self): @@ -12,3 +15,4 @@ class TestTemp(TestCase): def tearDown(self): pass + -- GitLab