I'm doing a requires statement so the id number matches a prescribed
format, encrypt it, and then store it in the database (if it isn't a
duplicate number) 

    
db.card.id_number.requires=[eval(db.agency[int(request.vars.id_number)].regex),CRYPT(),IS_NOT_IN_DB(db,'card.id_number')


Do you use eval() and strings for validation? I've tested eval() in a
Shell for validation like: 

    eval(db.agency[id].regex)('')

where regex column is something like: "IS_MATCH('^\\d{3}-\\d{4}-\\d{4}-\
\d{1}?$')" or Null, and it works! The idea, is that every record in the
administrative table comes with the regex needed to validate the id
number.

But when I try it in a requires statement, it complains that
request.vars.id_number is not valid, but I couldn't place an expression
inside eval(). I already have a CRUD form that uses a validation routine
called by onaccept, but I'm wondering if I could replace it instead with
just a requires statement. 

I use it like this in my custom validation:

if (db.agency[int(form.vars.issuer)].regex and\
        eval(db.agency[int(form.vars.issuer)].regex)(form.vars.id_number)[1]!= 
None):
        form.errors.id_number='Enter id number exactly as shown in your card.'

Looking forward to hear your suggestions. TIA.

/r
Nik 

Reply via email to