form.vars.shapecolor=str(form.vars.shapename)+str (form.vars.colorname) should be
form.vars.shapecolor=str(request.vars.shapename)+str (request.vars.colorname) because, in your code, this line is executed before validation (accepts) thus before request.vars values are copied into form.vars values. Massimo On Jan 10, 10:51 am, annet <[email protected]> wrote: > I am still searching for an elegant multi column unique constraint > solution. > > My model reads like: > > db=SQLDB('sqlite://annet.db') > > db.define_table('shape', > SQLField('name'), > migrate='shape.table') > > db.define_table('color', > SQLField('name'), > migrate='color.table') > > db.define_table('shapecolor', > SQLField('shapename'), > SQLField('colorname'), > SQLField('shapecolor'), > migrate='shapecolor.table') > > db.shapecolor.shapename.requires=IS_IN_DB(db,db.shape.name,'%(name)s') > db.shapecolor.colorname.requires=IS_IN_DB(db,db.color.name,'%(name)s') > db.shapecolor.shapecolor.requires=IS_NOT_IN_DB > (db,'shapecolor.shapecolor') > > When, in appadmin I insert circle blue and manually add circleblue > twice the validator works. So, I wrote the following function in the > default controller: > > def index(): > from gluon.sqlhtml import form_factory > form=SQLFORM(db.shapecolor,fields=['shapename','colorname']) > form.vars.shapecolor=str(form.vars.shapename)+str > (form.vars.colorname) > if form.accepts(request.vars,session): > response.flash='form accepted' > elif form.errors: > response.flash='form has errors (a shape with this color > already exists)' > else: > response.flash='please fill the form' > return dict(form=form) > > When I expose the function and insert circle green twice the validator > doesn't work. When I take a look in database db select the shapecolor > column contains NoneNone twice, so > > form.vars.shapecolor=str(form.vars.shapename)+str(form.vars.colorname) > > results in NoneNone instead of circlegreen, and the validator doesn't > work, it inserts NoneNone and NoneNone without complaining. > > I hope it is possible to implement my idea in web2py, and that one of > you tells me how to code this correctly. > > Best regards, > > Annet. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web2py Web Framework" 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 -~----------~----~----~----~------~----~------~--~---

