>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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.