[Zope] AUTHENTICATED_USER and external methods

Tony McDonald tony.mcdonald@ncl.ac.uk
Mon, 13 Sep 1999 08:44:59 +0100


Hi,
I've got an external method that creates an HTML page from a large 
number of SQL queries. I call it like so;
<a href="supercascade?tag_id=11>Overview of Module</a>.

I want to have the benefits of standard_html_header and 
standard_html_footer in my documents too, so I've got this in the 
code...

         template_str = self.standard_html_header.read_raw()
         template = DocumentTemplate.HTML(template_str)
         html = template(self)

... lots of wondrous stuff with databases that add to 'html'

         template_str = self.standard_html_footer.read_raw()
         template = DocumentTemplate.HTML(template_str)
         return html + template(self)

Now this works ok - standard_html_header can *get at* dtml variables 
in it, such as 'title' and 'id'. Problems arise if I want to get to 
AUTHENTICATED_USER, as adding this
User:<dtml-var "AUTHENTICATED_USER.getUserName()">

Results in the header *being rendered* with the correct user, but the 
page gives
<!--
  Error type:  NameError
  Error value: AUTHENTICATED_USER
  -->
with the following traceback...
<!--
Traceback (innermost last):
   File 
/home/nnle/Zope-2.0.0-solaris-2.6-sparc/lib/python/ZPublisher/Publish. 
py, line 214, in publish_module
   File 
/home/nnle/Zope-2.0.0-solaris-2.6-sparc/lib/python/ZPublisher/Publish. 
py, line 179, in publish
   File 
/home/nnle/Zope-2.0.0-solaris-2.6-sparc/lib/python/Zope/__init__.py, 
line 201, in zpublisher_exception_hook
     (Object: ElementWithAttributes)
   File 
/home/nnle/Zope-2.0.0-solaris-2.6-sparc/lib/python/ZPublisher/Publish. 
py, line 165, in publish
   File 
/home/nnle/Zope-2.0.0-solaris-2.6-sparc/lib/python/ZPublisher/mapply.p 
y, line 160, in mapply
     (Object: sg_frontpage)
   File 
/home/nnle/Zope-2.0.0-solaris-2.6-sparc/lib/python/ZPublisher/Publish. 
py, line 102, in call_object
     (Object: sg_frontpage)
   File 
/home/nnle/Zope-2.0.0-solaris-2.6-sparc/lib/python/Products/ExternalMe 
thod/ExternalMethod.py, line 246, in __call__
     (Object: sg_frontpage)
     (Info: ((<Folder instance at 74f830>, 's1ghs'), {}, None))
   File 
/home/nnle/Zope-2.0.0-solaris-2.6-sparc/Extensions/get_all_children.py 
, line 201, in sg_preamble
     (Object: ElementWithAttributes)
   File 
/home/nnle/Zope-2.0.0-solaris-2.6-sparc/lib/python/DocumentTemplate/DT 
_String.py, line 502, in __call__
     (Object: <string>)
   File 
/home/nnle/Zope-2.0.0-solaris-2.6-sparc/lib/python/DocumentTemplate/DT 
_Util.py, line 321, in eval
     (Object: AUTHENTICATED_USER.getUserName())
   File <string>, line 0, in ?
NameError: (see above)

-->

line 201 is this line in the code
         html = template(self)

baffled...
Tone
------
Dr Tony McDonald,  FMCC, Networked Learning Environments Project 
http://nle.ncl.ac.uk/
The Medical School, Newcastle University Tel: +44 191 222 5888
Fingerprint: 3450 876D FA41 B926 D3DD  F8C3 F2D0 C3B9 8B38 18A2