I have a form with a string field that uses the IS_IN_SET validator.
The set of strings that is allowed must be generated dynamically each
time the form is generated. So I add the validator in the controller.
( See the snippet below. )

The problem is that sometimes I get "value not allowed" validation
errors from that field. Why? I am restricted to selecting only the
items in the list given to IS_IN_SE. It seems like it would be
impossible to select a value that is not allowed.

Maybe adding the validator in the controller is not correct but I
don't know what is the correct way!

Here is a snippet showing the controller and also the table definition
from the db.py file. (I stripped out the code for other fields just to
make the snippet shorter. )

 Thanks in advance!

=======================
  controller
=======================

def register_user_custom_form():

    # Dynamically get the list of valid last names
    last_names = get_last_names( ) # Call some function to get the
list
    # Set the validator based on that
    db.reg_test.last_name.requires = IS_IN_SET( last_names,  zero =
"Select a Last Name" )

    form=SQLFORM(db.reg_test)
    if form.accepts(request.vars,session):
        response.flash='Your account has been created'
    elif form.errors:
        response.flash='Your account has not been created'

    ### and get a list of all users
    records=SQLTABLE(db().select(db.reg_test.ALL))
    return dict(form=form,records=records)

=================
   table definition
=================

db.define_table('reg_test',
    Field('first_name',required=True,notnull=True,writable=True,
label="First Name"),
    Field('last_name',required=True,notnull=True,writable=True, label=
"Last Name"),
    )
db.reg_test.first_name.requires = IS_NOT_EMPTY()

-- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en.

Reply via email to