diff --git a/.gitignore b/.gitignore
index 0bf387c..d1567ab 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,16 +1,10 @@
-__pycache__
-.DS_Store
-pyvenv.cfg
.coverage
-coverage.json
-.python-version
*.egg-info
*.log
*.mo
*.py?
*.swp
# dirs
-__pycache__
bin/
buildout-cache/
develop-eggs/
@@ -21,7 +15,6 @@ lib/
local/
node_modules/
parts/
-src/*
dist/*
test.plone_addon/
var/
@@ -36,12 +29,5 @@ report.html
.vscode/
.tox/
reports/
+venv/
# excludes
-!.coveragerc
-!.editorconfig
-!.gitattributes
-!.gitignore
-!.gitkeep
-!.travis.yml
-!src/redturtle
-.idea/
diff --git a/CHANGES.rst b/CHANGES.rst
index a51e44e..47ea2c1 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -4,7 +4,8 @@ Changelog
1.1.2 (unreleased)
------------------
-- Nothing changed yet.
+- Register IObjectPrimaryFieldTarget for #28820.
+ [cekk]
1.1.1 (2024-07-18)
diff --git a/src/rer/externalnews/configure.zcml b/src/rer/externalnews/configure.zcml
index 4377262..02b7baa 100644
--- a/src/rer/externalnews/configure.zcml
+++ b/src/rer/externalnews/configure.zcml
@@ -8,6 +8,7 @@
+
+
+
+
+
+
diff --git a/src/rer/externalnews/restapi/serializer/__init__.py b/src/rer/externalnews/restapi/serializer/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/src/rer/externalnews/restapi/serializer/configure.zcml b/src/rer/externalnews/restapi/serializer/configure.zcml
new file mode 100644
index 0000000..2a3a44c
--- /dev/null
+++ b/src/rer/externalnews/restapi/serializer/configure.zcml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
diff --git a/src/rer/externalnews/restapi/serializer/dxcontent.py b/src/rer/externalnews/restapi/serializer/dxcontent.py
new file mode 100644
index 0000000..923decc
--- /dev/null
+++ b/src/rer/externalnews/restapi/serializer/dxcontent.py
@@ -0,0 +1,26 @@
+from rer.externalnews.interfaces import IExternalNews
+from plone.restapi.interfaces import IObjectPrimaryFieldTarget
+from Products.CMFCore.utils import getToolByName
+from zope.component import adapter
+from zope.interface import implementer
+from zope.interface import Interface
+
+
+@adapter(IExternalNews, Interface)
+@implementer(IObjectPrimaryFieldTarget)
+class ExternalNewsObjectPrimaryFieldTarget:
+ """ """
+
+ def __init__(self, context, request):
+ self.context = context
+ self.request = request
+
+ self.permission_cache = {}
+
+ def __call__(self):
+ """
+ If user can edit Link object, do not return remoteUrl
+ """
+ pm = getToolByName(self.context, "portal_membership")
+ if bool(pm.isAnonymousUser()):
+ return getattr(self.context, "externalUrl", "")