>deletable = False >if 'edit' in request.args: > record = db[table](request.args[-1]) > if some condition of record: > deletable = True >grid = SQLFORM.grid(db[table], deletable = deletable)
Plus to above Idea: We have smartgrid with "orders" link table "products_in_order" and we want not delete the order if we have products_in_order ( ..if we are not using ON DELETE CASCADE ..) How to prevent deletion ? In "edit" we can use the above solution, in "view" we can do the followings. PS.: Can add this to github for the sqlhtml.py? --- if in sqlhtml.py line 2110 up to 2122 -------------------------- from -------------------------- 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() -------------------------- to -------------------------- if not callable(deletable): if ondelete: ondelete(table, request.args[-1]) else: 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]) else: record.delete_record() ----------------------- controler : def order_delete(table,record_id): #count prodcuts_in order records = db(db.products_in_order.orders_id==record_id).count() if request.args[-3]=='delete': if records>0: session.flash=T('%s product(s) in order. Delete not perimitted.' % records) redirect(URL('default/orders/orders')) elif records==0: db(db.orders.id == record_id).delete() db.commit() pass def orders(): deletable = True if 'edit' in request.args: record_id=request.args[-1] records = db(db.orders_products.orders_id==record_id).count() if records>0: deletable = False grid=SQLFORM.smartgrid(db.orders,linked_tables=linked_tables, fields=showFields,orderby=orderFields, deletable=dict(orders=deletable), ondelete=order_delete) response.view='default/index.html' return dict(grid=grid, form_name=T('Orders')) -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.