[Zope3-Users] Re: Email application form causing despair!

Laurence Rowe l at lrowe.co.uk
Tue Mar 14 10:12:27 EST 2006


I think you want to do something along these lines:

from zope.formlib import form
from zope.interface import Interface

class IEmailForm(Interface):
     subject = schema.TextLine(
         title=u'Subject',
         required=True,
         )
     comments = schema.TextLine(
         title=u'Comments',
         required=True,
         )

class EmailForm(form.Form):
     form_fields = form.Fields(IEmailForm)

     @form.action("Email", validator='validate_input')
     def handle_email_action(self, action, data):
         send_mail(data['subject'], data['comments'])
         self.status = u'Email Sent'

     def validate_input(self, action, data):
         #validation logic here
         return [] # no errors

def send_mail(subject, comments):
     ...

Plumb it in with zcml in the normal way. No idea about mutable schemas.

Hope that helps,

Laurence

Graham Stratton wrote:
> I have a seemingly simple problem.  I want to provide a web form which 
> is emailed off on submission.  I'd like to do some validation before it 
> is emailed off.
> 
> *snip saga involving much of formlib and browser:form*
> 
> On much reflection, I think what I probably want to do is to implement 
> an 'email form' content type, which has an address to email the form to, 
> and a schema, and then use the formlib machinery to produce and validate 
> a form from this.  Is this the right way to go?  I can't work out how I 
> can use any of the higher-level formlib code.  Will I need to render one 
> widget at a time and do my own validation?  Or is there something useful 
> in zope.app.form?
> 
> I guess in the longer term it would make sense to make my schema 
> persistent and based on the mutable schema implementation.  How might I 
> go about that?  I did play a bit with the mutable schema utility, but I 
> got errors when trying to add Text and TextLine fields.   I also don't 
> really understand why it's a utility anyway.  Does it offer a way to 
> edit any persistent schema?
> 
> I'm feeling very lost, I hope someone can point me in the right 
> direction.  Thanks for the all the support.
> 
> Regards,
> 
> Graham



More information about the Zope3-users mailing list