import datetime; now=datetime.datetime.today() db.define_table('Genre', SQLField('Name','string'))
db.Genre.Name.requires=IS_NOT_IN_DB(db,'Genre.Name') db.define_table('Songs', SQLField('Name','string',requires=IS_NOT_EMPTY()), SQLField('file','upload',requires=IS_NOT_EMPTY()), SQLField('date','datetime'), SQLField('download','integer',default=0,readable=False,writable=False), SQLField('genre',db.Genre), SQLField('usr',db.auth_user), SQLField('album','string',default='Unknown',requires=IS_NOT_EMPTY()), SQLField('artist','string',default='Unknown',requires=IS_NOT_EMPTY()), SQLField('rating','double',default=0,readable=False,writable=False), SQLField('rater','integer',default=0,readable=False,writable=False), SQLField('play','integer',default=0,readable=False,writable=False)) db.Songs.genre.requires=IS_IN_DB(db,'Genre.id','%(Name)s') db.Songs.usr.requires=IS_IN_DB(db,'auth_user.id','%(first_name)s') db.Songs.date.default=now db.Songs.date.readable=False db.Songs.date.writable=False i hav created the above table which doesn't shows any error until i put a data in db.Songs.After inserting the data,if i go to database administration n open db.Songs,it shows: Error traceback 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Traceback (most recent call last): File "/home/karan/Desktop/web2py/gluon/restricted.py", line 186, in restricted exec ccode in environment File "/home/karan/Desktop/web2py/applications/Music_Library/views/ appadmin.html", line 160, in <module> <strong>{{="%02d" % ram['oldest'][0]}}</strong> hours File "/home/karan/Desktop/web2py/gluon/sqlhtml.py", line 1175, in __init__ r = field.represent(r) File "/home/karan/Desktop/web2py/gluon/sql.py", line 498, in <lambda> field.represent = lambda id, r=referenced, f=ff: f(r,id) File "/home/karan/Desktop/web2py/gluon/sql.py", line 472, in ff return r._format(row) TypeError: 'NoneType' object is not callable Error snapshot Detailed traceback description * Exception: <type 'exceptions.TypeError'>('NoneType' object is not callable) Exception instance attributes o __setattr__: <method-wrapper '__setattr__' of exceptions.TypeError object> o __reduce_ex__: <built-in method __reduce_ex__ of exceptions.TypeError object> o __getslice__: <method-wrapper '__getslice__' of exceptions.TypeError object> o __getitem__: <method-wrapper '__getitem__' of exceptions.TypeError object> o __setstate__: <built-in method __setstate__ of exceptions.TypeError object> o __getattribute__: <method-wrapper '__getattribute__' of exceptions.TypeError object> o __str__: <method-wrapper '__str__' of exceptions.TypeError object> o args: ("'NoneType' object is not callable",) o __reduce__: <built-in method __reduce__ of exceptions.TypeError object> o __format__: <built-in method __format__ of exceptions.TypeError object> o __class__: <type 'exceptions.TypeError'> o __dict__: {} o __delattr__: <method-wrapper '__delattr__' of exceptions.TypeError object> o __subclasshook__: <built-in method __subclasshook__ of type object> o __repr__: <method-wrapper '__repr__' of exceptions.TypeError object> o __init__: <method-wrapper '__init__' of exceptions.TypeError object> o __hash__: <method-wrapper '__hash__' of exceptions.TypeError object> o __sizeof__: <built-in method __sizeof__ of exceptions.TypeError object> o __doc__: 'Inappropriate argument type.' o __unicode__: <built-in method __unicode__ of exceptions.TypeError object> o __new__: <built-in method __new__ of type object> * Python 2.6.5: /usr/bin/python File /home/karan/Desktop/web2py/gluon/restricted.py in restricted at line 186 [ code | arguments | variables ] Function argument list: (code='response.write(\'<!DOCTYPE html PUBLIC "-//W3C//D...n </div>\\n </body>\\n</html>\\n\', escape=False)', environment={'A': <class 'gluon.html.A'>, 'Auth': <class 'gluon.tools.Auth'>, 'B': <class 'gluon.html.B'>, 'BEAUTIFY': <class 'gluon.html.BEAUTIFY'>, 'BODY': <class 'gluon.html.BODY'>, 'BR': <class 'gluon.html.BR'>, 'CENTER': <class 'gluon.html.CENTER'>, 'CLEANUP': <class 'gluon.validators.CLEANUP'>, 'CODE': <class 'gluon.html.CODE'>, 'CRYPT': <class 'gluon.validators.CRYPT'>, ...}, layer='/home/karan/Desktop/web2py/applications/Music_Library/views/ appadmin.html') 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. if type(code) == types.CodeType: ccode = code else: ccode = compile2(code,layer) exec ccode in environment except HTTP: raise except Exception: # XXX Show exception in Wing IDE if running in debugger * environment: {'A': <class 'gluon.html.A'>, 'Auth': <class 'gluon.tools.Auth'>, 'B': <class 'gluon.html.B'>, 'BEAUTIFY': <class 'gluon.html.BEAUTIFY'>, 'BODY': <class 'gluon.html.BODY'>, 'BR': <class 'gluon.html.BR'>, 'CENTER': <class 'gluon.html.CENTER'>, 'CLEANUP': <class 'gluon.validators.CLEANUP'>, 'CODE': <class 'gluon.html.CODE'>, 'CRYPT': <class 'gluon.validators.CRYPT'>, ...} * ccode: <code object <module> at 0x4057eb8, file "/home/...tions/ Music_Library/views/appadmin.html", line 1> File /home/karan/Desktop/web2py/applications/Music_Library/views/ appadmin.html in <module> at line 160 [ code | arguments | variables ] Function argument list: () 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. response.write(' ]', escape=False) pass response.write(' \n ', escape=False) if rows: response.write('\n <div style="overflow: auto;" width="80%">\n ', escape=False) linkto=URL(r=request,f='update',args=request.args[0]) response.write('\n ', escape=False) upload=URL(r=request,f='download',args=request.args[0]) response.write(' \n ', escape=False) response.write(SQLTABLE(rows,linkto,upload,orderby=True,_class='sortable')) response.write('\n </div>\n ', escape=False) pass response.write('\n <br/><br/><h2>', escape=False) response.write(T("Import/Export")) response.write('</h2><br/>\n [ <a href="', escape=False) response.write(URL(r=request,f='csv',args=request.args[0],vars=dict(query=query))) response.write('">', escape=False) response.write(T("export as csv file")) response.write('</a> ]\n ', escape=False) if table: * hours: undefined * strong: undefined * ram: undefined File /home/karan/Desktop/web2py/gluon/sqlhtml.py in __init__ at line 1175 [ code | arguments | variables ] Function argument list: (self=<gluon.sqlhtml.SQLTABLE object>, sqlrows=<gluon.sql.Rows object>, linkto='/Music_Library/appadmin/ update/db', upload='/Music_Library/appadmin/download/db', orderby=True, headers={}, truncate=16, columns=['Songs.id', 'Songs.Name', 'Songs.file', 'Songs.date', 'Songs.download', 'Songs.genre', 'Songs.usr', 'Songs.album', 'Songs.artist', 'Songs.rating', 'Songs.rater', 'Songs.play'], th_link='', **attributes={'_class': 'sortable'}) 1170. 1171. 1172. 1173. 1174. 1175. 1176. 1177. 1178. 1179. r = record[fieldname] else: raise SyntaxError, 'something wrong in Rows object' r_old = r if field.represent: r = field.represent(r) elif field.type == 'blob' and r: r = 'DATA' elif field.type == 'upload': if upload and r: * field: <gluon.sql.Field object> * r: 1 * field.represent: <function <lambda>> File /home/karan/Desktop/web2py/gluon/sql.py in <lambda> at line 498 [ code | arguments | variables ] Function argument list: (id=1, r=<Table {'ALL': <gluon.sql.SQLALL object at 0x406...[], 'id': <gluon.sql.Field object at 0x4066310>}>, f=<function ff>) 493. 494. 495. 496. 497. 498. 499. 500. 501. 502. requires.append(validators.IS_DATETIME()) elif field._db and field_type.startswith('reference') and \ field_type.find('.')<0 and \ field_type[10:] in field._db.tables: referenced = field._db[field_type[10:]] field.represent = lambda id, r=referenced, f=ff: f(r,id) if hasattr(referenced,'_format') and referenced._format: requires = validators.IS_IN_DB(field._db,referenced.id, referenced._format) if field.unique: * referenced: undefined * f: <function ff> * field: undefined * r: <Table {'ALL': <gluon.sql.SQLALL object at 0x406...[], 'id': <gluon.sql.Field object at 0x4066310>}> * ff: undefined * id: 1 File /home/karan/Desktop/web2py/gluon/sql.py in ff at line 472 [ code | arguments | variables ] Function argument list: (r=<Table {'ALL': <gluon.sql.SQLALL object at 0x406...[], 'id': <gluon.sql.Field object at 0x4066310>}>, id=1) 467. 468. 469. 470. 471. 472. 473. 474. 475. 476. if not row: return id elif hasattr(r,'_format') and isinstance(r._format,str): return r._format % row elif hasattr(r,'_format'): return r._format(row) else: return id if field_type == 'string': * r: <Table {'ALL': <gluon.sql.SQLALL object at 0x406...[], 'id': <gluon.sql.Field object at 0x4066310>}> * r._format: None * row: <Row {'update_record': <function <lambda> at 0x4...>, 'Songs': <gluon.sql.Set object at 0x3d5f590>}> Moreover,it is giving some other error msg on a ubuntu 10.04 32bit(mine is 64bit). plz help