-
-
Notifications
You must be signed in to change notification settings - Fork 75
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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
Showing
1 changed file
with
24 additions
and
26 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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' | ||
|