[Twisted-Python] woven nested lists
Donovan Preston
dp at twistedmatrix.com
Wed Dec 18 11:36:20 EST 2002
On Wednesday, December 18, 2002, at 06:26 AM, Glyph Lefkowitz wrote:
>
> As it happens, I discovered a woven bug in the process :-). The code
> here has
> 2 embedded templates ('template' and 'brokenTemplate'), one of which
> works with
> CVS as of a few days ago and one of which works with CVS as of a few
> minutes
> ago. You can see my commit message about that if you're interested in
> the
> details:
>
> http://www.twistedmatrix.com/pipermail/twisted-commits/2002-December/
> 005021.html
This bug stems from the fact that the List widget used to call getNode
itself, thus finding only the first node below it's template node.
getPattern will find all the pattern nodes below the widget's template
node. The noNesting fix is a great solution, and hopefully will be
enough of a fix.
Regarding the comment about anonymous lists: The outer list in this
case is available using the name "mytable". So the template could be as
so:
<table model="mytable" view="List">
<tr listItemOf="mytable" view="List">
<td pattern="listItem" view="Text">
</td>
</tr>
</table>
It's only the inner lists that are truly anonymous, because as the List
widget is iterating the outer list, it sets the model attribute of the
pattern nodes to model="0" model="1" model="2" etc. My first thought is
to allow this type of syntax:
<table model="mytable" view="List">
<tr listItemOf="mytable" view="List">
<td listItemOf="." view="Text">
</td>
</tr>
</table>
Which would mean "the inner node is a pattern node with the name of the
model on top of the model stack", but I'm not sure what that buys us
over the current noNesting fix (which certainly is the way things
should have worked, and is the way the code worked before the
introduction of getPattern)
By the way, there is a test of nested lists in test_woven.py. It just
counts the number of copied nodes, however, and should probably be
updated to check that the *correct* nodes were copied.
Thanks Glyph
Donovan
More information about the Twisted-Python
mailing list