First, you can't set session.allow_duplicate to False until you've first checked its value. Second, you have to actually check its value somewhere. Maybe something like this:
allow_duplicate = session.allow_duplicate del session.allow_duplicate if not allow_duplicate: if form.vars.cocNumber and db(...).select(db.organization.ALL): session.allow_duplicate=True form.errors.cocNumber=str(form.vars.cocNumber) + str(form.vars. subdossierNumber) + ' already in database' elif form.vars.lastName and form.vars.birthday and person=db(...). select(db.person.ALL): session.allow_duplicate=True form.errors.lastName=str(form.vars.lastName) + str(form.vars. birthday) + ' already in database' Anthony On Wednesday, October 17, 2012 12:54:33 PM UTC-4, Annet wrote: > > I tried: > > form=SQLFORM.factory(...) > if > form.process(onvalidation=validate_create_node,keepvalues=True).accepted: > processForm(form) > elif form.errors: > response.flash=responseFlash('formerror',session) > elif not response.flash: > response.flash=responseFlash('form',session) > return dict(form=form) > > > def validate_create_node(form): > if session.allow_duplicate: > session.allow_duplicate=False > elif form.vars.cocNumber: > organization=db(...).select(db.organization.ALL) > if organization: > session.allow_duplicate=True > form.errors.cocNumber=str(form.vars.cocNumber) + > str(form.vars.subdossierNumber) + ' already in database' > elif form.vars.lastName and form.vars.birthday: > person=db(...).select(db.person.ALL) > if person: > session.allow_duplicate=True > form.errors.lastName=str(form.vars.lastName) + > str(form.vars.birthday) + ' already in database' > > ... but this: > > if session.allow_duplicate: > session.allow_duplicate=False > > Doesn't work. How do I implement this correctly? > > > Kind regards, > > Annet > > --