First, let me give some background on what I've been trying to do. We
wanted to set up an inventory system using QR codes which would be put on
stickers on our stock and then scaned with smartphone when removing
inventory bring up the appropiate web page. The QR code should contain
something like:
http://GeorgesTV/qrinv/update_inventory?partnum=12345
and the following is the code I wrote for update_inventory:
rows = db(db.invent.partnum == request.vars.partnum).select()
# change rows object to row object
row = rows[0]
# display queried object
record = crud.update(db.invent, row.id)
return dict(record=record)
initialy it would work fine it would run the query and pull up the correct
record but
if I tried to update the record I would get the folling error:
Traceback (most recent call last):
File "/home/joel/Source/web2py/gluon/restricted.py", line 205, in restricted
exec ccode in environment
File "/home/joel/Source/web2py/applications/GeorgesTV/controllers/qrinv.py"
<http://127.0.0.1:8000/admin/default/edit/GeorgesTV/controllers/qrinv.py>, line
123, in <module>
File "/home/joel/Source/web2py/gluon/globals.py", line 173, in <lambda>
self._caller = lambda f: f()
File "/home/joel/Source/web2py/applications/GeorgesTV/controllers/qrinv.py"
<http://127.0.0.1:8000/admin/default/edit/GeorgesTV/controllers/qrinv.py>, line
116, in update_inventory
row = rows[0]
File "/home/joel/Source/web2py/gluon/dal.py", line 7755, in __getitem__
row = self.records[i]
IndexError: list index out of range
I thought maybe the request variable wasn't getting passed correctly when
updated so I made the following change:
session.partnum = request.vars.partnum
rows = db(db.invent.partnum == session.partnum).select()
which didn't help either, but I then noticed that if I tried to pull up the
update_inventory page now without the query string
it would come up since session varible was already set and it would update
correctly!
I was eventualy able to get it work more or less how I wanted by writing a page
whose only function was to take the
query string set a session variable and then redirect you to the
update_inventory page. But I worry that using session varibles
may cause unforseen problems eventualy.
So what I would like to know, is this a bug I've found or am I going about
doing this incorrectly? Could someone explains
what happens when you use crud.update and why I get this error when I try to
use query strings?
Thanks in advance for your help.
Joel Robinson