[Zope] z3c.form - custom terms for a radio widget

Dan Fairs dan.fairs at gmail.com
Fri May 8 07:22:52 EDT 2009


I'm trying to override the default terms for a radio widget on a Bool  
field. My schema and form are as follows:

class IBookingForm(Interface):
     agree_tc = Bool(
         title=u"Booking Terms and Conditions",

class BookingForm(AddForm):
     fields = field.Fields(IBookingForm)

So, pretty straightforward. This renders out with 'yes' and 'no' as  
the values. I'd like this to display as 'I agree' and 'I don't agree'.

The docs say that you should provide an alternate set of terms to  
change the labels, so I have this class:

class TandCBoolTerms(term.BoolTerms):
   trueLabel = u"I Agree"
   falseLabel = u"I Don't Agree"

However, I'm now slightly at a loss as to how to register this terms  
class for that single field on the form - the docs don't mention that!  
Looking at the code, I can see the multi-adapter lookup in  
z3c.form.widget.SelectWidget.updateTerms(), which looks like what I  
want. Is there some kind of discriminator I can use (like the  
StaticWidgetAttribute class) to help with this registration?

Dan Fairs <dan.fairs at gmail.com> | http://www.fezconsulting.com/

More information about the Zope mailing list