[Zope] Newbe question concerning using python classes and external methods
Gaspard, Bradley S
BRADLEY.S.GASPARD@saic.com
Thu, 6 Jul 2000 12:22:52 -0400
All,
I am a new Zope user and I guess I'm missing something fundemental that I
haven't been able to glean from the documentation and various "How-to's".
As a learning tool I am trying to implement one of Brian Lloyd's examples I
found on the Web implementing a GuestBook.
I suspect what I don't understand is how to write the external method that
would make use of this class (The one I have been playing with follows the
class definitions). Anyhow, I've created an an external method and call
(e.g. <dtml-var guest>) after which the guestBookForm is displayed. After
filling out the form and submitting it Zope does not seem able to find the
signGuestBook method. What am I doing wrong??
Other than mostly trivial examples, I haven't been able to find many
complete (working) examples of using external methods.
Thanks in advance for any help.
"""Module guestbook: a simple guestbook application"""
class GuestBook:
"""A guestbook object that provides both the forms
and the handling of submitted form data."""
def __init__(self, title, filename):
self.title=title
self.filename=filename
def guestbookForm(self):
"""Return the guestbook from to the user"""
return """<HTML>
<HEAD><TITLE>%s</TITLE></HEAD>
<BODY>
<H2>%s</H2>
Please sign our guestbook!
<P>
<FORM ACTION="signGuestBook" METHOD="POST">
Name: <INPUT TYPE="TEXT" NAME="name"><BR>
Email: <INPUT TYPE="TEXT" NAME="email"><BR>
<INPUT TYPE="SUBMIT" VALUE="Sign Guestbook">
</FORM>
</BODY>
</HTML>""" % (self.title, self.title)
def successPage(self):
"""Return a page to thank the user on success"""
return """<HTML>
<HEAD><TITLE>%s</TITLE></HEAD>
<BODY>
<H2>Thank You!</H2>
Thank you for signing %s!
</BODY>
</HTML>""" % (self.title, self.title)
def signGuestBook(self, name, email='not specified'):
"""Handle a submitted guestbook form"""
# Open a file to save the guestbook entry
try:
file=open(self.filename, 'a')
except IOError:
file=open(self.filename, 'w')
entry='Guestbook entry: %s %s\n' % (name, email)
file.write(entry)
file.close()
return self.successPage()
External method
import sys
sys.path.append('/usr/local/src/Zope-2.1.6-linux2-x86/lib/python/Shard/jscap
e/winsat')
import guestbook
def AddGuest(self):
myGuestBook=guestbook.GuestBook('My GuestBook', 'guestbookdata.txt')
return myGuestBook.guestbookForm()
Brad