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
>
>
--