Although you may be able to do this, captcha is not a widget because
as pointed out it is not a field.
This is the best way.

form[0].append(TR('',captcha, ''))

Massimo

On Nov 21, 12:39 pm, Thadeus Burgess <thade...@thadeusb.com> wrote:
> I will do this in functions, so resources only get allocated if needed.
>
> def captcha_form():
>     return SQLFORM.factory(db.table.field1, db.table.field2,
> Field("anti_spam", widget=captcha, default='')
> def normal_form():
>     return SQLFORM(db.table)
>
> if docaptcha:
>   form = captcha_form()
> else
>   form = normal_form()
>
> Still having a problem with using recaptcha inside of ajax_trap. It works in
> plug-ins as long as ajax_trap or ajax are false.
>
> -Thadeus
>
> On Sat, Nov 21, 2009 at 12:26 PM, mr.freeze <nat...@freezable.com> wrote:
>
> > I know what you mean.  I don't think it's possible as the form is
> > built SQLFORM's __init__ function.  You might have some luck
> > dynamically building a collection of fields then passing them like so:
>
> > form = SQLFORM.factory(*fields)
>
> > On Nov 21, 11:56 am, Thadeus Burgess <thade...@thadeusb.com> wrote:
> > > Mainly because I really get agitated when I have to do silly things such
> > as
>
> > > if do_captcha:
> > >     form = SQLFORM.factory(db.table.field1, db.table.field2,
> > > db.table.field3, Field('anti_spam', widget=captcha, default=''))
> > > else:
> > >     form = SQLFORM(db.table)
>
> > > -Thadeus
>
> > > On Sat, Nov 21, 2009 at 11:49 AM, Thadeus Burgess <thade...@thadeusb.com
> > >wrote:
>
> > > > How do you append a Field() to SQLFORM? Does not look like it is
> > possible.
>
> > > > -Thadeus
>
> > > > On Sat, Nov 21, 2009 at 11:47 AM, Thadeus Burgess <
> > thade...@thadeusb.com>wrote:
>
> > > >> I believe it is the way that SQLFORM looks for data in request.vars.
>
> > > >> It will look for a var with the name of the field...
>
> > > >> so
>
> > > >> Field('recaptcha', widget=captcha)
>
> > > >> It is expecting a request.vars.recaptcha, which does not exist.
>
> > > >> You're right, setting default does fix it, sounds like a bug...
>
> > > >> So it seems that by setting a default, it is allowing SQLFORM to
> > proceed,
> > > >> even though it is not getting anything from request.vars.
>
> > > >> I even tried setting the field name to recaptcha_response_field with
> > no
> > > >> luck, but the default trick works! Lol you're awesome Freeze
>
> > > >> -Thadeus
>
> > > >> On Sat, Nov 21, 2009 at 11:34 AM, mr.freeze <nat...@freezable.com>
> > wrote:
>
> > > >>> uld be able to create a form using SQLFORM(db.table) and then
> > > >>> > insert the recaptcha field aft
>
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To post to this group, send email to web2py@googlegroups.com
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to