annotate roundup/cgi/PageTemplates/PathIterator.py @ 8566:e4191aa7b402 default tip

doc: issue2551415 correct doc for change input->input_payload in 2.5 the rest interface changed a variable name from input to input_payload. An earlier commit changed the rest docs. This commit adds an item for it to the upgrading 2.4.0->2.5.0 section. Also cross reference added to the rest docs with the updated examples.
author John Rouillard <rouilj@ieee.org>
date Thu, 09 Apr 2026 00:19:06 -0400
parents 99667a0cbd2d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1049
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1 ##############################################################################
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
2 #
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
3 # Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
2349
b43efe461b3e update PageTemplates to latest Zope codebase
Richard Jones <richard@users.sourceforge.net>
parents: 2005
diff changeset
4 #
1049
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
5 # This software is subject to the provisions of the Zope Public License,
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
6 # Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
10 # FOR A PARTICULAR PURPOSE
2349
b43efe461b3e update PageTemplates to latest Zope codebase
Richard Jones <richard@users.sourceforge.net>
parents: 2005
diff changeset
11 #
1049
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
12 ##############################################################################
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
13
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
14 """Path Iterator
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
15
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
16 A TALES Iterator with the ability to use first() and last() on
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
17 subpaths of elements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
18 """
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
19
5388
d26921b851c3 Python 3 preparation: make relative imports explicit.
Joseph Myers <jsm@polyomino.org.uk>
parents: 4570
diff changeset
20 from . import TALES
d26921b851c3 Python 3 preparation: make relative imports explicit.
Joseph Myers <jsm@polyomino.org.uk>
parents: 4570
diff changeset
21 from .Expressions import restrictedTraverse, Undefs, getSecurityManager
1049
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
22
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
23 class Iterator(TALES.Iterator):
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
24 def __bobo_traverse__(self, REQUEST, name):
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
25 if name in ('first', 'last'):
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
26 path = REQUEST['TraversalRequestNameStack']
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
27 names = list(path)
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
28 names.reverse()
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
29 path[:] = [tuple(names)]
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
30 return getattr(self, name)
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
31
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
32 def same_part(self, name, ob1, ob2):
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
33 if name is None:
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
34 return ob1 == ob2
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
35 if isinstance(name, type('')):
2349
b43efe461b3e update PageTemplates to latest Zope codebase
Richard Jones <richard@users.sourceforge.net>
parents: 2005
diff changeset
36 name = name.split('/')
5398
99667a0cbd2d Python 3 preparation: use list() around filter() as needed.
Joseph Myers <jsm@polyomino.org.uk>
parents: 5388
diff changeset
37 name = list(filter(None, name))
1049
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
38 securityManager = getSecurityManager()
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
39 try:
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
40 ob1 = restrictedTraverse(ob1, name, securityManager)
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
41 ob2 = restrictedTraverse(ob2, name, securityManager)
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
42 except Undefs:
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
43 return 0
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
44 return ob1 == ob2

Roundup Issue Tracker: http://roundup-tracker.org/