[Zope] Questions re: REQUEST, external methods; newbie
stupidity at play
Dylan Reinhardt
zope@dylanreinhardt.com
15 Jul 2003 16:21:09 -0700
Here's what you're trying to do:
<dtml-call "REQUEST.set('some_var', some_function())">
<dtml-call "REQUEST.set('some_var', some_other_function(some_var))">
That's not going to work. Unlike Python, DTML doesn't seem to like
using a variable in an expression whose output is stored in the same
variable. Maybe somebody smarter could offer an explanation why not.
Anyway... what you want to do is:
<dtml-call "REQUEST.set('some_var', some_function())">
<dtml-call "REQUEST.set('some_temp', some_var)">
<dtml-call "REQUEST.set('some_var', some_other_function(some_temp))">
Sad but true... unless there's a better workaround I don't know about.
HTH,
Dylan
On Tue, 2003-07-15 at 12:35, zoper@disturbance.dhs.org wrote:
> Greetings:
>
> I realize I am likely doing stuff in the cruftiest way possible: Rather
> than flame if you have the urge, a link to specifics on better ways to do
> what I am doing would be appreciated.
>
> I have a set of external methods that do some stuff to create and build an
> XML document. I am also doing a lot of logic in DTML and passing stuff
> back and forth to these external methods. A great simplification of what I
> am doing:
>
> ----------------------
> <dtml-call expr="REQUEST.set('myxmldoc',createxmldoc())">
> <!-- createxmldoc is an external method that creates a (minidom)
> Document() and adds a root node. They are returned as a tuple, i.e.
> myxmldoc[0] will be the xml doc object and myxmldoc[1] will be the node-->
>
> <!-- dtml logic that gets some info from a database -->
>
> <dtml-call
> expr="REQUEST.set('myxmldoc',addanode(myxmldoc[0],myxmldoc[1],databasevar)">
> <!-- in the line above, databasevar is some info from my DB, and addanode
> is an external method... -->
> ----------------------
>
> The problem is, that when I do this, re-using the myxmldoc var causes a
> __getitem__ attribute error. I have to use a new name, i.e. modxmldoc, to
> get around the error.
>
> OK, I thought, fine, so long as I can kill the original myxmldoc object,
> as I have many iterations of this and I do not want to end up with a huge
> amount of objects in memory, getting larger and larger. However, I can't
> figure out how to 'unset' myxmldoc - setting it to '' doesn't work, I get
> a string index out of range error. If I specifically set myxmldoc[0] and
> myxmldoc[1] to '', that works, but I still get the __getitem__ error when
> I attempt to re-use the variable.
>
> Suggestions?
>
> TIA, Bryan
>
>
>
> _______________________________________________
> Zope maillist - Zope@zope.org
> http://mail.zope.org/mailman/listinfo/zope
> ** No cross posts or HTML encoding! **
> (Related lists -
> http://mail.zope.org/mailman/listinfo/zope-announce
> http://mail.zope.org/mailman/listinfo/zope-dev )