[Zope] Equality test: if sequence-item = document id [excessive recursion error]

Garry Steedman gs@styrax.com
Sat, 2 Jun 2001 13:43:20 +0000


Tim,

thanks for the reply: i should have made myself clearer the first 
time round: at first i thought it was just an issue of stringifying 
things in order to compare them, but, once this is taken care of (as 
i suspect it is now) this fscking recursion error takes over. which, 
IINM means its a namespace problem.

one of the things which puzzles me is that when i use objectIds() (as 
opposed to objectValues()), the recursion problem goes away, but i 
can't call the title variable without getting an authentication 
dialogue (which doesn't accept the admin pwd!) - now, i can get round 
this by using the title_or_id variable, but this renders as the 
title_or_id of the *current* document times the number of documents 
in the list (instead of the title_or_id of each document)! this, 
again, IINM, suggests a namespace problem.

i guess i must be missing something fairly obvious because i can't 
believe i'm trying to do something particularly strange :(

Folder_X					[Folder]
		standard_x_header	[DTML Method]
		nav_stuff_l1		[DTML Method]
		nav_stuff_l2		[DTML Method]

		Folder_Y			[Folder]
				doc_1		[DTML Document]
				doc_2		[DTML Document]

standard_x_header includes
<dtml-var nav_stuff_l1>
<dtml-var nav_stuff_l2>

<nav_stuff_l1> is this:

<dtml-comment>
This method builds the 1st-level site navigation. It iterates through 
Folder objects below the site root, sorts them by the property 
"menu_sort_order" (which is an integer value starting at 0) and 
renders the Folder title (this is important because we can't put 
accents in the id) only if this property is present. The inside loop 
tests whether the current folder is in the list of folders and
if it is it wraps square brackets around the title to highlight our 
current position.
</dtml-comment>

<DIV CLASS=navigation VALIGN="top">
<dtml-in "Folder_X.objectValues('Folder')" sort=menu_sort_order>
<dtml-if "hasProperty('menu_sort_order')">
<dtml-if "this()==PARENTS[0]">
&nbsp;&nbsp;<a href="&dtml-absolute_url;">[<dtml-var title>]</a>
<dtml-else>
&nbsp;&nbsp;<a href="&dtml-absolute_url;"><dtml-var title></a>
</dtml-if>
<dtml-else>
</dtml-if>
</dtml-in>
</DIV>

<nav_stuff_l2> is this:

<dtml-comment>
This method builds the 2nd-level site navigation. It grabs the Folder 
of the current DTML Document [index_html] and iterates through the 
DTML Document objects inside it, rendering the document titles 
(because of accents, we don't want to render the document id) sorted 
by the menu_sort_order property. The inside loop tests the current 
document id against the list of document ids in the folder and wraps 
square brackets around the title to highlight the current document.
</dtml-comment>

<DIV CLASS=navigation VALIGN="top">
<dtml-let this_id=id>
<dtml-in "PARENTS[0].objectValues('DTML Document')" 
sort=menu_sort_order>
<dtml-if "hasProperty('menu_sort_order')">
<dtml-if expr="_['sequence-item'].getId()==this_id">
&nbsp;&nbsp;<a href="&dtml-absolute_url;">[<dtml-var title>]</a>
<dtml-else>
</dtml-if>
&nbsp;&nbsp;<a href="&dtml-absolute_url;"><dtml-var title></a>
<dtml-else>
</dtml-if>
</dtml-in>
</dtml-let>
</DIV>

NB: <dtml-if expr="_['sequence-item'].getId()==this_id">
                                      ^^^^^^^
added as per Michel Pelletier's suggestion.

where the excessive recursion comes from i have no idea! :(

cheers,

Garry




On 1 Jun 2001, at 13:53, Tim Cook wrote:

From:           	Tim Cook <twcook@iswt.com>
Send reply to:  	tim@freepm.org
Organization:   	Free Practice Management, Inc.
To:             	gs@styrax.com
Copies to:      	zope@zope.org
Subject:        	Re: [Zope] Equality test: if sequence-item = document id [excessive 
	recursion error]
Date sent:      	Fri, 01 Jun 2001 13:53:05 -0500

> Garry Steedman wrote:
> 
> > btw: am i completely stupid to think that the dtml-let will assign
> > the id of the dtml method which contains it ( e.g. this_id =
> > nav_stuff.id )?
> > 
> 
> I'm not sure I understood 'what' you were attempting to
> accomplish so my example may be way off base.
> 
> I may have ass-u-me d what you meant? :-(
> 
> I'll try to take a look at it later when I have some time, if you do
> not get a fix before then.
> 
> -- 
> Tim Cook, President - FreePM,Inc. 
> http://www.FreePM.com Office: (731) 884-4126
> ONLINE DEMO: http://www.freepm.org:8080/FreePM
> 
> _______________________________________________
> Zope maillist  -  Zope@zope.org
> http://lists.zope.org/mailman/listinfo/zope
> **   No cross posts or HTML encoding!  **
> (Related lists - 
>  http://lists.zope.org/mailman/listinfo/zope-announce
>  http://lists.zope.org/mailman/listinfo/zope-dev )


+-------------------------------------------+
  Garry Steedman      mailto:gs@styrax.com  
  Styrax Associates  http://www.styrax.com/ 

  "The Good Man has no shape."            
+-------------------------------------------+