[Zope] External method and stdout

2000-09-05 Thread Sven Hohage



Hallo,
that's theproblem:
I've made an external method which is working with 
lists and should return the result to Zope. The python code is working very 
well, but is sending everything to sys.stdout( I'musing the 
print-statement).How do I convince Zope to print the result on the 
html-page.
 Thanks.


Re: [Zope] External method and stdout

2000-09-05 Thread Kapil Thangavelu

Andreas Pauley wrote:
 
 For some reason you have to "return" everything that should be available
 to zope. You can return a sequence and loop through it with DTML or you
 can build a variable with everything you want to display and then return
 the variable.
 
 I have no idea why this is so, and why you can't just the print
 statement as an equivalent to dtml-var.
 
 There is probably elegant ways of replacing DTML with external methods
 or Python Methods, I was just unable to find documentation and examples
 on it until now. Can anyone help with this?
 
 Regards,
 Andreas.

there are a couple of ways. first zope's publishing objects. if your
publishing a dtml method object than the semantics of it require that
values be inserted into the template/page thats being returned to the
user. you can also publish an external method or a python module
directly(indeed Zope is just a published python module). but sticking to
zope external methods, an example, if you had

def myhello_world(self, REQUEST):

page = " welcome to %s corner of my hello world
"%self.getParentNode().id


and just browse directly to the external method. its important to keep
in mind that stdout isn't connected to the client. the client is
connected to medusa/ZServer, which gives a channel to ZPublisher to
publish data that will be returned to the client. this mainly applies to
fs code, i'm not totally sure about the semantics of web python
methods.  i know this probably goes a bit further down the rabbit hole
than you might be interested in going. if you want to know some more of
the details. 

check out the medusa docs at
http://www.nightmare.com/medusa

and the ZPublisher docs under the Documentation Sec. of Zope.org. 
These are dated but they give a understanding of the interaction between
medusa's asynch interfaces and zope.

and of course the source code.

you could also use document templates directly from python

def new_world_order(self, REQUEST):
from DocumentTemplate import HTML

my_sites = [('My homepage','http://homepage'), 
('my favorite bookstore','http://amazon.com')
, ... etc]


page_to_return = """
html
body

ul
dtml-in sites
lia href="dtml-var sequence-item"dtml-var sequence-key/a/li
/dtml-in
/ul

/body
/html

"""

return HTML(my_sites)(sites=my_sites)

or evaluate a dtml file on the file system using HTMLFILE

see the DocumentTemplate directory for source and more examples

D.Templates also give you a pretty good separation of app. logic and
presentation. Doing straight python insertion in a page is not the Zope
Way. if you're interested in this type of thing, you might want to check
out some other python projects like mod_snake (apache),
pywx.sourceforge.net (aolserver), or webware. I'll think you find the
benefits of doing it through DTML offer you a lot more benefits in terms
on maintainbility and site management.

Cheers

Kapil


  Sven Hohage wrote:
 
  Hallo,
  that's the problem:
  I've made an external method which is working with lists and should
  return the result to Zope. The python code is working very well, but
  is sending everything to sys.stdout( I'm using the
  print-statement).How do I convince  Zope to print the result on the
  html-page.
 Thanks.
 
 --
 In a world without fences, who needs gates?
 
 ___
 Zope maillist  -  [EMAIL PROTECTED]
 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 )

___
Zope maillist  -  [EMAIL PROTECTED]
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 )