skip to navigation
skip to content

collective.z3cform.norobots 1.4.1

Human readable captcha for z3cform

Latest Version: 1.4.4


collective.z3cform.norobots provides a “human” captcha widget based on a list of question/answer(s).

This captcha can be used as a (Plone Discussions) captcha plugin and in all z3c forms.

The widget is based on z3c.form.TextWidget.

Since version 1.4, questions configuration uses a dedicated control panel (using instead of a simple properties sheet. An upgrade step provides migration from earlier versions.

Interface is translated in the following languages: Czech [cs], Danish [da], German [de], Basque [eu], Suomeksi [fi], French [fr] and Simplified Chinese [zh_CN]. => Some strings have been added in 1.4, need to be translated.


  • I have tested with Plone 4.1.5 and Plone 4.0.10 (
  • For Plone 4.0 :,, and to use the captcha for anonymous comments in Plone Discussions. See bellow.


Getting the module

Add collective.z3cform.norobots to your plone.recipe.zope2instance buildout section e.g.:

eggs =


zcml =

Or, you can add it as a dependency on your own product


Enabling the module

For Plone 4.1.x:

  • In the Addons control panel, install “Norobots captcha field (collective.z3cform.norobots)”.

For Plone 4.0.x:

Add a new question

In the “Norobots widget settings” control panel, add a new line in the field “Norobots question::answer”:


Example : What is 10 + 12 ?::22

Answer can contain multiple values delimited by semicolon:


Example : What is 5 + 5 ?::10;ten

Quickly test ?

Download collective.z3cform.norobots and use virtualenv and buildout to test the module:

easy_install virtualenv
cd collective.z3cform.norobots
virtualenv .
source bin/activate
(collective.z3cform.norobots) easy_install zc.buildout
!!! check the buildout content before running !!!
(collective.z3cform.norobots) ln -s test-plone-4.1.x.cfg buildout.cfg
(collective.z3cform.norobots) python
(collective.z3cform.norobots) bin/buildout
[...] be patient... [...]
(collective.z3cform.norobots) ./bin/instance fg

Go to http://localhost:8080, add a new Plone Site and install collective.z3cform.norobots (see above).

Launch tests:

(collective.z3cform.norobots) ./bin/test -s collective.z3cform.norobots

Usage in a z3c form

You can use this widget setting the “widgetFactory” property of a form field:

from zope import interface, schema
from z3c.form import interfaces, form, field, button, validator
from import wrap_form

from collective.z3cform.norobots.i18n import MessageFactory as _
from collective.z3cform.norobots.widget import NorobotsFieldWidget
from collective.z3cform.norobots.validator import NorobotsValidator

class INorobotsForm(interface.Interface):
    norobots = schema.TextLine(title=_(u'Are you a human ?'),
                               description=_(u'In order to avoid spam, please answer the question below.'),

class NorobotsForm(form.Form):
    fields = field.Fields(INorobotsForm)
    fields['norobots'].widgetFactory = NorobotsFieldWidget

# wrap the form with's Form wrapper
NorobotsFormView = wrap_form(NorobotsForm)

# Register Norobots validator for the correponding field in the IContactInfo interface
validator.WidgetValidatorDiscriminators(NorobotsValidator, field=INorobotsForm['norobots'])

for more information see in the plone_forms directory.

Possible problems



  • Sylvain Boureliou [sylvainb]
  • Mikel Larreategi [erral]
  • Aijun Jian
  • Radim Novotny [naro]
  • Thomas Clement Mogensen [tmog]
  • Peter Mathis [petschki]
  • Petri Savolainen [petri]
  • Helmut Toplitzer


1.4.1 (2012-07-02)

  • Fix Unicode error when a question contains non-ascii char. [sylvainb, Helmut Toplitzer]

1.4 (2012-06-22)

  • Use instead of a property sheet for the questions configuration. Questions can now be added using a dedicated control panel. [sylvainb]
  • Add an upgrade step (1 -> 2) to copy questions from the old properties sheet to [sylvainb]
  • Fix the widget template for use with (there was no redirection to the comment form when only the captcha is wrong). [sylvainb]
  • Update translations (some new strings added). [sylvainb]
  • Add Basque translation [erral]

1.3.1 (2012-03-28)

  • Add simplified chinese translation [Aijun Jian]

1.3 (2012-02-27)

  • Allow multiple answers for a question [naro]
  • Added danish translation [tmog]

1.2.1 (2010-11-05)

  • Added german translation [petschki]

1.2 (2010-10-31)

  • Fix tests for Plone 4 [sylvainb]
  • Added Czech translation [naro]

1.1 (2010-09-15)

  • Support for using as a captcha plugin (Plone 4) [Petri Savolainen]
  • Finnish translations [Petri Savolainen]

1.0 (2010-01-13)

  • Initial release [sylvainb]
File Type Py Version Uploaded on Size (md5) Source 2012-07-02 78KB