Skip to content

Commit

Permalink
[fc] Repository: plone.restapi
Browse files Browse the repository at this point in the history
Branch: refs/heads/main
Date: 2023-10-18T11:13:47+02:00
Author: Roel Bruggink (jaroel) <[email protected]>
Commit: plone/plone.restapi@1d899d8

Treat sub-items like items in @linkintegrity (#1714)

* Expose the sources + their target instead of just some sources in "breaches" attribute in @linkintegrity endpoint response

Signed-off-by: Roel Bruggink &lt;[email protected]&gt;

* Be explicit about which data we copy

Signed-off-by: Roel Bruggink &lt;[email protected]&gt;

* Fixup tests

Signed-off-by: Roel Bruggink &lt;[email protected]&gt;

* lint

Signed-off-by: Roel Bruggink &lt;[email protected]&gt;

* test_tree_breaches_no_duplicates is conditional

* Treat sub-items like items in @linkintegrity endpoint

* Add uid only if we haven't seen it

* Unpin plone.app.linktegrity

* Pin plone.app.linkintegrity explicitly for both Plone 6 and Plone 5.2

* Update CHANGES.rst

Co-authored-by: Steve Piercy &lt;[email protected]&gt;

* Update CHANGES.rst

Co-authored-by: Steve Piercy &lt;[email protected]&gt;

* Update news/1714.bugfix

Co-authored-by: Steve Piercy &lt;[email protected]&gt;

* Update CHANGES.rst

Co-authored-by: Steve Piercy &lt;[email protected]&gt;

* Update CHANGES.rst

Co-authored-by: Steve Piercy &lt;[email protected]&gt;

---------

Signed-off-by: Roel Bruggink &lt;[email protected]&gt;
Co-authored-by: Timo Stollenwerk &lt;[email protected]&gt;
Co-authored-by: Steve Piercy &lt;[email protected]&gt;

Files changed:
A news/1714.bugfix
M CHANGES.rst
M plone-5.2.x.cfg
M plone-6.0.x.cfg
M src/plone/restapi/services/linkintegrity/get.py
M src/plone/restapi/tests/test_services_linkintegrity.py
  • Loading branch information
tisto committed Oct 18, 2023
1 parent ce4577b commit 9217148
Showing 1 changed file with 69 additions and 45 deletions.
114 changes: 69 additions & 45 deletions last_commit.txt
Original file line number Diff line number Diff line change
@@ -1,48 +1,72 @@
Repository: plone.api


Branch: refs/heads/master
Date: 2023-10-14T13:05:14+02:00
Author: Gil Forcada Codinachs (gforcada) <[email protected]>
Commit: https://github.com/plone/plone.api/commit/3ea0c864e34c9024b5de3d534db7ea0d0f9f9928

fix(py3.12): deprecated methods

Files changed:
M src/plone/api/tests/test_env.py

b'diff --git a/src/plone/api/tests/test_env.py b/src/plone/api/tests/test_env.py\nindex f18037ce..3086a4d4 100644\n--- a/src/plone/api/tests/test_env.py\n+++ b/src/plone/api/tests/test_env.py\n@@ -514,14 +514,14 @@ def test_plone_version(self):\n from plone.api.env import plone_version\n \n self.assertTrue(isinstance(plone_version(), str))\n- self.assertRegexpMatches(plone_version(), version_regexp)\n+ self.assertRegex(plone_version(), version_regexp)\n \n def test_zope_version(self):\n """Tests that zope_version() returns Zope version."""\n from plone.api.env import zope_version\n \n self.assertTrue(isinstance(zope_version(), str))\n- self.assertRegexpMatches(zope_version(), version_regexp)\n+ self.assertRegex(zope_version(), version_regexp)\n \n def test_adopt_user_different_username(self):\n user = api.user.get(userid=TEST_USER_ID)\n'

Repository: plone.api


Branch: refs/heads/master
Date: 2023-10-14T13:05:14+02:00
Author: Gil Forcada Codinachs (gforcada) <[email protected]>
Commit: https://github.com/plone/plone.api/commit/b26d6e76664299d1a9f2fe5eb58ba8246f5e5b25

Add news entry
Repository: plone.restapi


Branch: refs/heads/main
Date: 2023-10-18T11:13:47+02:00
Author: Roel Bruggink (jaroel) <[email protected]>
Commit: https://github.com/plone/plone.restapi/commit/1d899d81b310a5597a4ec61a42d36163e4b4f075

Treat sub-items like items in @linkintegrity (#1714)

* Expose the sources + their target instead of just some sources in "breaches" attribute in @linkintegrity endpoint response

Signed-off-by: Roel Bruggink &lt;[email protected]&gt;

* Be explicit about which data we copy

Signed-off-by: Roel Bruggink &lt;[email protected]&gt;

* Fixup tests

Signed-off-by: Roel Bruggink &lt;[email protected]&gt;

* lint

Signed-off-by: Roel Bruggink &lt;[email protected]&gt;

* test_tree_breaches_no_duplicates is conditional

* Treat sub-items like items in @linkintegrity endpoint

* Add uid only if we haven't seen it

* Unpin plone.app.linktegrity

* Pin plone.app.linkintegrity explicitly for both Plone 6 and Plone 5.2

* Update CHANGES.rst

Co-authored-by: Steve Piercy &lt;[email protected]&gt;

* Update CHANGES.rst

Co-authored-by: Steve Piercy &lt;[email protected]&gt;

* Update news/1714.bugfix

Co-authored-by: Steve Piercy &lt;[email protected]&gt;

* Update CHANGES.rst

Co-authored-by: Steve Piercy &lt;[email protected]&gt;

* Update CHANGES.rst

Co-authored-by: Steve Piercy &lt;[email protected]&gt;

---------

Signed-off-by: Roel Bruggink &lt;[email protected]&gt;
Co-authored-by: Timo Stollenwerk &lt;[email protected]&gt;
Co-authored-by: Steve Piercy &lt;[email protected]&gt;

Files changed:
A news/1.bugfix

b'diff --git a/news/1.bugfix b/news/1.bugfix\nnew file mode 100644\nindex 00000000..1494e057\n--- /dev/null\n+++ b/news/1.bugfix\n@@ -0,0 +1,2 @@\n+Replace deprecated assert methods.\n+[gforcada]\n'

Repository: plone.api


Branch: refs/heads/master
Date: 2023-10-14T16:15:18+02:00
Author: Gil Forcada Codinachs (gforcada) <[email protected]>
Commit: https://github.com/plone/plone.api/commit/86a2b874b34245a22261f7588c2430eadc2cba3c

Merge pull request #514 from plone/fix-regex-asserts

Fix regex asserts

Files changed:
A news/1.bugfix
M src/plone/api/tests/test_env.py

b'diff --git a/news/1.bugfix b/news/1.bugfix\nnew file mode 100644\nindex 00000000..1494e057\n--- /dev/null\n+++ b/news/1.bugfix\n@@ -0,0 +1,2 @@\n+Replace deprecated assert methods.\n+[gforcada]\ndiff --git a/src/plone/api/tests/test_env.py b/src/plone/api/tests/test_env.py\nindex f18037ce..3086a4d4 100644\n--- a/src/plone/api/tests/test_env.py\n+++ b/src/plone/api/tests/test_env.py\n@@ -514,14 +514,14 @@ def test_plone_version(self):\n from plone.api.env import plone_version\n \n self.assertTrue(isinstance(plone_version(), str))\n- self.assertRegexpMatches(plone_version(), version_regexp)\n+ self.assertRegex(plone_version(), version_regexp)\n \n def test_zope_version(self):\n """Tests that zope_version() returns Zope version."""\n from plone.api.env import zope_version\n \n self.assertTrue(isinstance(zope_version(), str))\n- self.assertRegexpMatches(zope_version(), version_regexp)\n+ self.assertRegex(zope_version(), version_regexp)\n \n def test_adopt_user_different_username(self):\n user = api.user.get(userid=TEST_USER_ID)\n'
A news/1714.bugfix
M CHANGES.rst
M plone-5.2.x.cfg
M plone-6.0.x.cfg
M src/plone/restapi/services/linkintegrity/get.py
M src/plone/restapi/tests/test_services_linkintegrity.py

b'diff --git a/CHANGES.rst b/CHANGES.rst\nindex 1513cd6cf2..d0f7ce90dd 100644\n--- a/CHANGES.rst\n+++ b/CHANGES.rst\n@@ -461,9 +461,9 @@ Bug fixes:\n \n \n - Added url field to Actions (#817)\n-- Update statictime tests following changes to p.a.disucssion (see \n- https://github.com/plone/plone.app.discussion/pull/204) - [instification] (#1520)\n-- Update @portrait endpoint to use sanitized user id [instification] (#1524)\n+- Updated ``statictime`` tests following changes to ``p.a.discussion`` (see\n+ https://github.com/plone/plone.app.discussion/pull/204). @instification (#1520)\n+- Updated ``@portrait`` endpoint to use sanitized user id. @instification (#1524)\n \n \n 8.31.0 (2022-10-20)\ndiff --git a/news/1714.bugfix b/news/1714.bugfix\nnew file mode 100644\nindex 0000000000..8cdae00d86\n--- /dev/null\n+++ b/news/1714.bugfix\n@@ -0,0 +1 @@\n+Treat sub-items like items in ``@linkintegrity`` endpoint. @jaroel\n\\ No newline at end of file\ndiff --git a/plone-5.2.x.cfg b/plone-5.2.x.cfg\nindex 158b669f23..d2924baf42 100644\n--- a/plone-5.2.x.cfg\n+++ b/plone-5.2.x.cfg\n@@ -7,4 +7,5 @@ extends =\n black = 22.3.0\n \n # we need the newest plone.rest release\n-plone.rest = 3.0.1\n\\ No newline at end of file\n+plone.rest = 3.0.1\n+plone.app.linkintegrity = 3.6.2\ndiff --git a/plone-6.0.x.cfg b/plone-6.0.x.cfg\nindex ad032cc1fd..a882e859f4 100644\n--- a/plone-6.0.x.cfg\n+++ b/plone-6.0.x.cfg\n@@ -15,6 +15,7 @@ zodb-temporary-storage = off\n [versions]\n black = 22.3.0\n pygments = 2.14.0\n+plone.app.linkintegrity = 4.0.3\n robotframework-browser = 17.5.2\n robotframework-assertion-engine = 2.0.0\n robotframework-debuglibrary = 2.3.0\ndiff --git a/src/plone/restapi/services/linkintegrity/get.py b/src/plone/restapi/services/linkintegrity/get.py\nindex 6c6aa7ea05..32a5ecba7d 100644\n--- a/src/plone/restapi/services/linkintegrity/get.py\n+++ b/src/plone/restapi/services/linkintegrity/get.py\n@@ -38,6 +38,9 @@ def reply(self):\n data = getMultiAdapter((item, self.request), ISerializeToJsonSummary)()\n data["breaches"] = []\n for breach in breaches:\n+ if breach["target"]["uid"] not in uids:\n+ uids.append(breach["target"]["uid"])\n+ continue\n for source in breach.get("sources", []):\n # remove unwanted data\n source["@id"] = source["url"]\ndiff --git a/src/plone/restapi/tests/test_services_linkintegrity.py b/src/plone/restapi/tests/test_services_linkintegrity.py\nindex 297843f709..9492796eb5 100644\n--- a/src/plone/restapi/tests/test_services_linkintegrity.py\n+++ b/src/plone/restapi/tests/test_services_linkintegrity.py\n@@ -20,7 +20,6 @@\n \n \n class TestLinkIntegrity(unittest.TestCase):\n-\n layer = PLONE_RESTAPI_BLOCKS_FUNCTIONAL_TESTING\n \n def setUp(self):\n@@ -210,3 +209,164 @@ def test_return_items_total_in_subfolders(self):\n self.assertEqual(result[0]["@id"], level1.absolute_url())\n self.assertEqual(result[0]["breaches"], [])\n self.assertEqual(result[0]["items_total"], 1)\n+\n+ def test_tree_breaches_no_duplicates(self):\n+ # /target_parent/target_child\n+ target_parent = createContentInContainer(\n+ self.portal, "Folder", id="target-parent"\n+ )\n+ target_child = createContentInContainer(\n+ target_parent, "Document", id="target-child"\n+ )\n+ target_parent_uid = IUUID(target_parent)\n+ target_child_uid = IUUID(target_child)\n+\n+ source_a = createContentInContainer(\n+ self.portal,\n+ "Document",\n+ id="source-a",\n+ title="Source A",\n+ blocks={\n+ "block-uuid1": {\n+ "@type": "text",\n+ "text": {\n+ "blocks": [{"text": "some link"}],\n+ "entityMap": {\n+ "0": {\n+ "data": {\n+ "href": f"../resolveuid/{target_parent_uid}",\n+ "rel": "nofollow",\n+ "url": f"../resolveuid/{target_parent_uid}",\n+ },\n+ "mutability": "MUTABLE",\n+ "type": "LINK",\n+ }\n+ },\n+ },\n+ },\n+ "block-uuid2": {\n+ "@type": "text",\n+ "text": {\n+ "blocks": [{"text": "some other link"}],\n+ "entityMap": {\n+ "0": {\n+ "data": {\n+ "href": f"../resolveuid/{target_child_uid}",\n+ "rel": "nofollow",\n+ "url": f"../resolveuid/{target_child_uid}",\n+ },\n+ "mutability": "MUTABLE",\n+ "type": "LINK",\n+ }\n+ },\n+ },\n+ },\n+ },\n+ )\n+\n+ source_b = createContentInContainer(\n+ self.portal,\n+ "Document",\n+ id="source-b",\n+ title="Source B",\n+ blocks={\n+ "block-uuid3": {\n+ "@type": "text",\n+ "text": {\n+ "blocks": [{"text": "some link"}],\n+ "entityMap": {\n+ "0": {\n+ "data": {\n+ "href": f"../resolveuid/{target_parent_uid}",\n+ "rel": "nofollow",\n+ "url": f"../resolveuid/{target_parent_uid}",\n+ },\n+ "mutability": "MUTABLE",\n+ "type": "LINK",\n+ }\n+ },\n+ },\n+ }\n+ },\n+ )\n+\n+ source_c = createContentInContainer(\n+ self.portal,\n+ "Document",\n+ id="source-c",\n+ title="Source C",\n+ blocks={\n+ "block-uuid4": {\n+ "@type": "text",\n+ "text": {\n+ "blocks": [{"text": "some other link"}],\n+ "entityMap": {\n+ "0": {\n+ "data": {\n+ "href": f"../resolveuid/{target_child_uid}",\n+ "rel": "nofollow",\n+ "url": f"../resolveuid/{target_child_uid}",\n+ },\n+ "mutability": "MUTABLE",\n+ "type": "LINK",\n+ }\n+ },\n+ },\n+ },\n+ },\n+ )\n+\n+ transaction.commit()\n+\n+ response = self.api_session.get(\n+ "/@linkintegrity", params={"uids": [target_parent_uid]}\n+ )\n+\n+ results = response.json()\n+ self.assertEqual(\n+ [\n+ {\n+ "@id": target_parent.absolute_url(),\n+ "@type": "Folder",\n+ "breaches": [\n+ {\n+ "@id": source_a.absolute_url(),\n+ "title": "Source A",\n+ "uid": IUUID(source_a),\n+ },\n+ {\n+ "@id": source_b.absolute_url(),\n+ "title": "Source B",\n+ "uid": IUUID(source_b),\n+ },\n+ ],\n+ "description": "",\n+ "items_total": 1,\n+ "review_state": "private",\n+ "title": "",\n+ "type_title": "Folder",\n+ },\n+ {\n+ "@id": target_child.absolute_url(),\n+ "@type": "Document",\n+ "breaches": [\n+ {\n+ "@id": source_a.absolute_url(),\n+ "title": "Source A",\n+ "uid": IUUID(source_a),\n+ },\n+ {\n+ "@id": source_c.absolute_url(),\n+ "title": "Source C",\n+ "uid": IUUID(source_c),\n+ },\n+ ],\n+ "description": "",\n+ "items_total": 0,\n+ "review_state": "private",\n+ "title": "",\n+ "type_title": "Page",\n+ },\n+ ],\n+ results,\n+ )\n'

0 comments on commit 9217148

Please sign in to comment.