collective.tiles.carousel 1.0.3__tar.gz → 1.0.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/CHANGES.rst +10 -0
  2. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/PKG-INFO +33 -2
  3. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/setup.py +1 -1
  4. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/carousel/__init__.py +1 -0
  5. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/carousel/tests/test_setup.py +1 -0
  6. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/carousel/tile.py +10 -37
  7. collective_tiles_carousel-1.0.4/src/collective/tiles/carousel/utils.py +22 -0
  8. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective.tiles.carousel.egg-info/PKG-INFO +33 -2
  9. collective.tiles.carousel-1.0.3/src/collective/tiles/carousel/utils.py +0 -36
  10. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/CONTRIBUTORS.rst +0 -0
  11. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/DEVELOP.rst +0 -0
  12. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/LICENSE.GPL +0 -0
  13. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/LICENSE.rst +0 -0
  14. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/README.rst +0 -0
  15. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/constraints.txt +0 -0
  16. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/docs/conf.py +0 -0
  17. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/docs/index.rst +0 -0
  18. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/requirements.txt +0 -0
  19. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/setup.cfg +0 -0
  20. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/__init__.py +0 -0
  21. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/__init__.py +0 -0
  22. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/carousel/configure.zcml +0 -0
  23. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/carousel/interfaces.py +0 -0
  24. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/carousel/locales/README.rst +0 -0
  25. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/carousel/locales/__init__.py +0 -0
  26. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/carousel/locales/collective.tiles.carousel.pot +0 -0
  27. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/carousel/locales/en/LC_MESSAGES/collective.tiles.carousel.mo +0 -0
  28. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/carousel/locales/en/LC_MESSAGES/collective.tiles.carousel.po +0 -0
  29. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/carousel/locales/update.py +0 -0
  30. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/carousel/locales/update.sh +0 -0
  31. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/carousel/profiles/default/browserlayer.xml +0 -0
  32. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/carousel/profiles/default/metadata.xml +0 -0
  33. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/carousel/profiles/default/registry/mosaic.xml +0 -0
  34. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/carousel/profiles/uninstall/browserlayer.xml +0 -0
  35. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/carousel/setuphandlers.py +0 -0
  36. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/carousel/slides/__init__.py +0 -0
  37. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/carousel/slides/configure.zcml +0 -0
  38. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/carousel/slides/slide_full_view.pt +0 -0
  39. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/carousel/slides/slide_full_view.py +0 -0
  40. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/carousel/slides/slide_view.pt +0 -0
  41. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/carousel/slides/slide_view.py +0 -0
  42. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/carousel/slides/static/.gitkeep +0 -0
  43. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/carousel/testing.py +0 -0
  44. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/carousel/tests/__init__.py +0 -0
  45. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/carousel/tests/robot/test_example.robot +0 -0
  46. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/carousel/tests/test_robot.py +0 -0
  47. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective/tiles/carousel/tile.pt +0 -0
  48. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective.tiles.carousel.egg-info/SOURCES.txt +0 -0
  49. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective.tiles.carousel.egg-info/dependency_links.txt +0 -0
  50. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective.tiles.carousel.egg-info/entry_points.txt +0 -0
  51. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective.tiles.carousel.egg-info/namespace_packages.txt +0 -0
  52. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective.tiles.carousel.egg-info/not-zip-safe +0 -0
  53. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective.tiles.carousel.egg-info/requires.txt +0 -0
  54. {collective.tiles.carousel-1.0.3 → collective_tiles_carousel-1.0.4}/src/collective.tiles.carousel.egg-info/top_level.txt +0 -0
@@ -2,6 +2,16 @@ Changelog
2
2
  =========
3
3
 
4
4
 
5
+ 1.0.4 (2024-05-02)
6
+ ------------------
7
+
8
+ - Fix ``limit``.
9
+ [petschki]
10
+
11
+ - code cleanup.
12
+ [petschki]
13
+
14
+
5
15
  1.0.3 (2023-11-03)
6
16
  ------------------
7
17
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: collective.tiles.carousel
3
- Version: 1.0.3
3
+ Version: 1.0.4
4
4
  Summary: Slider for plone.app.mosaic based on Bootstrap 5
5
5
  Home-page: https://github.com/collective/collective.tiles.carousel
6
6
  Author: Peter Holzer
@@ -23,9 +23,30 @@ Classifier: Programming Language :: Python :: 3.11
23
23
  Classifier: Operating System :: OS Independent
24
24
  Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2)
25
25
  Requires-Python: >=3.8
26
- Provides-Extra: test
27
26
  License-File: LICENSE.GPL
28
27
  License-File: LICENSE.rst
28
+ Requires-Dist: setuptools
29
+ Requires-Dist: Products.GenericSetup
30
+ Requires-Dist: plone.app.contenttypes
31
+ Requires-Dist: plone.app.querystring
32
+ Requires-Dist: plone.app.mosaic
33
+ Requires-Dist: plone.app.tiles
34
+ Requires-Dist: plone.app.z3cform
35
+ Requires-Dist: plone.autoform
36
+ Requires-Dist: plone.base
37
+ Requires-Dist: plone.dexterity
38
+ Requires-Dist: plone.memoize
39
+ Requires-Dist: plone.supermodel
40
+ Requires-Dist: plone.tiles
41
+ Requires-Dist: plone.api
42
+ Requires-Dist: z3c.relationfield
43
+ Provides-Extra: test
44
+ Requires-Dist: plone.app.dexterity; extra == "test"
45
+ Requires-Dist: plone.app.testing; extra == "test"
46
+ Requires-Dist: plone.browserlayer; extra == "test"
47
+ Requires-Dist: plone.testing; extra == "test"
48
+ Requires-Dist: plone.app.robotframework[debug]; extra == "test"
49
+ Requires-Dist: robotsuite; extra == "test"
29
50
 
30
51
  .. This README is meant for consumption by humans and pypi. Pypi can render rst files so please do not use Sphinx features.
31
52
  If you want to learn more about writing documentation, please check out: http://docs.plone.org/about/documentation_styleguide.html
@@ -87,6 +108,16 @@ Changelog
87
108
  =========
88
109
 
89
110
 
111
+ 1.0.4 (2024-05-02)
112
+ ------------------
113
+
114
+ - Fix ``limit``.
115
+ [petschki]
116
+
117
+ - code cleanup.
118
+ [petschki]
119
+
120
+
90
121
  1.0.3 (2023-11-03)
91
122
  ------------------
92
123
 
@@ -15,7 +15,7 @@ long_description = "\n\n".join(
15
15
 
16
16
  setup(
17
17
  name="collective.tiles.carousel",
18
- version="1.0.3",
18
+ version="1.0.4",
19
19
  description="Slider for plone.app.mosaic based on Bootstrap 5",
20
20
  long_description=long_description,
21
21
  # Get more from https://pypi.org/classifiers/
@@ -1,4 +1,5 @@
1
1
  """Init and utils."""
2
+
2
3
  from zope.i18nmessageid import MessageFactory
3
4
 
4
5
 
@@ -1,4 +1,5 @@
1
1
  """Setup tests for this package."""
2
+
2
3
  from collective.tiles.carousel.testing import (
3
4
  COLLECTIVE_TILES_CAROUSEL_INTEGRATION_TESTING,
4
5
  )
@@ -7,8 +7,6 @@ from plone import api
7
7
  from plone.app.contenttypes.browser.link_redirect_view import NON_RESOLVABLE_URL_SCHEMES
8
8
  from plone.app.contenttypes.interfaces import ICollection
9
9
  from plone.app.contenttypes.utils import replace_link_variables_by_paths
10
- from plone.app.querystring import queryparser
11
- from plone.app.querystring.interfaces import IParsedQueryIndexModifier
12
10
  from plone.app.z3cform.widgets.querystring import QueryStringFieldWidget
13
11
  from plone.app.z3cform.widgets.relateditems import RelatedItemsFieldWidget
14
12
  from plone.autoform import directives as form
@@ -22,7 +20,6 @@ from z3c.relationfield.schema import RelationChoice
22
20
  from z3c.relationfield.schema import RelationList
23
21
  from zope import schema
24
22
  from zope.component import getMultiAdapter
25
- from zope.component import getUtilitiesFor
26
23
  from zope.component import getUtility
27
24
  from zope.interface import alsoProvides
28
25
  from zope.interface import implementer
@@ -248,37 +245,10 @@ class SliderTile(Tile):
248
245
  values.append(name)
249
246
  return values
250
247
 
251
- def parse_query_from_data(data, context=None):
252
- """Parse query from data dictionary"""
253
- if context is None:
254
- context = api.portal.get()
255
- query = data.get("query", {}) or {}
256
- try:
257
- parsed = queryparser.parseFormquery(context, query)
258
- except KeyError:
259
- parsed = {}
260
-
261
- index_modifiers = getUtilitiesFor(IParsedQueryIndexModifier)
262
- for name, modifier in index_modifiers:
263
- if name in parsed:
264
- new_name, query = modifier(parsed[name])
265
- parsed[name] = query
266
- # if a new index name has been returned, we need to replace
267
- # the native ones
268
- if name != new_name:
269
- del parsed[name]
270
- parsed[new_name] = query
271
-
272
- if data.get("sort_on"):
273
- parsed["sort_on"] = data["sort_on"]
274
- if data.get("sort_reversed", False):
275
- parsed["sort_order"] = "reverse"
276
- return parsed
277
-
278
248
  @property
279
249
  def items(self):
280
250
  items = OrderedDict()
281
- if "carousel_items" in self.data:
251
+ if len(self.data.get("carousel_items") or []):
282
252
  for item in self.data["carousel_items"]:
283
253
  if ICollection.providedBy(item.to_object):
284
254
  items.update(
@@ -309,16 +279,19 @@ class SliderTile(Tile):
309
279
  else:
310
280
  items[item.to_object] = None
311
281
 
312
- if getattr(self, "query", None):
282
+ query = self.query
283
+ if query:
313
284
  items.update(
314
- OrderedDict.fromkeys(
315
- [x.getObject() for x in api.content.find(**self.query)]
316
- )
285
+ OrderedDict.fromkeys([x.getObject() for x in self.catalog(**query)])
317
286
  )
287
+
318
288
  result = []
319
- for obj in items.keys():
289
+ limit = self.data.get("limit") or 12
290
+ for count, obj in enumerate(items.keys(), 1):
320
291
  result.append(obj)
321
- ips = self.data.get("items_per_slide", 1)
292
+ if count >= limit:
293
+ break
294
+ ips = self.data.get("items_per_slide", 1) or 1
322
295
  slides = [
323
296
  result[i : i + ips]
324
297
  for i in [x * ips for x in range(0, int(len(result) / ips) + int(1))]
@@ -0,0 +1,22 @@
1
+ """Utilities."""
2
+
3
+ from plone import api
4
+ from plone.app.querystring import queryparser
5
+
6
+
7
+ def parse_query_from_data(data, context=None):
8
+ """Parse query from data dictionary"""
9
+ if context is None:
10
+ context = api.portal.get()
11
+ query = data.get("query", {}) or {}
12
+ try:
13
+ parsed = queryparser.parseAndModifyFormquery(
14
+ context,
15
+ query,
16
+ data.get("sort_on"),
17
+ "desc" if data.get("sort_reversed", False) else "asc",
18
+ )
19
+ except KeyError:
20
+ parsed = {}
21
+
22
+ return parsed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: collective.tiles.carousel
3
- Version: 1.0.3
3
+ Version: 1.0.4
4
4
  Summary: Slider for plone.app.mosaic based on Bootstrap 5
5
5
  Home-page: https://github.com/collective/collective.tiles.carousel
6
6
  Author: Peter Holzer
@@ -23,9 +23,30 @@ Classifier: Programming Language :: Python :: 3.11
23
23
  Classifier: Operating System :: OS Independent
24
24
  Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2)
25
25
  Requires-Python: >=3.8
26
- Provides-Extra: test
27
26
  License-File: LICENSE.GPL
28
27
  License-File: LICENSE.rst
28
+ Requires-Dist: setuptools
29
+ Requires-Dist: Products.GenericSetup
30
+ Requires-Dist: plone.app.contenttypes
31
+ Requires-Dist: plone.app.querystring
32
+ Requires-Dist: plone.app.mosaic
33
+ Requires-Dist: plone.app.tiles
34
+ Requires-Dist: plone.app.z3cform
35
+ Requires-Dist: plone.autoform
36
+ Requires-Dist: plone.base
37
+ Requires-Dist: plone.dexterity
38
+ Requires-Dist: plone.memoize
39
+ Requires-Dist: plone.supermodel
40
+ Requires-Dist: plone.tiles
41
+ Requires-Dist: plone.api
42
+ Requires-Dist: z3c.relationfield
43
+ Provides-Extra: test
44
+ Requires-Dist: plone.app.dexterity; extra == "test"
45
+ Requires-Dist: plone.app.testing; extra == "test"
46
+ Requires-Dist: plone.browserlayer; extra == "test"
47
+ Requires-Dist: plone.testing; extra == "test"
48
+ Requires-Dist: plone.app.robotframework[debug]; extra == "test"
49
+ Requires-Dist: robotsuite; extra == "test"
29
50
 
30
51
  .. This README is meant for consumption by humans and pypi. Pypi can render rst files so please do not use Sphinx features.
31
52
  If you want to learn more about writing documentation, please check out: http://docs.plone.org/about/documentation_styleguide.html
@@ -87,6 +108,16 @@ Changelog
87
108
  =========
88
109
 
89
110
 
111
+ 1.0.4 (2024-05-02)
112
+ ------------------
113
+
114
+ - Fix ``limit``.
115
+ [petschki]
116
+
117
+ - code cleanup.
118
+ [petschki]
119
+
120
+
90
121
  1.0.3 (2023-11-03)
91
122
  ------------------
92
123
 
@@ -1,36 +0,0 @@
1
- """Utilities."""
2
-
3
- from plone import api
4
- from plone.app.querystring import queryparser
5
- from plone.app.querystring.interfaces import IParsedQueryIndexModifier
6
- from zope.component import getUtilitiesFor
7
-
8
-
9
- def parse_query_from_data(data, context=None):
10
- """Parse query from data dictionary"""
11
- if context is None:
12
- context = api.portal.get()
13
- query = data.get("query", {}) or {}
14
- try:
15
- parsed = queryparser.parseFormquery(context, query)
16
- except KeyError:
17
- parsed = {}
18
-
19
- index_modifiers = getUtilitiesFor(IParsedQueryIndexModifier)
20
- for name, modifier in index_modifiers:
21
- if name in parsed:
22
- new_name, query = modifier(parsed[name])
23
- parsed[name] = query
24
- # if a new index name has been returned, we need to replace
25
- # the native ones
26
- if name != new_name:
27
- del parsed[name]
28
- parsed[new_name] = query
29
-
30
- if data.get("sort_on"):
31
- parsed["sort_on"] = data["sort_on"]
32
- if data.get("limit"):
33
- parsed["sort_limit"] = data["limit"]
34
- if data.get("sort_reversed", False):
35
- parsed["sort_order"] = "reverse"
36
- return parsed