Skip to main content

Zope Toolkit support for zeam.form

Project description

zeam.form.ztk help you to integrate zeam.form.base with the Zope Tool Kit. It provides:

  • Form fields generation out of zope.schema fields, and zope.schema fields listed in a Zope interface,

  • Widgets for those fields,

  • Default action to Add, Edit a content, Cancel a current action by returning on the default view of a content.

Like zeam.form.base the focus is to have an API usable by the developer, not a support of theorical use-cases that you don’t need.


Let’s create a form to edit a content. Here we have an interface for our content:

from zope import schema, interface

class IClan(interface.Interface):

class IPerson(interface.Interface):

   first_name = schema.TextLine(title=u"First Name")
   last_name = schema.TextLine(title=u"Last Name")
   age = schema.Int(title=u"Age", required=False)
   single = schema.Bool(title=u"Is single ?", default=True)

We assume that a Person is in a Clan. We can implement a Person:

from persistence import Persistent

class Person(Persistent):

    first_name = None
    last_name = None
    age = None
    single = True

Add form

You can add a new Person in a clan like this:

import zeam.form.ztk as form

class Add(form.Form):


    label = u"New person"
    fields = form.Fields(IPerson)
    actions =  form.Actions(
         form.AddAction("Add", factory=Person),
    actions['add'].fieldName = 'last_name'

Edit form

You can edit a Person like this:

class Edit(form.Form):


    label = u"Change person details"
    fields = form.Fields(IPerson)
    actions =  form.Actions(

    ignoreContent = False


All the API of zeam.form.base is exported as well.



Action which take an extra parameter, factory, to create an object stored on the content object. The created object is added with the help of INameChooser to get its identifier. The option fieldName will be used to lookup a value in the form data to give as potential identifier to INameChooser. Afterwards the created object is edited (like EditAction does) with the form data.


Action which use the form data to change values on the content object, designated by the form fields, after validation of the form submission.


Simple action which return on default view of the content without validating the form submission.


Currently supported fields:

  • Date, Datetime: generate a text line input and parse/display the date using the locale,

  • TextLine, Text, Boolean, URI, Email, and numbers (Int, Float …),

  • Password,

  • Choice: generate a select or a radio boxes (widget mode radio),

  • Object,

  • Collections: List, Set, Tuple in input and display mode:

    • Collection of choices: generate a widget with a list of checkboxes,

    • Collection of objects: generate a table to edit multiple objects,

    • Other collection: generate a widget with generic add an remove actions.

For more documentation, please report to the doctests included in the code.


1.4.0 (2020/08/20)

  • Moved to Python3.6+. Python2 support dropped.

1.3.6 (2018/01/15)

  • Fixed the use of defaultFactory

  • Updated to newer versions of GTK packages

1.3.5 (2016/03/08)

  • Extended the Mock Library class to make it compatible with the newest fanstatic api.

1.3.4 (2014/04/15)

  • Introducing the “defaultFactory” attributes from zope.schema. It was necessary to hijack the default value computing from zope.schema DefaultProperty.

1.3.3 (2013/12/20)

  • Update collection javascript not to bind events on the document anymore, but on the field. This prevent breakage if the events get intercepted. The reordering buttons no longer submit the form, even if the javascript isn’t included.

  • Allow people to customize the disabled attributes on fields.

  • Update collection javascript to work with jQuery 1.9. It now requires at least jQuery 1.7.

1.3.2 (2013/04/23)

  • Add a native email widget.

1.3.1 (2012/11/19)

  • Update fields to properly pass along zope.schema the contrainValue validator.

  • Fix all fields to properly handle required (it got broken in the previous release for some fields).

1.3 (2012/10/12)

  • Update fields and widgets to no longer proxy zope.schema. Instead they do their own validation and are standalone (they can be created and used without zope.schema).

  • Support more HTML 5 features, like for number fields, and extra attributes that can be inserted with the help of htmlAttributes, like placeholder

  • Add a CurrencyField, that can be used to display nicely currencies.

1.2.3 (2012/09/24)

  • Update API to use zeam.form.base 1.2.3.

1.2.2 (2012/07/25)

  • Adjust CheckboxWidgetExtractor to convert False input to bool False.

1.2.1 (2012/04/27)

  • Improve choice widgets, to make possible to customize the source of it. Add support for a IFormSourceBinder, that works like a IContextSourceBinder except it takes the form as parameter instead of the context (thus giving access to request as well for instance).

  • Add a method delete to the data manager.

  • Now use grokcore.chameleon instead of megrok.chameleon.

1.2 (2011/11/08)

  • Improve error reporting in collection widgets. Thanks to Novareto for the sponsorship.

  • Add an validation option in collection widgets while adding and removing values from it. Thanks to Novareto for the sponsorship.

  • Improve Javascript for collection widgets. Add an extra with fanstatic to automatically require required files.

  • If a collection widget is required, it will by default display one empty item in the collection when it is empty. That prevent an extra click to add it.

  • Various fixes in InvariantsValidator.

  • SchemaWidgetExtractor and SchemaField now catch Invalid exceptions.

  • Add support for the HTML 5 attribute required in every template. Use the attribute novalidate on the form tag to disable it.

  • Add a display widget for object and uri fields.

  • Add an option valueLength to the date widgets. Any Zope formatter size can be use (short, medium …).

1.0 (2010/10/19)

  • Add a multiselect widget for multiple choices.

  • Add a readonly widget.

  • Add a display widget for booleans and collections.

  • Add HTML5 widgets for URIs.

  • Schema field can be adapted now, even if they don’t have a interface (if they provide an attribute __name__).

  • Add more tests, fix issues in collection widgets, and invariant validator.

  • Translations are all located in zeam.form.base.

  • Update to use the last version of zeam.form.base.

1.0rc2 (2010/07/16)

  • Add radio widget for choices.

  • Add a display widgets for multiple choices.

  • All fields have the field CSS class.

  • Multiple choices widgets now properly respect the value of a vocabulary term.

1.0rc1 (2010/07/05)

  • Updated entry points registrations to be compatible with latest zeam.form.base.

1.0b3 (2010/06/22)

  • Field wrapper registration is now made thanks to an entry point.

  • Added invariants validation.

  • Added A generic adaptive datamanager that can adapt the form content to one or several interfaces.

1.0b2 (2010/05/13)

  • Improve widget initialization, and testing layer support.

  • Fix choice widgets when they are used with vocabulary factories.

1.0b1 (2010/05/03)

  • Initial release, with not all the widgets.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zeam.form.ztk-1.4.0.tar.gz (55.5 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page