Skip to content

Commit

Permalink
[fc] Repository: plone.app.widgets
Browse files Browse the repository at this point in the history
Branch: refs/heads/master
Date: 2024-10-18T09:01:33+02:00
Author: 1letter (1letter) <1letter@gmx.de>
Commit: plone/plone.app.widgets@b3cc037

deactivate robot tests

Files changed:
A news/224.tests
A plone/app/widgets/tests/robot/deactivate_test_querystring_widget.robot
A plone/app/widgets/tests/robot/deactivate_test_select_widget.robot
D plone/app/widgets/tests/robot/test_querystring_widget.robot
D plone/app/widgets/tests/robot/test_select_widget.robot
Repository: plone.app.widgets

Branch: refs/heads/master
Date: 2024-10-18T09:05:27+02:00
Author: Peter Mathis (petschki) <petschki@users.noreply.github.com>
Commit: plone/plone.app.widgets@9a6e08b

Merge pull request #225 from plone/deactivate-robot-tests

deactivate robot tests

Files changed:
A news/224.tests
A plone/app/widgets/tests/robot/deactivate_test_querystring_widget.robot
A plone/app/widgets/tests/robot/deactivate_test_select_widget.robot
D plone/app/widgets/tests/robot/test_querystring_widget.robot
D plone/app/widgets/tests/robot/test_select_widget.robot
  • Loading branch information
petschki committed Oct 18, 2024
1 parent 6c6ebcc commit 37e3ea7
Showing 1 changed file with 32 additions and 20 deletions.
52 changes: 32 additions & 20 deletions last_commit.txt
Original file line number Diff line number Diff line change
@@ -1,28 +1,40 @@
Repository: Products.CMFPlone
Repository: plone.app.widgets


Branch: refs/heads/6.0.x
Date: 2024-10-17T09:32:22-07:00
Author: David Glick (davisagli) <david@glicksoftware.com>
Commit: https://github.com/plone/Products.CMFPlone/commit/0daab7cdf869b39aecc8f46dcb682013724da24b
Branch: refs/heads/master
Date: 2024-10-18T09:01:33+02:00
Author: 1letter (1letter) <1letter@gmx.de>
Commit: https://github.com/plone/plone.app.widgets/commit/b3cc037a6e33d7b04f0e5c7df7b8648557ddfded

Backport filter improvements for URL Management control panel (#4032)
deactivate robot tests

* Merge pull request #4009 from Faakhir30/add_date_filters

Added start and end filters in redirectionSet.

* Allow substring matches when filtering aliases in the URL Management control panel

---------

Co-authored-by: Faakhir Zahid &lt;110815427+Faakhir30@users.noreply.github.com&gt;
Files changed:
A news/224.tests
A plone/app/widgets/tests/robot/deactivate_test_querystring_widget.robot
A plone/app/widgets/tests/robot/deactivate_test_select_widget.robot
D plone/app/widgets/tests/robot/test_querystring_widget.robot
D plone/app/widgets/tests/robot/test_select_widget.robot

b'diff --git a/news/224.tests b/news/224.tests\nnew file mode 100644\nindex 00000000..fbab5550\n--- /dev/null\n+++ b/news/224.tests\n@@ -0,0 +1 @@\n+deactivate robot tests in this package and move the tests to Products.CMFPlone @1letter\n\\ No newline at end of file\ndiff --git a/plone/app/widgets/tests/robot/test_querystring_widget.robot b/plone/app/widgets/tests/robot/deactivate_test_querystring_widget.robot\nsimilarity index 100%\nrename from plone/app/widgets/tests/robot/test_querystring_widget.robot\nrename to plone/app/widgets/tests/robot/deactivate_test_querystring_widget.robot\ndiff --git a/plone/app/widgets/tests/robot/test_select_widget.robot b/plone/app/widgets/tests/robot/deactivate_test_select_widget.robot\nsimilarity index 100%\nrename from plone/app/widgets/tests/robot/test_select_widget.robot\nrename to plone/app/widgets/tests/robot/deactivate_test_select_widget.robot\n'

Repository: plone.app.widgets


Branch: refs/heads/master
Date: 2024-10-18T09:05:27+02:00
Author: Peter Mathis (petschki) <petschki@users.noreply.github.com>
Commit: https://github.com/plone/plone.app.widgets/commit/9a6e08b48af097f417e333dc7c87f8d7e58675f1

Merge pull request #225 from plone/deactivate-robot-tests

deactivate robot tests

Files changed:
A news/4009.feature
A news/4031.feature
M Products/CMFPlone/controlpanel/browser/redirects.py
M Products/CMFPlone/controlpanel/tests/test_controlpanel_browser_redirection.py
A news/224.tests
A plone/app/widgets/tests/robot/deactivate_test_querystring_widget.robot
A plone/app/widgets/tests/robot/deactivate_test_select_widget.robot
D plone/app/widgets/tests/robot/test_querystring_widget.robot
D plone/app/widgets/tests/robot/test_select_widget.robot

b'diff --git a/Products/CMFPlone/controlpanel/browser/redirects.py b/Products/CMFPlone/controlpanel/browser/redirects.py\nindex 46b128ca75..25e271028e 100644\n--- a/Products/CMFPlone/controlpanel/browser/redirects.py\n+++ b/Products/CMFPlone/controlpanel/browser/redirects.py\n@@ -1,4 +1,5 @@\n from csv import writer\n+import warnings\n from DateTime import DateTime\n from DateTime.interfaces import DateTimeError\n from io import StringIO\n@@ -163,7 +164,11 @@ def view_url(self):\n \n \n class RedirectionSet:\n- def __init__(self, query="", created="", manual=""):\n+ # Marker so that plone.restapi can detect if this is\n+ # a version that supports the start and end parameters\n+ supports_date_range_filtering = True\n+\n+ def __init__(self, query="", created="", manual="", start="", end=""):\n self.storage = getUtility(IRedirectionStorage)\n \n portal = getSite()\n@@ -171,7 +176,7 @@ def __init__(self, query="", created="", manual=""):\n self.portal_path_len = len(self.portal_path)\n \n # noinspection PyProtectedMember\n- if query:\n+ if query and query.startswith("/"):\n # with query path /Plone/news:\n # min_k is /Plone/news and\n # max_k is /Plone/newt\n@@ -179,6 +184,8 @@ def __init__(self, query="", created="", manual=""):\n min_k = "{:s}/{:s}".format(self.portal_path, query.strip("/"))\n max_k = min_k[:-1] + chr(ord(min_k[-1]) + 1)\n self.data = self.storage._paths.keys(min=min_k, max=max_k, excludemax=True)\n+ elif query:\n+ self.data = [path for path in self.storage._paths.keys() if query in path]\n else:\n self.data = self.storage._paths.keys()\n if manual:\n@@ -190,20 +197,35 @@ def __init__(self, query="", created="", manual=""):\n else:\n manual = ""\n if created:\n+ end = created\n+ warnings.warn(\n+ "The \'created\' parameter is deprecated. Use \'end\' parameter instead.",\n+ DeprecationWarning,\n+ )\n+ if start:\n+ try:\n+ start = DateTime(start)\n+ except DateTimeError:\n+ logger.warning("Failed to parse as DateTime: %s", start)\n+ start = ""\n+ if end:\n try:\n- created = DateTime(created)\n+ end = DateTime(end)\n except DateTimeError:\n- logger.warning("Failed to parse as DateTime: %s", created)\n- created = ""\n- if created or manual != "":\n+ logger.warning("Failed to parse as DateTime: %s", end)\n+ end = ""\n+ if start or end or manual != "":\n chosen = []\n for redirect in self.data:\n info = self.storage.get_full(redirect)\n if manual != "":\n if info[2] != manual:\n continue\n- if created and info[1]:\n- if info[1] >= created:\n+ if start and info[1]:\n+ if info[1] < start:\n+ continue\n+ if end and info[1]:\n+ if info[1] >= end:\n continue\n chosen.append(redirect)\n self.data = chosen\n@@ -256,6 +278,8 @@ def redirects(self):\n RedirectionSet(\n query=self.request.form.get("q", ""),\n created=self.request.form.get("datetime", ""),\n+ start=self.request.form.get("start", ""),\n+ end=self.request.form.get("end", ""),\n manual=self.request.form.get("manual", ""),\n ),\n int(self.request.form.get("b_size", "15")),\n@@ -280,9 +304,17 @@ def __call__(self):\n else:\n query = self.request.form.get("q", "")\n created = self.request.form.get("datetime", "")\n+ start = self.request.form.get("start", "")\n+ end = self.request.form.get("end", "")\n manual = self.request.form.get("manual", "")\n- if created or manual or (query and query != "/"):\n- rset = RedirectionSet(query=query, created=created, manual=manual)\n+ if created or start or end or manual or (query and query != "/"):\n+ rset = RedirectionSet(\n+ query=query,\n+ created=created,\n+ manual=manual,\n+ start=start,\n+ end=end,\n+ )\n redirects = list(rset.data)\n else:\n redirects = []\ndiff --git a/Products/CMFPlone/controlpanel/tests/test_controlpanel_browser_redirection.py b/Products/CMFPlone/controlpanel/tests/test_controlpanel_browser_redirection.py\nindex 3a219f5e57..2ba3fdde99 100644\n--- a/Products/CMFPlone/controlpanel/tests/test_controlpanel_browser_redirection.py\n+++ b/Products/CMFPlone/controlpanel/tests/test_controlpanel_browser_redirection.py\n@@ -241,6 +241,9 @@ def test_redirection_controlpanel_filtering(self):\n # this should return one and not two (we need excludemax=True)\n redirects = RedirectionSet(query="/foo1/777")\n self.assertEqual(len(redirects), 1)\n+ # query without an initial slash matches any substring\n+ redirects = RedirectionSet(query="999")\n+ self.assertEqual(len(redirects), 2)\n \n request = self.layer["request"].clone()\n request.form["q"] = "/foo"\n@@ -336,7 +339,7 @@ def test_redirection_controlpanel_filter_date(self):\n \n redirects = RedirectionSet()\n self.assertEqual(len(redirects), 400)\n- # created can be anything that can be parsed by DateTime.\n+ # created can be anything that can be parsed by DateTime. (deprecated)\n # Otherwise it is ignored.\n self.assertEqual(len(RedirectionSet(created="2019-01-01")), 400)\n self.assertEqual(len(RedirectionSet(created="1999-01-01")), 0)\n@@ -346,38 +349,57 @@ def test_redirection_controlpanel_filter_date(self):\n self.assertEqual(len(RedirectionSet(created="2001-02-01 00:00:00")), 31)\n self.assertEqual(len(RedirectionSet(created="2001-02-01 00:00:01")), 32)\n self.assertEqual(len(RedirectionSet(created="badvalue")), 400)\n+ # start is inclusive and can be anything that can be parsed by DateTime.\n+ # Otherwise it is ignored.\n+ self.assertEqual(len(RedirectionSet(start="2019-01-01")), 0)\n+ self.assertEqual(len(RedirectionSet(start="2001-01-02")), 399)\n+ self.assertEqual(len(RedirectionSet(start="2001-02-01 00:00:00")), 369)\n+ self.assertEqual(len(RedirectionSet(start="2001-02-01 00:00:01")), 368)\n+ self.assertEqual(len(RedirectionSet(start="badvalue")), 400)\n+\n+ # End is exclisive and can be anything that can be parsed by DateTime.\n+ # Otherwise it is ignored.\n+ self.assertEqual(len(RedirectionSet(end="1999-01-01")), 0)\n+ self.assertEqual(len(RedirectionSet(end="2000-01-01")), 0)\n+ self.assertEqual(len(RedirectionSet(end="2001-02-01")), 31)\n+ self.assertEqual(len(RedirectionSet(end="2001-02-01 00:00:00")), 31)\n+ self.assertEqual(len(RedirectionSet(end="2001-02-01 00:00:01")), 32)\n+ self.assertEqual(len(RedirectionSet(end="badvalue")), 400)\n+\n+ self.assertEqual(len(RedirectionSet(start="2001-01-01", end="2001-01-01")), 0)\n+ self.assertEqual(len(RedirectionSet(start="2001-01-01", end="2001-01-02")), 1)\n \n # DateTime(\'2002-01-01\') results in a timezone GMT+0\n- self.assertEqual(len(RedirectionSet(created="2002-01-01")), 365)\n+ self.assertEqual(len(RedirectionSet(end="2002-01-01")), 365)\n # DateTime(\'2002/01/01\') results in a timezone GMT+1 for me,\n # or a different zone depending on where in the world you are.\n # So we need to be lenient in the tests.\n- self.assertGreaterEqual(len(RedirectionSet(created="2002/01/01")), 364)\n- self.assertLessEqual(len(RedirectionSet(created="2002/01/01")), 366)\n+ self.assertGreaterEqual(len(RedirectionSet(end="2002/01/01")), 364)\n+ self.assertLessEqual(len(RedirectionSet(end="2002/01/01")), 366)\n \n request = self.layer["request"].clone()\n- request.form["datetime"] = ""\n+ request.form["start"] = ""\n view = getMultiAdapter(\n (self.layer["portal"], request), name="redirection-controlpanel"\n )\n self.assertEqual(view.redirects().numpages, math.ceil(400 / 15.0))\n \n request = self.layer["request"].clone()\n- request.form["datetime"] = "2001-01-27"\n+ request.form["end"] = "2001-01-27"\n view = getMultiAdapter(\n (self.layer["portal"], request), name="redirection-controlpanel"\n )\n self.assertEqual(view.redirects().numpages, math.ceil(27 / 15.0))\n \n request = self.layer["request"].clone()\n- request.form["datetime"] = "2002-01-01"\n+ request.form["end"] = "2002-01-01"\n view = getMultiAdapter(\n (self.layer["portal"], request), name="redirection-controlpanel"\n )\n self.assertEqual(view.redirects().numpages, math.ceil(365 / 15.0))\n \n request = self.layer["request"].clone()\n- request.form["datetime"] = "2019-01-01"\n+ request.form["end"] = "2019-01-01"\n view = getMultiAdapter(\n (self.layer["portal"], request), name="redirection-controlpanel"\n )\ndiff --git a/news/4009.feature b/news/4009.feature\nnew file mode 100644\nindex 0000000000..1a58fdb77f\n--- /dev/null\n+++ b/news/4009.feature\n@@ -0,0 +1 @@\n+Redirection control panel: Added support for start and end filters. @Faakhir30\ndiff --git a/news/4031.feature b/news/4031.feature\nnew file mode 100644\nindex 0000000000..767054e50c\n--- /dev/null\n+++ b/news/4031.feature\n@@ -0,0 +1 @@\n+URL Management control panel: Find substring matches when querying aliases. @davisagli\n'
b'diff --git a/news/224.tests b/news/224.tests\nnew file mode 100644\nindex 00000000..fbab5550\n--- /dev/null\n+++ b/news/224.tests\n@@ -0,0 +1 @@\n+deactivate robot tests in this package and move the tests to Products.CMFPlone @1letter\n\\ No newline at end of file\ndiff --git a/plone/app/widgets/tests/robot/test_querystring_widget.robot b/plone/app/widgets/tests/robot/deactivate_test_querystring_widget.robot\nsimilarity index 100%\nrename from plone/app/widgets/tests/robot/test_querystring_widget.robot\nrename to plone/app/widgets/tests/robot/deactivate_test_querystring_widget.robot\ndiff --git a/plone/app/widgets/tests/robot/test_select_widget.robot b/plone/app/widgets/tests/robot/deactivate_test_select_widget.robot\nsimilarity index 100%\nrename from plone/app/widgets/tests/robot/test_select_widget.robot\nrename to plone/app/widgets/tests/robot/deactivate_test_select_widget.robot\n'

0 comments on commit 37e3ea7

Please sign in to comment.