[Zope] manage_addFile - getting DTML method results as file input

Dieter Maurer dieter at handshake.de
Fri Jul 30 15:58:44 EDT 2004


David Siedband wrote at 2004-7-29 14:48 -0700:
>I have a DTML method 'resource_xml' that produces an XML file.  I'm 
>want to apply this method to the records returned by a zSQL 
>'selectExportDocs' and save each the XML for each one.
>
><dtml-call "REQUEST.set('file_type', 'text/xml' )">
>   <dtml-in "queries.selectExportDocs()">
>     <dtml-in "resource_xml()">
>       <dtml-call "this().manage_addFile(REQUEST['id'], file, 
>REQUEST['title'])">
>     </dtml-in>
>   </dtml-in>

This definitely looks quite wrong...

  Remember that "dtml-in" is a loop construct.

  This means you have two nested loops where the
  inner body always creates the same file.

Strong recommendation: use a Python Script (and not a DTML object)
to code such "logic".

Almost surely, in your Python Script, you will have something like

       req = container.REQUEST

       context.manage_addFile(req['id'],
                              context.resource_xml()
			      )

I expect that the SQL call is best done inside "resource_xml".

Should this not be the case, then you must think about
how the query result affects "resource_xml".

You can pass them into "resource_xml" via keyword (!) arguments,
e.g.
       context.manage_addFile(
          req['id'],
	  context.resource_xml(context.queries.select...())
	  )

-- 
Dieter


More information about the Zope mailing list