Hello web2py users!

I'm trying to use the onvalidation function in SQLFORM, but isn't
working very well.

When I use SQLFORM as insert form, everything works fine. But when I
change it to update/detele form (with adding request.args(1) into
SQLFORM; request.args(1) gives me record's ID, whitch I want to edit)
then everytime the validation not pass, it ends with error:

Traceback (most recent call last):
  File "d:\Programy\web2py\web2py_newest\gluon\restricted.py", line
188, in restricted
    exec ccode in environment
  File "d:/Programy/web2py/web2py_newest/applications/projekty/
controllers/spravce.py", line 116, in <module>
  File "d:\Programy\web2py\web2py_newest\gluon\globals.py", line 95,
in <lambda>
    self._caller = lambda f: f()
  File "d:/Programy/web2py/web2py_newest/applications/projekty/
controllers/spravce.py", line 110, in role_edit
    if form.accepts(request.vars, session,
onvalidation=role_validace_edit):
  File "d:\Programy\web2py\web2py_newest\gluon\sqlhtml.py", line 1025,
in accepts
    if self.table[key].type == 'upload' \
  File "d:\Programy\web2py\web2py_newest\gluon\dal.py", line 3768, in
__getitem__
    return dict.__getitem__(self, str(key))
KeyError: 'my_error'

<type 'exceptions.KeyError'>('my_error')

here is my controller code:

def role_validace_edit(form):
    for i in xrange(0, len(session.role)):
          if
int(form.vars.group_id)==session.role[i].auth_membership.group_id:
             form.errors.my_error = "role already exists!"

def role_edit():
    session.role =
db(db.auth_membership.user_id==session.uzivatel_data.id).select(db.auth_membership.id,
db.auth_group.description, db.auth_membership.group_id,
left=db.auth_group.on(db.auth_group.id==db.auth_membership.group_id))

    form = SQLFORM(db.auth_membership, request.args(1), fields =
['group_id'], labels = {'group_id':'Název role'})
    form.vars.user_id=session.uzivatel_data.id
    if form.accepts(request.vars, session,
onvalidation=role_validace_edit):
        response.flash = 'form accepted'
    elif form.errors:
        response.flash = form.errors.my_error
    return dict(form=form)

Am I doing something wrong? Again, when I change it to insert SQLFORM,
it works fine. Please help me.

Tomas

Reply via email to