Skip to content

Commit

Permalink
[fc] Repository: plone.stringinterp
Browse files Browse the repository at this point in the history
Branch: refs/heads/master
Date: 2020-08-10T21:22:44+02:00
Author: Gil Forcada Codinachs (gforcada) <[email protected]>
Commit: plone/plone.stringinterp@c75a0cf

Avoid a deprecation warning

To keep zope 4 and earlier compatibility, a try/except is used.

Files changed:
M plone/stringinterp/adapters.py
Repository: plone.stringinterp

Branch: refs/heads/master
Date: 2020-09-02T18:20:24+02:00
Author: Jens W. Klein (jensens) <[email protected]>
Commit: plone/plone.stringinterp@00ddce0

Create 14.misc

Files changed:
A news/14.misc
Repository: plone.stringinterp

Branch: refs/heads/master
Date: 2020-09-02T18:20:38+02:00
Author: Jens W. Klein (jensens) <[email protected]>
Commit: plone/plone.stringinterp@2c71049

Merge pull request #14 from plone/gforcada-patch-1

Avoid a deprecation warning

Files changed:
A news/14.misc
M plone/stringinterp/adapters.py
  • Loading branch information
jensens committed Sep 2, 2020
1 parent d31ac31 commit 37f02f0
Showing 1 changed file with 24 additions and 26 deletions.
50 changes: 24 additions & 26 deletions last_commit.txt
Original file line number Diff line number Diff line change
@@ -1,52 +1,50 @@
Repository: plone.app.iterate
Repository: plone.stringinterp


Branch: refs/heads/master
Date: 2020-07-29T15:58:28-03:00
Author: Franco Pellegrini (frapell) <frapell@gmail.com>
Commit: https://github.com/plone/plone.app.iterate/commit/557b9bd5abf6ac552c932cc32ec85235b6f77ff6
Date: 2020-08-10T21:22:44+02:00
Author: Gil Forcada Codinachs (gforcada) <gil.gnome@gmail.com>
Commit: https://github.com/plone/plone.stringinterp/commit/c75a0cf98dbf4df8da642b00d181227e214f9d8b

Make sure relationship between baseline and wc is removed from the catalog when the working copy is removed. Fixes gh-77
Avoid a deprecation warning

To keep zope 4 and earlier compatibility, a try/except is used.

Files changed:
M plone/app/iterate/base.py
M plone/app/iterate/dexterity/copier.py
M plone/app/iterate/tests/test_iterate.py
M plone/stringinterp/adapters.py

b"diff --git a/plone/app/iterate/base.py b/plone/app/iterate/base.py\nindex d22c6b7..b35a7fc 100644\n--- a/plone/app/iterate/base.py\n+++ b/plone/app/iterate/base.py\n@@ -37,6 +37,7 @@\n from plone.app.iterate.util import get_storage\n from Products.CMFCore import interfaces as cmf_ifaces\n from Products.CMFCore.utils import getToolByName\n+from zc.relation.interfaces import ICatalog\n from zope import component\n from zope.component import queryAdapter\n from zope.event import notify\n@@ -84,6 +85,11 @@ def cancelCheckout(self):\n # publish an event\n notify(CancelCheckoutEvent(self.context, baseline))\n \n+ # Remove the relationship\n+ relation = self._get_relation_to_baseline()\n+ catalog = component.queryUtility(ICatalog)\n+ catalog.unindex(relation)\n+\n # delete the working copy\n wc_container = aq_parent(aq_inner(self.context))\n wc_container.manage_delObjects([self.context.getId()])\n@@ -157,4 +163,4 @@ def _copyBaseline(self, container):\n # get a reference to the working copy\n target_id = result[0]['new_id']\n target = container._getOb(target_id)\n- return target\n\\ No newline at end of file\n+ return target\ndiff --git a/plone/app/iterate/dexterity/copier.py b/plone/app/iterate/dexterity/copier.py\nindex fdcb552..ca01d55 100644\n--- a/plone/app/iterate/dexterity/copier.py\n+++ b/plone/app/iterate/dexterity/copier.py\n@@ -113,8 +113,9 @@ def _handleReferences(self, baseline, wc, mode, wc_ref):\n def _deleteWorkingCopyRelation(self):\n # delete the wc reference keeping a reference to it for its annotations\n relation = self._get_relation_to_baseline()\n- relation.broken(relation.to_path)\n- return relation\n+ catalog = component.queryUtility(ICatalog)\n+ catalog.unindex(relation)\n+ return\n \n def _get_relation_to_baseline(self):\n context = aq_inner(self.context)\ndiff --git a/plone/app/iterate/tests/test_iterate.py b/plone/app/iterate/tests/test_iterate.py\nindex 3c5d0d7..70bb950 100644\n--- a/plone/app/iterate/tests/test_iterate.py\n+++ b/plone/app/iterate/tests/test_iterate.py\n@@ -30,6 +30,9 @@\n from plone.app.testing import TEST_USER_ID\n from plone.app.testing import TEST_USER_NAME\n from Products.CMFCore.utils import getToolByName\n+from zc.relation.interfaces import ICatalog\n+from zope.intid.interfaces import IIntIds\n+from zope import component\n \n import unittest\n \n@@ -207,3 +210,65 @@ def test_control_cancel_on_original_does_not_delete_original(self):\n from plone.app.iterate.interfaces import CheckoutException\n with self.assertRaises(CheckoutException):\n cancel()\n+\n+ def test_relationship_deleted_on_checkin(self):\n+ # Ensure that the relationship between the baseline and the wc is\n+ # removed when the working copy is checked in\n+ folder = self.portal.docs\n+ doc = folder.doc1\n+\n+ intids = component.getUtility(IIntIds)\n+ catalog = component.getUtility(ICatalog)\n+ obj_id = intids.getId(doc)\n+ rels = list(catalog.findRelations({'from_id': obj_id}))\n+ self.assertEqual(len(rels), 0)\n+\n+ wc = ICheckinCheckoutPolicy(doc).checkout(folder)\n+ wc_id = intids.getId(wc)\n+\n+ rels = list(catalog.findRelations({'from_id': obj_id}))\n+ self.assertEqual(len(rels), 1)\n+ from_rel = rels[0]\n+\n+ rels = list(catalog.findRelations({'to_id': wc_id}))\n+ self.assertEqual(len(rels), 1)\n+ to_rel = rels[0]\n+\n+ self.assertEqual(from_rel, to_rel)\n+\n+ doc = ICheckinCheckoutPolicy(wc).checkin('updated')\n+\n+ rels = list(catalog.findRelations({'from_id': obj_id}))\n+\n+ self.assertEqual(len(rels), 0)\n+\n+ def test_relationship_deleted_on_cancel_checkout(self):\n+ # Ensure that the relationship between the baseline and the wc is\n+ # removed when the working copy is checked in\n+ folder = self.portal.docs\n+ doc = folder.doc1\n+\n+ intids = component.getUtility(IIntIds)\n+ catalog = component.getUtility(ICatalog)\n+ obj_id = intids.getId(doc)\n+ rels = list(catalog.findRelations({'from_id': obj_id}))\n+ self.assertEqual(len(rels), 0)\n+\n+ wc = ICheckinCheckoutPolicy(doc).checkout(folder)\n+ wc_id = intids.getId(wc)\n+\n+ rels = list(catalog.findRelations({'from_id': obj_id}))\n+ self.assertEqual(len(rels), 1)\n+ from_rel = rels[0]\n+\n+ rels = list(catalog.findRelations({'to_id': wc_id}))\n+ self.assertEqual(len(rels), 1)\n+ to_rel = rels[0]\n+\n+ self.assertEqual(from_rel, to_rel)\n+\n+ ICheckinCheckoutPolicy(wc).cancelCheckout()\n+\n+ rels = list(catalog.findRelations({'from_id': obj_id}))\n+\n+ self.assertEqual(len(rels), 0)\n"
b'diff --git a/plone/stringinterp/adapters.py b/plone/stringinterp/adapters.py\nindex 6cb7018..db55e43 100644\n--- a/plone/stringinterp/adapters.py\n+++ b/plone/stringinterp/adapters.py\n@@ -10,7 +10,6 @@\n from zope.interface import implementer, Interface, alsoProvides\n from zope.component import adapter\n from zope.i18n import translate\n-from zope.site.hooks import getSite\n \n from AccessControl import Unauthorized\n from Acquisition import aq_inner, aq_parent, aq_get, Implicit\n@@ -31,6 +30,15 @@\n from plone.stringinterp.interfaces import IStringSubstitution\n from plone.stringinterp.interfaces import IContextWrapper\n \n+# BBB: on Zope 5 the fallback will not work anymore,\n+# as long as we want compatibility with Zope 4 and earlier\n+# we need to keep the fallback\n+try:\n+ from zope.component.hooks import getSite\n+except:\n+ from zope.site.hooks import getSite\n+\n+\n \n @implementer(IContextWrapper)\n class ContextWrapper(Implicit):\n'

Repository: plone.app.iterate
Repository: plone.stringinterp


Branch: refs/heads/master
Date: 2020-07-29T16:04:48-03:00
Author: Franco Pellegrini (frapell) <[email protected]>
Commit: https://github.com/plone/plone.app.iterate/commit/e97534bdd944fdd86d5d0ca35ba2bd2abb79d880
Date: 2020-09-02T18:20:24+02:00
Author: Jens W. Klein (jensens) <[email protected]>
Commit: https://github.com/plone/plone.stringinterp/commit/00ddce0c6a24bcc660772539f09e6d60aea7ff86

Add changelog
Create 14.misc

Files changed:
A news/77.bugfix
A news/14.misc

b'diff --git a/news/77.bugfix b/news/77.bugfix\nnew file mode 100644\nindex 0000000..a3d596a\n--- /dev/null\n+++ b/news/77.bugfix\n@@ -0,0 +1 @@\n+- Remove relationship between baseline and working copy, when wc is removed\n'
b'diff --git a/news/14.misc b/news/14.misc\nnew file mode 100644\nindex 0000000..9914dd3\n--- /dev/null\n+++ b/news/14.misc\n@@ -0,0 +1 @@\n+Resolve deprecation warning [gforcada]\n'

Repository: plone.app.iterate
Repository: plone.stringinterp


Branch: refs/heads/master
Date: 2020-09-02T18:18:42+02:00
Date: 2020-09-02T18:20:38+02:00
Author: Jens W. Klein (jensens) <[email protected]>
Commit: https://github.com/plone/plone.app.iterate/commit/f1a81b71ff97a0b87dd9a0834f68987fe284970f
Commit: https://github.com/plone/plone.stringinterp/commit/2c710490985e1d0978809f5d52f26afd0314c3a7

Merge pull request #78 from plone/frapell-remove-relationship
Merge pull request #14 from plone/gforcada-patch-1

Make sure relationship between baseline and wc is removed when wc is removed
Avoid a deprecation warning

Files changed:
A news/77.bugfix
M plone/app/iterate/base.py
M plone/app/iterate/dexterity/copier.py
M plone/app/iterate/tests/test_iterate.py
A news/14.misc
M plone/stringinterp/adapters.py

b"diff --git a/news/77.bugfix b/news/77.bugfix\nnew file mode 100644\nindex 0000000..a3d596a\n--- /dev/null\n+++ b/news/77.bugfix\n@@ -0,0 +1 @@\n+- Remove relationship between baseline and working copy, when wc is removed\ndiff --git a/plone/app/iterate/base.py b/plone/app/iterate/base.py\nindex d22c6b7..b35a7fc 100644\n--- a/plone/app/iterate/base.py\n+++ b/plone/app/iterate/base.py\n@@ -37,6 +37,7 @@\n from plone.app.iterate.util import get_storage\n from Products.CMFCore import interfaces as cmf_ifaces\n from Products.CMFCore.utils import getToolByName\n+from zc.relation.interfaces import ICatalog\n from zope import component\n from zope.component import queryAdapter\n from zope.event import notify\n@@ -84,6 +85,11 @@ def cancelCheckout(self):\n # publish an event\n notify(CancelCheckoutEvent(self.context, baseline))\n \n+ # Remove the relationship\n+ relation = self._get_relation_to_baseline()\n+ catalog = component.queryUtility(ICatalog)\n+ catalog.unindex(relation)\n+\n # delete the working copy\n wc_container = aq_parent(aq_inner(self.context))\n wc_container.manage_delObjects([self.context.getId()])\n@@ -157,4 +163,4 @@ def _copyBaseline(self, container):\n # get a reference to the working copy\n target_id = result[0]['new_id']\n target = container._getOb(target_id)\n- return target\n\\ No newline at end of file\n+ return target\ndiff --git a/plone/app/iterate/dexterity/copier.py b/plone/app/iterate/dexterity/copier.py\nindex fdcb552..ca01d55 100644\n--- a/plone/app/iterate/dexterity/copier.py\n+++ b/plone/app/iterate/dexterity/copier.py\n@@ -113,8 +113,9 @@ def _handleReferences(self, baseline, wc, mode, wc_ref):\n def _deleteWorkingCopyRelation(self):\n # delete the wc reference keeping a reference to it for its annotations\n relation = self._get_relation_to_baseline()\n- relation.broken(relation.to_path)\n- return relation\n+ catalog = component.queryUtility(ICatalog)\n+ catalog.unindex(relation)\n+ return\n \n def _get_relation_to_baseline(self):\n context = aq_inner(self.context)\ndiff --git a/plone/app/iterate/tests/test_iterate.py b/plone/app/iterate/tests/test_iterate.py\nindex 3c5d0d7..70bb950 100644\n--- a/plone/app/iterate/tests/test_iterate.py\n+++ b/plone/app/iterate/tests/test_iterate.py\n@@ -30,6 +30,9 @@\n from plone.app.testing import TEST_USER_ID\n from plone.app.testing import TEST_USER_NAME\n from Products.CMFCore.utils import getToolByName\n+from zc.relation.interfaces import ICatalog\n+from zope.intid.interfaces import IIntIds\n+from zope import component\n \n import unittest\n \n@@ -207,3 +210,65 @@ def test_control_cancel_on_original_does_not_delete_original(self):\n from plone.app.iterate.interfaces import CheckoutException\n with self.assertRaises(CheckoutException):\n cancel()\n+\n+ def test_relationship_deleted_on_checkin(self):\n+ # Ensure that the relationship between the baseline and the wc is\n+ # removed when the working copy is checked in\n+ folder = self.portal.docs\n+ doc = folder.doc1\n+\n+ intids = component.getUtility(IIntIds)\n+ catalog = component.getUtility(ICatalog)\n+ obj_id = intids.getId(doc)\n+ rels = list(catalog.findRelations({'from_id': obj_id}))\n+ self.assertEqual(len(rels), 0)\n+\n+ wc = ICheckinCheckoutPolicy(doc).checkout(folder)\n+ wc_id = intids.getId(wc)\n+\n+ rels = list(catalog.findRelations({'from_id': obj_id}))\n+ self.assertEqual(len(rels), 1)\n+ from_rel = rels[0]\n+\n+ rels = list(catalog.findRelations({'to_id': wc_id}))\n+ self.assertEqual(len(rels), 1)\n+ to_rel = rels[0]\n+\n+ self.assertEqual(from_rel, to_rel)\n+\n+ doc = ICheckinCheckoutPolicy(wc).checkin('updated')\n+\n+ rels = list(catalog.findRelations({'from_id': obj_id}))\n+\n+ self.assertEqual(len(rels), 0)\n+\n+ def test_relationship_deleted_on_cancel_checkout(self):\n+ # Ensure that the relationship between the baseline and the wc is\n+ # removed when the working copy is checked in\n+ folder = self.portal.docs\n+ doc = folder.doc1\n+\n+ intids = component.getUtility(IIntIds)\n+ catalog = component.getUtility(ICatalog)\n+ obj_id = intids.getId(doc)\n+ rels = list(catalog.findRelations({'from_id': obj_id}))\n+ self.assertEqual(len(rels), 0)\n+\n+ wc = ICheckinCheckoutPolicy(doc).checkout(folder)\n+ wc_id = intids.getId(wc)\n+\n+ rels = list(catalog.findRelations({'from_id': obj_id}))\n+ self.assertEqual(len(rels), 1)\n+ from_rel = rels[0]\n+\n+ rels = list(catalog.findRelations({'to_id': wc_id}))\n+ self.assertEqual(len(rels), 1)\n+ to_rel = rels[0]\n+\n+ self.assertEqual(from_rel, to_rel)\n+\n+ ICheckinCheckoutPolicy(wc).cancelCheckout()\n+\n+ rels = list(catalog.findRelations({'from_id': obj_id}))\n+\n+ self.assertEqual(len(rels), 0)\n"
b'diff --git a/news/14.misc b/news/14.misc\nnew file mode 100644\nindex 0000000..9914dd3\n--- /dev/null\n+++ b/news/14.misc\n@@ -0,0 +1 @@\n+Resolve deprecation warning [gforcada]\ndiff --git a/plone/stringinterp/adapters.py b/plone/stringinterp/adapters.py\nindex 6cb7018..db55e43 100644\n--- a/plone/stringinterp/adapters.py\n+++ b/plone/stringinterp/adapters.py\n@@ -10,7 +10,6 @@\n from zope.interface import implementer, Interface, alsoProvides\n from zope.component import adapter\n from zope.i18n import translate\n-from zope.site.hooks import getSite\n \n from AccessControl import Unauthorized\n from Acquisition import aq_inner, aq_parent, aq_get, Implicit\n@@ -31,6 +30,15 @@\n from plone.stringinterp.interfaces import IStringSubstitution\n from plone.stringinterp.interfaces import IContextWrapper\n \n+# BBB: on Zope 5 the fallback will not work anymore,\n+# as long as we want compatibility with Zope 4 and earlier\n+# we need to keep the fallback\n+try:\n+ from zope.component.hooks import getSite\n+except:\n+ from zope.site.hooks import getSite\n+\n+\n \n @implementer(IContextWrapper)\n class ContextWrapper(Implicit):\n'

0 comments on commit 37f02f0

Please sign in to comment.