On Wednesday, December 19, 2012 3:24:31 PM UTC+5:30, Niphlod wrote:
>
> I can't reproduce the issue.
I know it is a bit tough one. Even I too wasn't able to pinpoint the exact
problem. I debugged till the dal.py as well. Not sure when does the
db.commit() get called.
> Can you post a packed application showing the problem ?
Can't. Anyway, I'm pasting some relevant code below. BTW, if it matters, I
started the development with 2.0.x and upgrade just the web2py code to
current stable release i.e. After I upgrade web2py I do not go by to my
application and make any changes (like web2py.css or any other)
In a file under modules :
from gluon import current
import datetime
def modify_grid(grid, hide_adv_search=False,
bootstrap_pagination=False, rename_view_btn=False,
non_web2py_table=False):
T = current.T
if hide_adv_search:
# Remove Advanced Query Slideout
if len(grid.elements('input[id=web2py_keywords]')):
grid.elements('input[id=web2py_keywords]')[0]['_onfocus'] = ""
if bootstrap_pagination:
if len(grid.elements('.web2py_paginator')):
grid.elements('.web2py_paginator')[0]['_class'] = 'pagination'
if non_web2py_table:
if len(grid.elements('.web2py_table')):
grid.elements('.web2py_table')[0]['_class'] = \
'table table-striped'
if rename_view_btn:
# Change from "View" to "Details"
# When using Buttons
for btn in grid.elements('span'):
if btn['_title'] == "View":
btn['_title'] = T('Details')
for y in btn.elements():
y[0] = T("Details")
# When NOT using Buttons
for a in grid.elements('a[title=View]'):
a.elements()[0]['_title'] = T('Details')
Following are in same file under controllers:
def delete_record(table, record_id):
record = db(table[table._id.name] == record_id).select().first()
if 'name' in record:
print "User [%s] is Deleting [%s] from [%s]" % (auth.user.first_name
,
record['name'],table
)
else:
print "User [%s] is Deleting [%s] from [%s]" % (auth.user.first_name
,
record_id, table)
db(table[table._id.name] == record_id).delete()
db.commit()
@auth.requires_login()
@auth.requires_membership('some_role')
def my_method():
textlengths = {'table.column1': 100, 'table.column2': 60,
'table.column2': 60}
grid = SQLFORM.grid(db.table, user_signature=False, csv=False,
ondelete=delete_record,
maxtextlengths=textlengths, showbuttontext=False)
modify_grid(grid, hide_adv_search=True, bootstrap_pagination=True,
rename_view_btn=True, non_web2py_table=True)
return dict(grid=grid)
I hope this helps. As I mentioned in the bug report, the table has
"db.table.id.readble=False" in models. But that conclusively did not tell
me anything. But might help you.
-Mandar
--