doctest added.
svn path=/plone.formwidget.captcha/trunk/; revision=28707
This commit is contained in:
parent
d64166e45e
commit
56c7d377ec
|
@ -0,0 +1,66 @@
|
|||
Captcha widget
|
||||
==============
|
||||
|
||||
plone.formwidget.captcha provides a captcha widget based on the
|
||||
collective.captcha widget.
|
||||
|
||||
>>> from plone.formwidget.captcha import CaptchaFieldWidget
|
||||
|
||||
First, set up a simple test form and context.
|
||||
|
||||
>>> from zope.interface import alsoProvides
|
||||
>>> from zope.publisher.browser import TestRequest
|
||||
>>> from zope.annotation.interfaces import IAttributeAnnotatable
|
||||
>>> from z3c.form.interfaces import IFormLayer
|
||||
|
||||
>>> def make_request(path, form={}):
|
||||
... request = TestRequest()
|
||||
... request.form.update(form)
|
||||
... alsoProvides(request, IFormLayer)
|
||||
... alsoProvides(request, IAttributeAnnotatable)
|
||||
... request._traversed_names = path.split('/')
|
||||
... return request
|
||||
|
||||
>>> from zope.interface import Interface
|
||||
>>> from zope import schema
|
||||
>>> from z3c.form import form, field, button
|
||||
>>> from plone.z3cform.layout import wrap_form
|
||||
|
||||
>>> class ICaptchaForm(Interface):
|
||||
... subject = schema.TextLine(title=u"Subject",
|
||||
... description=u"",
|
||||
... required=True)
|
||||
...
|
||||
... captcha = schema.TextLine(title=u"Captcha",
|
||||
... description=u"",
|
||||
... required=False)
|
||||
|
||||
>>> from z3c.form.interfaces import IFieldsForm
|
||||
>>> from zope.interface import implements
|
||||
>>> class CaptchaForm(form.Form):
|
||||
... implements(ICaptchaForm)
|
||||
... fields = field.Fields(ICaptchaForm)
|
||||
... fields['captcha'].widgetFactory = CaptchaFieldWidget
|
||||
...
|
||||
... @button.buttonAndHandler(u'Apply')
|
||||
... def handleApply(self, action):
|
||||
... data, errors = self.extractData()
|
||||
... if data.has_key('captcha'):
|
||||
... # Verify the user input against the captcha
|
||||
... captcha = CaptchaValidator(self.context, self.request, None, ICaptchaForm['captcha'], None)
|
||||
... if data.has_key('subject') and captcha.validate(data['captcha']):
|
||||
... # if captcha validation passes, print the subject
|
||||
... print data['subject']
|
||||
... return
|
||||
|
||||
|
||||
>>> form_view = wrap_form(CaptchaForm)
|
||||
|
||||
>>> from zope.component import provideAdapter
|
||||
>>> from zope.publisher.interfaces.browser import IBrowserRequest
|
||||
>>> from zope.interface import Interface
|
||||
|
||||
>>> provideAdapter(adapts=(ICaptchaForm, IBrowserRequest),
|
||||
... provides=Interface,
|
||||
... factory=form_view,
|
||||
... name=u"captcha-form")
|
|
@ -30,9 +30,9 @@ def test_suite():
|
|||
return unittest.TestSuite([
|
||||
|
||||
# Unit tests
|
||||
#doctestunit.DocFileSuite(
|
||||
# 'README.txt', package='plone.formwidget.captcha',
|
||||
# setUp=testing.setUp, tearDown=testing.tearDown),
|
||||
doctestunit.DocFileSuite(
|
||||
'README.txt', package='plone.formwidget.captcha',
|
||||
setUp=testing.setUp, tearDown=testing.tearDown),
|
||||
|
||||
#doctestunit.DocTestSuite(
|
||||
# module='plone.formwidget.captcha.mymodule',
|
||||
|
|
Reference in New Issue