Skip to content

Commit

Permalink
[fc] Repository: plone.app.versioningbehavior
Browse files Browse the repository at this point in the history
Branch: refs/heads/master
Date: 2018-12-03T02:16:24+01:00
Author: Gil Forcada Codinachs (gforcada) <gil.gnome@gmail.com>
Commit: plone/plone.app.versioningbehavior@77f326f

Place changeNote as last field in the form

Fixes plone/Products.CMFPlone#2640

Files changed:
M plone/app/versioningbehavior/behaviors.py
Repository: plone.app.versioningbehavior

Branch: refs/heads/master
Date: 2018-12-03T02:17:51+01:00
Author: Gil Forcada Codinachs (gforcada) <gil.gnome@gmail.com>
Commit: plone/plone.app.versioningbehavior@ea971b3

Update CHANGES.rst

Files changed:
M CHANGES.rst
Repository: plone.app.versioningbehavior

Branch: refs/heads/master
Date: 2018-12-05T09:04:31+01:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: plone/plone.app.versioningbehavior@d3d7ede

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

Place changeNote as last field in the form

Files changed:
M CHANGES.rst
M plone/app/versioningbehavior/behaviors.py
  • Loading branch information
jensens committed Dec 5, 2018
1 parent 0dcb0a8 commit bc41ead
Showing 1 changed file with 31 additions and 19 deletions.
50 changes: 31 additions & 19 deletions last_commit.txt
@@ -1,38 +1,50 @@
Repository: Products.CMFPlone
Repository: plone.app.versioningbehavior


Branch: refs/heads/master
Date: 2018-12-04T16:58:20+01:00
Author: ale-rt (ale-rt) <alessandro.pisa@gmail.com>
Commit: https://github.com/plone/Products.CMFPlone/commit/2a02f1eebff05c5b4a00a6163ee13b1f5008f336
Date: 2018-12-03T02:16:24+01:00
Author: Gil Forcada Codinachs (gforcada) <gil.gnome@gmail.com>
Commit: https://github.com/plone/plone.app.versioningbehavior/commit/77f326f0c3c26e5c8fd61516d1e832edfab1f753

Restore the possibility to sort catalog query results with multiple indexes
Place changeNote as last field in the form

Fixes #2464
Fixes https://github.com/plone/Products.CMFPlone/issues/2640

Files changed:
A news/2464.fixed
M Products/CMFPlone/CatalogTool.py
M Products/CMFPlone/tests/testCatalogTool.py
M plone/app/versioningbehavior/behaviors.py

b"diff --git a/Products/CMFPlone/CatalogTool.py b/Products/CMFPlone/CatalogTool.py\nindex 20d8fb7f2..cafc4b433 100644\n--- a/Products/CMFPlone/CatalogTool.py\n+++ b/Products/CMFPlone/CatalogTool.py\n@@ -437,10 +437,20 @@ def searchResults(self, query=None, **kw):\n if not show_inactive and not self.allow_inactive(kw):\n kw['effectiveRange'] = DateTime()\n \n- sort_on = kw.get('sort_on')\n- if sort_on and sort_on not in self.indexes():\n- # I get crazy sort_ons like '194' or 'null'.\n- kw.pop('sort_on')\n+ # filter out invalid sort_on indexes\n+ sort_on = kw.get('sort_on') or []\n+ if isinstance(sort_on, six.string_types):\n+ sort_on = [sort_on]\n+ valid_indexes = self.indexes()\n+ try:\n+ sort_on = [idx for idx in sort_on if idx in valid_indexes]\n+ except TypeError:\n+ # sort_on is not iterable\n+ sort_on = []\n+ if not sort_on:\n+ kw.pop('sort_on', None)\n+ else:\n+ kw['sort_on'] = sort_on\n \n return ZCatalog.searchResults(self, query, **kw)\n \ndiff --git a/Products/CMFPlone/tests/testCatalogTool.py b/Products/CMFPlone/tests/testCatalogTool.py\nindex 5f491ef7e..f3fa4adc1 100644\n--- a/Products/CMFPlone/tests/testCatalogTool.py\n+++ b/Products/CMFPlone/tests/testCatalogTool.py\n@@ -2,6 +2,7 @@\n # -*- encoding: utf-8 -*-\n from Acquisition import aq_base\n from DateTime import DateTime\n+from functools import partial\n from OFS.ObjectManager import REPLACEABLE\n from plone.app.testing import setRoles\n from plone.app.testing import TEST_USER_ID\n@@ -11,21 +12,23 @@\n from plone.indexer.wrapper import IndexableObjectWrapper\n from plone.uuid.interfaces import IAttributeUUID\n from plone.uuid.interfaces import IUUID\n-from Products.CMFCore.permissions import AccessInactivePortalContent\n from Products.CMFCore.indexing import processQueue\n+from Products.CMFCore.permissions import AccessInactivePortalContent\n from Products.CMFPlone.CatalogTool import CatalogTool\n from Products.CMFPlone.CatalogTool import is_folderish\n from Products.CMFPlone.tests import dummy\n from Products.CMFPlone.tests.PloneTestCase import PloneTestCase\n from Products.CMFPlone.tests.utils import folder_position\n+from z3c.form.interfaces import IFormLayer\n from zope.event import notify\n from zope.interface import alsoProvides\n from zope.lifecycleevent import ObjectCreatedEvent\n-from z3c.form.interfaces import IFormLayer\n+\n import transaction\n import unittest\n import zope.interface\n \n+\n user2 = 'u2'\n group2 = 'g2'\n \n@@ -552,6 +555,36 @@ def afterSetUp(self):\n self.folder.doc5.reindexObject()\n self.folder.doc6.reindexObject()\n \n+ def testSortMultipleColumns(self):\n+ path = '/'.join(self.folder.getPhysicalPath())\n+ query = partial(self.catalog, path=path)\n+ brains = query(sort_on=['portal_type', 'sortable_title'])\n+ self.assertListEqual(\n+ [brain.getPath() for brain in brains],\n+ [\n+ '/plone/Members/test_user_1_/doc2',\n+ '/plone/Members/test_user_1_/doc3',\n+ '/plone/Members/test_user_1_/doc',\n+ '/plone/Members/test_user_1_/doc5',\n+ '/plone/Members/test_user_1_/doc6',\n+ '/plone/Members/test_user_1_/doc4',\n+ '/plone/Members/test_user_1_'\n+ ],\n+ )\n+ brains = query(sort_on=['portal_type', 'getId'])\n+ self.assertListEqual(\n+ [brain.getPath() for brain in brains],\n+ [\n+ '/plone/Members/test_user_1_/doc',\n+ '/plone/Members/test_user_1_/doc2',\n+ '/plone/Members/test_user_1_/doc3',\n+ '/plone/Members/test_user_1_/doc4',\n+ '/plone/Members/test_user_1_/doc5',\n+ '/plone/Members/test_user_1_/doc6',\n+ '/plone/Members/test_user_1_',\n+ ]\n+ )\n+\n def testUnknownSortOnIsIgnored(self):\n # You should not get a CatalogError when an invalid sort_on is passed.\n # I get crazy sort_ons like '194' or 'null'.\ndiff --git a/news/2464.fixed b/news/2464.fixed\nnew file mode 100644\nindex 000000000..208e85080\n--- /dev/null\n+++ b/news/2464.fixed\n@@ -0,0 +1 @@\n+Restore the possibility to sort catalog query results with multiple indexes\n"
b"diff --git a/plone/app/versioningbehavior/behaviors.py b/plone/app/versioningbehavior/behaviors.py\nindex bad3c4f..82638c1 100644\n--- a/plone/app/versioningbehavior/behaviors.py\n+++ b/plone/app/versioningbehavior/behaviors.py\n@@ -40,6 +40,7 @@ class IVersionable(model.Schema):\n default=True,\n required=False)\n \n+ form.order_after(changeNote='*')\n form.omitted('changeNote')\n form.no_omit(IEditForm, 'changeNote')\n form.no_omit(IAddForm, 'changeNote')\n@@ -82,4 +83,4 @@ def versioning_enabled(self):\n \n @versioning_enabled.setter\n def versioning_enabled(self, value):\n- setattr(self.context, 'versioning_enabled', value)\n\\ No newline at end of file\n+ setattr(self.context, 'versioning_enabled', value)\n"

Repository: Products.CMFPlone
Repository: plone.app.versioningbehavior


Branch: refs/heads/master
Date: 2018-12-05T08:53:57+01:00
Date: 2018-12-03T02:17:51+01:00
Author: Gil Forcada Codinachs (gforcada) <gil.gnome@gmail.com>
Commit: https://github.com/plone/plone.app.versioningbehavior/commit/ea971b31e54e0de2a51e8d65430d55e12f26b98f

Update CHANGES.rst

Files changed:
M CHANGES.rst

b'diff --git a/CHANGES.rst b/CHANGES.rst\nindex 1e056c6..59d7c36 100644\n--- a/CHANGES.rst\n+++ b/CHANGES.rst\n@@ -14,8 +14,9 @@ New features:\n \n Bug fixes:\n \n-- *add item here*\n-\n+- Move change notes field to be the last field of the form (just above the buttons).\n+ https://github.com/plone/Products.CMFPlone/issues/2640\n+ [gforcada]\n \n 1.3.5 (2018-11-02)\n ------------------\n'

Repository: plone.app.versioningbehavior


Branch: refs/heads/master
Date: 2018-12-05T09:04:31+01:00
Author: Jens W. Klein (jensens) <jk@kleinundpartner.at>
Commit: https://github.com/plone/Products.CMFPlone/commit/0aa4ec5a81224fcb60f12be70e321d3301f9941c
Commit: https://github.com/plone/plone.app.versioningbehavior/commit/d3d7eded073dd503b2b350d16d589ebdbf1643d7

Merge pull request #2648 from plone/5.2.x-2464-fix-sorting-multiple-columns
Merge pull request #44 from plone/gforcada-patch-1

Restore the possibility to sort catalog query results with multiple indexes [5.2.x]
Place changeNote as last field in the form

Files changed:
A news/2464.fixed
M Products/CMFPlone/CatalogTool.py
M Products/CMFPlone/tests/testCatalogTool.py
M CHANGES.rst
M plone/app/versioningbehavior/behaviors.py

b"diff --git a/Products/CMFPlone/CatalogTool.py b/Products/CMFPlone/CatalogTool.py\nindex 20d8fb7f2..cafc4b433 100644\n--- a/Products/CMFPlone/CatalogTool.py\n+++ b/Products/CMFPlone/CatalogTool.py\n@@ -437,10 +437,20 @@ def searchResults(self, query=None, **kw):\n if not show_inactive and not self.allow_inactive(kw):\n kw['effectiveRange'] = DateTime()\n \n- sort_on = kw.get('sort_on')\n- if sort_on and sort_on not in self.indexes():\n- # I get crazy sort_ons like '194' or 'null'.\n- kw.pop('sort_on')\n+ # filter out invalid sort_on indexes\n+ sort_on = kw.get('sort_on') or []\n+ if isinstance(sort_on, six.string_types):\n+ sort_on = [sort_on]\n+ valid_indexes = self.indexes()\n+ try:\n+ sort_on = [idx for idx in sort_on if idx in valid_indexes]\n+ except TypeError:\n+ # sort_on is not iterable\n+ sort_on = []\n+ if not sort_on:\n+ kw.pop('sort_on', None)\n+ else:\n+ kw['sort_on'] = sort_on\n \n return ZCatalog.searchResults(self, query, **kw)\n \ndiff --git a/Products/CMFPlone/tests/testCatalogTool.py b/Products/CMFPlone/tests/testCatalogTool.py\nindex 5f491ef7e..f3fa4adc1 100644\n--- a/Products/CMFPlone/tests/testCatalogTool.py\n+++ b/Products/CMFPlone/tests/testCatalogTool.py\n@@ -2,6 +2,7 @@\n # -*- encoding: utf-8 -*-\n from Acquisition import aq_base\n from DateTime import DateTime\n+from functools import partial\n from OFS.ObjectManager import REPLACEABLE\n from plone.app.testing import setRoles\n from plone.app.testing import TEST_USER_ID\n@@ -11,21 +12,23 @@\n from plone.indexer.wrapper import IndexableObjectWrapper\n from plone.uuid.interfaces import IAttributeUUID\n from plone.uuid.interfaces import IUUID\n-from Products.CMFCore.permissions import AccessInactivePortalContent\n from Products.CMFCore.indexing import processQueue\n+from Products.CMFCore.permissions import AccessInactivePortalContent\n from Products.CMFPlone.CatalogTool import CatalogTool\n from Products.CMFPlone.CatalogTool import is_folderish\n from Products.CMFPlone.tests import dummy\n from Products.CMFPlone.tests.PloneTestCase import PloneTestCase\n from Products.CMFPlone.tests.utils import folder_position\n+from z3c.form.interfaces import IFormLayer\n from zope.event import notify\n from zope.interface import alsoProvides\n from zope.lifecycleevent import ObjectCreatedEvent\n-from z3c.form.interfaces import IFormLayer\n+\n import transaction\n import unittest\n import zope.interface\n \n+\n user2 = 'u2'\n group2 = 'g2'\n \n@@ -552,6 +555,36 @@ def afterSetUp(self):\n self.folder.doc5.reindexObject()\n self.folder.doc6.reindexObject()\n \n+ def testSortMultipleColumns(self):\n+ path = '/'.join(self.folder.getPhysicalPath())\n+ query = partial(self.catalog, path=path)\n+ brains = query(sort_on=['portal_type', 'sortable_title'])\n+ self.assertListEqual(\n+ [brain.getPath() for brain in brains],\n+ [\n+ '/plone/Members/test_user_1_/doc2',\n+ '/plone/Members/test_user_1_/doc3',\n+ '/plone/Members/test_user_1_/doc',\n+ '/plone/Members/test_user_1_/doc5',\n+ '/plone/Members/test_user_1_/doc6',\n+ '/plone/Members/test_user_1_/doc4',\n+ '/plone/Members/test_user_1_'\n+ ],\n+ )\n+ brains = query(sort_on=['portal_type', 'getId'])\n+ self.assertListEqual(\n+ [brain.getPath() for brain in brains],\n+ [\n+ '/plone/Members/test_user_1_/doc',\n+ '/plone/Members/test_user_1_/doc2',\n+ '/plone/Members/test_user_1_/doc3',\n+ '/plone/Members/test_user_1_/doc4',\n+ '/plone/Members/test_user_1_/doc5',\n+ '/plone/Members/test_user_1_/doc6',\n+ '/plone/Members/test_user_1_',\n+ ]\n+ )\n+\n def testUnknownSortOnIsIgnored(self):\n # You should not get a CatalogError when an invalid sort_on is passed.\n # I get crazy sort_ons like '194' or 'null'.\ndiff --git a/news/2464.fixed b/news/2464.fixed\nnew file mode 100644\nindex 000000000..208e85080\n--- /dev/null\n+++ b/news/2464.fixed\n@@ -0,0 +1 @@\n+Restore the possibility to sort catalog query results with multiple indexes\n"
b"diff --git a/CHANGES.rst b/CHANGES.rst\nindex 1e056c6..59d7c36 100644\n--- a/CHANGES.rst\n+++ b/CHANGES.rst\n@@ -14,8 +14,9 @@ New features:\n \n Bug fixes:\n \n-- *add item here*\n-\n+- Move change notes field to be the last field of the form (just above the buttons).\n+ https://github.com/plone/Products.CMFPlone/issues/2640\n+ [gforcada]\n \n 1.3.5 (2018-11-02)\n ------------------\ndiff --git a/plone/app/versioningbehavior/behaviors.py b/plone/app/versioningbehavior/behaviors.py\nindex bad3c4f..82638c1 100644\n--- a/plone/app/versioningbehavior/behaviors.py\n+++ b/plone/app/versioningbehavior/behaviors.py\n@@ -40,6 +40,7 @@ class IVersionable(model.Schema):\n default=True,\n required=False)\n \n+ form.order_after(changeNote='*')\n form.omitted('changeNote')\n form.no_omit(IEditForm, 'changeNote')\n form.no_omit(IAddForm, 'changeNote')\n@@ -82,4 +83,4 @@ def versioning_enabled(self):\n \n @versioning_enabled.setter\n def versioning_enabled(self, value):\n- setattr(self.context, 'versioning_enabled', value)\n\\ No newline at end of file\n+ setattr(self.context, 'versioning_enabled', value)\n"

0 comments on commit bc41ead

Please sign in to comment.