From ff89d121a7081945377e3f197c5e5da9a6c3a8ea Mon Sep 17 00:00:00 2001 From: Andrea Cecchi Date: Wed, 20 Nov 2024 16:57:28 +0100 Subject: [PATCH 1/2] Do not change request during serialization --- src/plone/restapi/serializer/relationfield.py | 2 +- src/plone/restapi/tests/test_dxfield_serializer.py | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/plone/restapi/serializer/relationfield.py b/src/plone/restapi/serializer/relationfield.py index d54cadb9d1..3115568d0e 100644 --- a/src/plone/restapi/serializer/relationfield.py +++ b/src/plone/restapi/serializer/relationfield.py @@ -18,7 +18,7 @@ @implementer(IJsonCompatible) def relationvalue_converter(value): if value.to_object: - request = getRequest() + request = getRequest().clone() request.form["metadata_fields"] = ["UID"] summary = getMultiAdapter((value.to_object, request), ISerializeToJsonSummary)() return json_compatible(summary) diff --git a/src/plone/restapi/tests/test_dxfield_serializer.py b/src/plone/restapi/tests/test_dxfield_serializer.py index bac16ffcc3..625ea83d57 100644 --- a/src/plone/restapi/tests/test_dxfield_serializer.py +++ b/src/plone/restapi/tests/test_dxfield_serializer.py @@ -325,6 +325,19 @@ def test_relationlist_field_serialization_returns_list(self): value, ) + def test_relation_field_serialization_do_not_change_request(self): + self.request.form["metadata_fields"] = ["foo", "bar"] + doc2 = self.portal[ + self.portal.invokeFactory( + "DXTestDocument", + id="doc2", + title="Referenceable Document", + description="Description 2", + ) + ] + self.serialize("test_relationchoice_field", doc2) + self.assertEqual(self.request.form["metadata_fields"], ["foo", "bar"]) + def test_remoteurl_field_in_links_get_converted(self): link = self.portal[ self.portal.invokeFactory( From d69d015e8baf173b2e0a2a889e64b2b779091a7e Mon Sep 17 00:00:00 2001 From: Andrea Cecchi Date: Wed, 20 Nov 2024 17:02:06 +0100 Subject: [PATCH 2/2] Add changelog --- news/1845.bugfix | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 news/1845.bugfix diff --git a/news/1845.bugfix b/news/1845.bugfix new file mode 100644 index 0000000000..d1d853ab67 --- /dev/null +++ b/news/1845.bugfix @@ -0,0 +1,2 @@ +Do not change request during relation fields serialization +[cekk]