From f6c30789b635eaa8f03fb1520598527972d8a85c Mon Sep 17 00:00:00 2001 From: Jean-Baptiste <bleme@pm.me> Date: Fri, 26 Apr 2019 12:48:39 +0200 Subject: [PATCH] update: use webid as @id. Useful when the User is external --- djangoldp/serializers.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/djangoldp/serializers.py b/djangoldp/serializers.py index bf364e6e..406a6f21 100644 --- a/djangoldp/serializers.py +++ b/djangoldp/serializers.py @@ -1,4 +1,5 @@ from collections import OrderedDict, Mapping +from typing import Any from urllib import parse from django.core.exceptions import ImproperlyConfigured @@ -9,7 +10,7 @@ from django.utils.encoding import uri_to_iri from rest_framework.exceptions import ValidationError from rest_framework.fields import SkipField, empty from rest_framework.fields import get_error_detail, set_value -from rest_framework.relations import HyperlinkedRelatedField, ManyRelatedField, MANY_RELATION_KWARGS +from rest_framework.relations import HyperlinkedRelatedField, ManyRelatedField, MANY_RELATION_KWARGS, Hyperlink from rest_framework.serializers import HyperlinkedModelSerializer, ListSerializer, ModelSerializer from rest_framework.settings import api_settings from rest_framework.utils import model_meta @@ -182,6 +183,12 @@ class JsonLdIdentityField(JsonLdField): def get_value(self, dictionary): return super().get_value(dictionary) + def to_representation(self, value: Any) -> Any: + try: + return Hyperlink(value.webid(), value) + except AttributeError: + return super().to_representation(value) + class LDPSerializer(HyperlinkedModelSerializer): url_field_name = "@id" -- GitLab