In this post:
http://groups.google.com/group/web2py/browse_thread/thread/8d78f8f9a7f1d553/e72789761c7c43a9#e72789761c7c43a9
I described the following problem:
When the user clicks the link in the view:
<td>
{{=A(T('update/delete'),_href=URL(r=request,f='update_address',args=
[record.id]))}}
</td>
the correct record is displayed, when the user tampers the arg in the
URL two things happen: if he changes the arg to a record_id of an
existing record the elif redirects to the crud_address function,
however, when he changes the arg to a record_id that is not in the
database the following error ticket is issued:
Traceback (most recent call last):
File "/Library/Python/2.5/site-packages/mockpy/gluon/restricted.py",
line 98, in restricted
File "/Users/iannet/mockpy/applications/mock/controllers/crud.py",
line 41, in <module>
File "/Library/Python/2.5/site-packages/mockpy/gluon/globals.py",
line 75, in <lambda>
File "/Users/iannet/mockpy/gluon/tools.py", line 1049, in f return
action(*a, **b)
File "/Users/iannet/mockpy/applications/mock/controllers/crud.py",
line 31,
in update_address
elif not record[0].bedrijf==auth.user.bedrijf:
File "/Library/Python/2.5/site-packages/mockpy/gluon/sql.py", line
2109,
in __getitem__
SyntaxError: SQLRows: no such row
I thought I solved the problem:
@auth.requires_membership('core_manager')
def update_address():
response.view='core/update.html'
response.flash=T('update or delete record')
db.adres.bedrijf.writable=False
record_id=request.args[0]
record=db(db.adres.id==record_id).select(db.adres.bedrijf)[0]
if not record:
redirect(URL(r=request,f='crud_address'))
elif not record.bedrijf==auth.user.bedrijf:
redirect(URL(r=request,f='crud_address'))
form=crud.update(db.adres,request.args[0],next=(URL
(r=request,f='crud_address')))
return dict(form=form)
However, today I found out that this only solves the problem if the
record_id is within the range of 0 and the current record_id, when the
record_id exceeds the current record's id a similar error ticket is
issued:
Traceback (most recent call last):
File "/Library/Python/2.5/site-packages/web2pyfitwise/gluon/
restricted.py", line 98, in restricted
exec ccode in environment
File "/Library/Python/2.5/site-packages/web2pyfitwise/applications/
cms/controllers/core.py", line 82, in <module>
File "/Library/Python/2.5/site-packages/web2pyfitwise/gluon/
globals.py", line 75, in <lambda>
self._caller = lambda f: f()
File "/Library/Python/2.5/site-packages/web2pyfitwise/gluon/
tools.py", line 1045, in f
return action(*a, **b)
File "/Library/Python/2.5/site-packages/web2pyfitwise/applications/
cms/controllers/core.py", line 37,
in update_address
record=db(db.adres.id==record_id).select(db.adres.bedrijf)[0]
File "/Library/Python/2.5/site-packages/web2pyfitwise/gluon/sql.py",
line 2109, in __getitem__
raise SyntaxError, 'SQLRows: no such row'
SyntaxError: SQLRows: no such row
I think I have to move:
if not record:
redirect(URL(r=request,f='crud_address'))
up in de code, but I am not sure where it should go to finally solve
this problem. If so, why did the current code partially solve my
problem.
Kind regards,
Annet.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"web2py Web Framework" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---