From 04f6e7ee382252a5fc7365097ae12e8b8cabe45f Mon Sep 17 00:00:00 2001 From: niphlod Date: Tue, 23 Apr 2013 23:04:12 +0200 Subject: [PATCH] fixed issue 1459 --- gluon/sqlhtml.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/gluon/sqlhtml.py b/gluon/sqlhtml.py index 36ed2ccc..dc9322fc 100644 --- a/gluon/sqlhtml.py +++ b/gluon/sqlhtml.py @@ -2012,10 +2012,11 @@ class SQLFORM(FORM): table = db[request.args[-2]] record = table(request.args[-1]) or redirect(URL('error')) sqlformargs.update(editargs) + deletable_ = deletable(record) if callable(deletable) else deletable update_form = SQLFORM( table, record, upload=upload, ignore_rw=ignore_rw, - formstyle=formstyle, deletable=deletable, + formstyle=formstyle, deletable=deletable_, _class='web2py_form', submit_button=T('Submit'), delete_label=T('Check to delete'), @@ -2035,9 +2036,16 @@ class SQLFORM(FORM): return res elif deletable and request.args(-3) == 'delete': table = db[request.args[-2]] - if ondelete: - ondelete(table, request.args[-1]) - db(table[table._id.name] == request.args[-1]).delete() + if not callable(deletable): + if ondelete: + ondelete(table, request.args[-1]) + db(table[table._id.name] == request.args[-1]).delete() + else: + record = table(request.args[-1]) or redirect(URL('error')) + if deletable(record): + if ondelete: + ondelete(table, request.args[-1]) + record.delete_record() redirect(referrer) exportManager = dict(