[Zope] Special-name of variables called 'name' or 'domain'
Mayers, Philip J
p.mayers@ic.ac.uk
Tue, 9 Jan 2001 21:15:10 -0000
I've got some SQL method, and a folder structure, and am seeing some *very*
annoying results. Namely, <dtml-with> seems to cancel out variable
assignments from an enclosing <dtml-in>
/root
get_machine_hosts (SQL method)
get_host_aliases (SQL method)
show (dtml method)
/host
show (dtml method)
/alias
show (dtml method)
get_machine_hosts takes 'machineid' and returns 'name','domain','ip', e.g.
(for a 5-homed box) get_machine_hosts('535252'):
www,random.com,192.168.3.2
mail,hosting.com,192.168.3.3
news,random.com,192.168.3.4
sqldb,random.com,192.168.3.5
workstation,random.com,192.168.3.6
get_host_aliases takes 'ip' and returns 'name','domain' e.g.
get_host_aliases('192.168.3.3') [mail.random.com]:
'pop3','random.com'
'smtp','random.com'
'mail','random.com'
'imap','random.com'
But, I'm having problems with the 'in' and 'with' tags using the variable
'name'. The DTML methods are:
/root/show
<dtml-in get_machine_hosts>
<dtml-with host><dtml-var show></dtml-with>
</dtml-in>
/root/host/show
<TR>
<TD>&dtml-ip;</TD>
<TD>&dtml-name;</TD>
<TD>&dtml-domain;</TD>
</TR>
<dtml-in get_host_aliases>
<dtml-comment>POINT A</dtml-with>
<dtml-with alias>
<dtml-comment>POINT B</dtml-with>
<dtml-var show>
</dtml-with>
</dtml-in>
/root/alias/show
<TR>
<TD></TD>
<TD>&dtml-name;</TD>
<TD>&dtml-domain;</TD>
</TR>
Now, assuming I'm looking at machineid 535252 (mail.random.com). I get this:
| 192.168.3.3 | mail | hosting.com |
| | mail | hosting.com |
| | mail | hosting.com |
| | mail | hosting.com |
| | mail | hosting.com |
That is, the variable 'name' and 'domain' aren't set correctly. But, if I
modify /root/host/show as follows:
<TR>
<TD>&dtml-ip;</TD>
<TD>&dtml-name;</TD>
<TD>&dtml-domain;</TD>
</TR>
<dtml-in get_host_aliases>
<dtml-comment>POINT A</dtml-with>
<TR>
<TD></TD>
<TD>&dtml-name;</TD>
<TD>&dtml-name;</TD>
</TR>
<dtml-with alias>
<dtml-comment>POINT B</dtml-with>
<dtml-var show>
</dtml-with>
</dtml-in>
I get:
| 192.168.3.3 | mail | hosting.com |
| | pop3 | random.com |
| | mail | hosting.com |
| | imap | random.com |
| | mail | hosting.com |
| | smtp | random.com |
| | mail | hosting.com |
| | webmail | random.com |
| | mail | hosting.com |
It would appear that the <dtml-with alias> tag wipes out the 'name' and
'domain' variables back to the values they had outside the <dtml-in
get_host_aliases> tag, so calling /root/alias/show gives wrong data. Very
odd. *BUT*, if I use 'aliasname' and 'aliasdomain' as the variable names,
everything is OK.
WTF?
While I'm at it, is <dtml-with foldername><dtml-var dtmlmethod></dtml-with>
really the best way to call a DTML method of a folder?
Regard,
Phil