Is your version of pydal the one that goes with your version of web2py?

On Thursday, September 29, 2016 at 12:05:14 PM UTC-4, Peter wrote:
>
> I'm punch drunk from looking at this one!
>
> Traceback 
>
> 1.
> 2.
> 3.
> 4.
> 5.
> 6.
> 7.
> 8.
> 9.
> 10.
> 11.
> 12.
> 13.
> 14.
> 15.
> 16.
> 17.
> 18.
> 19.
> 20.
> 21.
> 22.
>
> Traceback (most recent call last):
>   File "/home/peter/web2py/gluon/restricted.py", line 227, in restricted
>     exec ccode in environment
>   File "/home/peter/web2py/applications/PAPAIM/controllers/default.py" 
> <http://127.0.0.1:8000/admin/default/edit/PAPAIM/controllers/default.py>, 
> line 717, in <module>
>   File "/home/peter/web2py/gluon/globals.py", line 417, in <lambda>
>     self._caller = lambda f: f()
>   File "/home/peter/web2py/gluon/tools.py", line 4241, in f
>     return action(*a, **b)
>   File "/home/peter/web2py/applications/PAPAIM/controllers/default.py" 
> <http://127.0.0.1:8000/admin/default/edit/PAPAIM/controllers/default.py>, 
> line 492, in view_payment
>     form=SQLFORM(db.payment,payment)
>   File "/home/peter/web2py/gluon/sqlhtml.py", line 1260, in __init__
>     inp = represent(field, default, record)
>   File "/home/peter/web2py/gluon/sqlhtml.py", line 68, in represent
>     return f(value)
>   File "/usr/local/lib/python2.7/dist-packages/pydal/helpers/methods.py", 
> line 265, in __call__
>     return value if value is None else _fieldformat(self.ref, value)
>   File "/usr/local/lib/python2.7/dist-packages/pydal/helpers/methods.py", 
> line 253, in _fieldformat
>     return r._format % row
>   File "/usr/local/lib/python2.7/dist-packages/pydal/objects.py", line 76, in 
> __getitem__
>     raise KeyError
> KeyError
>
>
>
> Table definition...
>
>
> db.define_table('payment',
>     Field( 'received_date'   , 'date', requires=IS_NOT_EMPTY(), 
> default=request.now.date() , writable=False,comment="*"),
>     Field( 'amount'          , 'decimal(6,2)' , 
> default=0.00,requires=IS_NOT_EMPTY() ,writable=False, comment="*"),
>     Field( 'payment_type'    , 
> requires=IS_IN_SET(['INVOICE','ACTIVITY']),writable=False,),
>     Field( 'invoice_ref'     , 'reference invoice' , default=None , 
> writable=False,),
>     Field( 'activity_ref'    , 'reference task' , default=None,  
> writable=False,),
>     Field( 'method'          , requires=IS_IN_SET( PAYMENT_METHODS )),
>     Field( 'notes'           , 'text',default=None ),
>     format='%(received_date)s %(amount)s ')
>
>
>
> Function definition...
>
>
> def view_payment():
>     payment_id=request.args(0)
>     payment=(db.payment[payment_id]) or redirect(error_page)
>
>     # print info for sanity check
>     p = payment
>     print type(p)
>     print "<view_payment> id:%s  amount:%s  type:%s  inv ref:%s  task_ref:%s" 
> %(p.id , p.amount, p.payment_type , p.invoice_ref, p.activity_ref)
>
>     form=SQLFORM(db.payment,payment)
>     return dict(form=form)
>
>
>
> Called with
> .../default/view_payment/1
>
>
> print output shows the code is retrieving a valid row type and record with 
> id=1... 
> <class 'pydal.objects.Row'>
> <view_payment> id:1  amount:80.00  type:INVOICE  inv ref:1  task_ref:None
>
>
>
> I have tried as much as I can think of including 
>
>    - dropped/rebuilt the payment table
>    - recreated the record manually
>    - replaced request.args(0) with physical 1
>    - replaced SQLFORM with crud.update(...) 
>    - removed the writable=False restrictions  
>    
>
>
> The record does exist as shown here in SQLite
>
>
> <https://lh3.googleusercontent.com/-nJMpBGRB8ac/V-01kiWwB6I/AAAAAAAAAIE/IfpGByy4YrEncNnczZO8NxajwLl1q2iVgCLcB/s1600/SQLFORM%2Bkey%2Berror.png>
>
>
>
>
>
>
> When I remove the record/id from the SQLFORM call 
>
>
> form=SQLFORM(db.payment)
> return dict(form=form)
>
> It opens a create form as expected 
>
>
>
> It just won't accept an id parameter?
>   
> Can anyone see an obvious problem with the code? 
>
> Many thanks 
> Peter
>
>
>
>
>
>
>
>
>
>
>

-- 
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 web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to