[orm-devel] Error in datasource.py ?

Mike Watkins mw@mikewatkins.net
Thu, 21 Nov 2002 08:08:52 -0800


Line 382 in datasource.py appears to be missing a parameter. Somewhere, I 
can't remember where I stumbled across this, it appeared to me that "self" 
needed to be the *second* parameter there. Perhaps it will jump out at you.

With that line changed as follows:
v.append("%s=%s" % (columnName, typ.format(value, self)))

Works... but I'm not 100% sure the .format() method is actually expecting 
those two parameters.



  c:\dev\parlez\cms\lib\session.py in 
__setitem__(self=<cms.lib.session.SessionMapping instance at 0x0062FF38>, 
session_id='3f0ea45f7bef3c3b', session=<ParlezSession at 70c528: 
   198             if session.user.id:
   199                 p = ds.select(beans.Person, id = 
   200                 ds_session.person_id = p
p undefined, ds = <orm.adapters.psql.datasource.datasource instance at 
0x00641D60>, ds.select = <bound method datasource.select of 
<orm.adapters.psql.datasource.datasource instance at 0x00641D60>>, global 
beans = <module 'cms.lib.beans' from '/dev/parlez\cms\lib\beans.pyc'>, 
beans.Person = <class cms.lib.beans.Person at 0x0062DEF0>, id undefined, 
session = <ParlezSession at 70c528: 3f0ea45f7bef3c3b>, session.user = 
<cms.lib.session.UserAttributes instance at 0x0070C3F0>, session.user.id = 
1, ).fetchone undefined

  C:\Python22\lib\site-packages\orm\datasource.py in 
select(self=<orm.adapters.psql.datasource.datasource instance at 
0x00641D60>, dbclass=<class cms.lib.beans.Person at 0x0062DEF0>, 
conjunction='and', **conds={'id': 1})
   380                 else:
   381                     typ = dbclass.columns[columnName]
   382                     v.append("%s=%s" % (columnName, typ.format(value)))
   384             where = string.join(v, " %s " % conjunction)
v = [], v.append = <built-in method append of list object at 0x00734D98>, 
columnName = 'id', typ = <orm.adapters.psql.columns.serial instance at 
0x0062D1D0>, typ.format = <bound method serial.format of 
<orm.adapters.psql.columns.serial instance at 0x0062D1D0>>, value = 1

TypeError: format() takes exactly 3 arguments (2 given)
       __doc__ = 'Inappropriate argument type.'
       __getitem__ = <bound method TypeError.__getitem__ of 
<exceptions.TypeError instance at 0x0073BC98>>
       __init__ = <bound method TypeError.__init__ of <exceptions.TypeError 
instance at 0x0073BC98>>
       __module__ = 'exceptions'
       __str__ = <bound method TypeError.__str__ of <exceptions.TypeError 
instance at 0x0073BC98>>
       args = ('format() takes exactly 3 arguments (2 given)',)