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", "")