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 web2py@googlegroups.com
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to