From 57b3e523b71bac180d0d688a7e0920d44342963d Mon Sep 17 00:00:00 2001 From: Andrea Cecchi Date: Tue, 3 Dec 2024 13:40:22 +0100 Subject: [PATCH 1/3] Do not break slate linkintegrity if block is not a slate block --- src/plone/restapi/blocks_linkintegrity.py | 3 +-- src/plone/restapi/deserializer/blocks.py | 7 ++++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/plone/restapi/blocks_linkintegrity.py b/src/plone/restapi/blocks_linkintegrity.py index 754f5c256b..dc5343ff1d 100644 --- a/src/plone/restapi/blocks_linkintegrity.py +++ b/src/plone/restapi/blocks_linkintegrity.py @@ -69,9 +69,8 @@ def __init__(self, context, request): def __call__(self, block): value = (block or {}).get(self.field, []) children = iterate_children(value or []) - for child in children: - node_type = child.get("type") + node_type = child.get("type", "") if node_type: handler = getattr(self, f"handle_{node_type}", None) if handler: diff --git a/src/plone/restapi/deserializer/blocks.py b/src/plone/restapi/deserializer/blocks.py index 59e26a807c..e4a8f825be 100644 --- a/src/plone/restapi/deserializer/blocks.py +++ b/src/plone/restapi/deserializer/blocks.py @@ -24,9 +24,10 @@ def iterate_children(value): queue = deque(value) while queue: child = queue.pop() - yield child - if child.get("children"): - queue.extend(child["children"] or []) + if isinstance(child, dict): + yield child + if child.get("children", []): + queue.extend(child["children"] or []) @implementer(IFieldDeserializer) From 82e604b515833e8f3957e73300b6475d54c90568 Mon Sep 17 00:00:00 2001 From: Andrea Cecchi Date: Tue, 3 Dec 2024 13:47:03 +0100 Subject: [PATCH 2/3] add changelog --- news/1849.bugfix | 1 + 1 file changed, 1 insertion(+) create mode 100644 news/1849.bugfix diff --git a/news/1849.bugfix b/news/1849.bugfix new file mode 100644 index 0000000000..08eab50d4f --- /dev/null +++ b/news/1849.bugfix @@ -0,0 +1 @@ +Do not break slate linkintegrity if block is not a slate block. @cekk From fcfd7896761ef73bcff47fcee1535567521586cf Mon Sep 17 00:00:00 2001 From: David Glick Date: Mon, 16 Dec 2024 21:20:43 -0800 Subject: [PATCH 3/3] Update news/1849.bugfix --- news/1849.bugfix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/news/1849.bugfix b/news/1849.bugfix index 08eab50d4f..29cc13e7c0 100644 --- a/news/1849.bugfix +++ b/news/1849.bugfix @@ -1 +1 @@ -Do not break slate linkintegrity if block is not a slate block. @cekk +Make slate block linkintegrity checking more robust in case data isn't in the expected format. @cekk