From d58e3c06e4ad688b63af7f85ec971401fc9f047d Mon Sep 17 00:00:00 2001 From: dieter Date: Fri, 9 Oct 2020 16:18:09 +0200 Subject: [PATCH] Fix #913 --- CHANGES.rst | 3 +++ src/Products/PageTemplates/engine.py | 3 +-- src/Products/PageTemplates/tests/input/RepeatVariable.html | 1 + src/Products/PageTemplates/tests/output/RepeatVariable.html | 5 +++++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 61b791d074..12e5c2f39f 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -10,6 +10,9 @@ https://zope.readthedocs.io/en/2.13/CHANGES.html 4.5.2 (unreleased) ------------------ +- Fix ``length`` for page template repeat variables + (`#913 `_) + - Restore the ZMI `Debug Information` control panel page (`#898 `_) diff --git a/src/Products/PageTemplates/engine.py b/src/Products/PageTemplates/engine.py index 5e9cee3be3..797ee26271 100644 --- a/src/Products/PageTemplates/engine.py +++ b/src/Products/PageTemplates/engine.py @@ -78,10 +78,9 @@ def __call__(self, key, iterable): iterable = list(iterable) if iterable is not None else () length = len(iterable) - iterator = iter(iterable) # Insert as repeat item - ri = self[key] = RepeatItem(None, iterator, _PseudoContext) + ri = self[key] = RepeatItem(None, iterable, _PseudoContext) return ri, length diff --git a/src/Products/PageTemplates/tests/input/RepeatVariable.html b/src/Products/PageTemplates/tests/input/RepeatVariable.html index 799a9b5487..5af115400a 100644 --- a/src/Products/PageTemplates/tests/input/RepeatVariable.html +++ b/src/Products/PageTemplates/tests/input/RepeatVariable.html @@ -13,6 +13,7 @@
  • +
  • diff --git a/src/Products/PageTemplates/tests/output/RepeatVariable.html b/src/Products/PageTemplates/tests/output/RepeatVariable.html index 4ec77bf5aa..eee57b5441 100644 --- a/src/Products/PageTemplates/tests/output/RepeatVariable.html +++ b/src/Products/PageTemplates/tests/output/RepeatVariable.html @@ -13,6 +13,7 @@
  • Roman: I
  • start: True
  • end: False
  • +
  • length: 5
  • index: 1
  • number: 2
  • @@ -25,6 +26,7 @@
  • Roman: II
  • start: False
  • end: False
  • +
  • length: 5
  • index: 2
  • number: 3
  • @@ -37,6 +39,7 @@
  • Roman: III
  • start: False
  • end: False
  • +
  • length: 5
  • index: 3
  • number: 4
  • @@ -49,6 +52,7 @@
  • Roman: IV
  • start: False
  • end: False
  • +
  • length: 5
  • index: 4
  • number: 5
  • @@ -61,6 +65,7 @@
  • Roman: V
  • start: False
  • end: True
  • +
  • length: 5