it gives me an error :
web2py™ administrative interface site edit about errors versioning logout help ERROR TICKET FOR "AZEZ_BLOGS" TICKET ID 127.0.0.1.2011-07-26.19-44-44.cf0e1a41-6450-4144-bb1b-b8aad512a50a VERSION web2py™ Version 1.96.4 (2011-06-07 21:08:15) Python Python 2.5.4: C:\Users\Hassan\Desktop\web2py\web2py.exe TRACEBACK 1. 2. 3. 4. 5. 6. 7. 8. Traceback (most recent call last): File "gluon/restricted.py", line 192, in restricted File "C:/Users/Hassan/Desktop/web2py/applications/Azez_blogs/ controllers/default.py", line 124, in <module> File "gluon/globals.py", line 137, in <lambda> File "C:/Users/Hassan/Desktop/web2py/applications/Azez_blogs/ controllers/default.py", line 34, in index File "C:/Users/Hassan/Desktop/web2py/applications/Azez_blogs/ controllers/default.py", line 15, in getpostsandcomments NameError: global name 'image' is not defined ERROR SNAPSHOT <type 'exceptions.NameError'>(global name 'image' is not defined) inspect attributes Frames File C:\Users\Hassan\Desktop\web2py\gluon\restricted.py in restricted at line 192 code arguments variables File C:\Users\Hassan\Desktop\web2py\applications\Azez_blogs\controllers \default.py in <module> at line 124 code arguments variables File C:\Users\Hassan\Desktop\web2py\gluon\globals.py in <lambda> at line 137 code arguments variables File C:\Users\Hassan\Desktop\web2py\applications\Azez_blogs\controllers \default.py in index at line 34 code arguments variables File C:\Users\Hassan\Desktop\web2py\applications\Azez_blogs\controllers \default.py in getpostsandcomments at line 15 code arguments variables Function argument list () Code listing 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. blogpostss= db().select(db.blogposts.ALL, orderby=~db.blogposts.datetime) blogposts_numcomments = db().select(db.blogposts.ALL, orderby=~db.blogposts.numcomments|~db.blogposts.datetime) commentsnposts = db(db.blogcomments.blogpost_id == db.blogposts.id) comments = commentsnposts.select(db.blogcomments.author, db.blogcomments.blogpost_id, db.blogposts.title, orderby=~db.blogcomments.datetime) images=db(image.blog_id==blogposts.id).select(db.image.ALL) youtube=db().select(db.youtube.ALL) vimo=db().select(db.vimo.ALL) return dict(blogposts=blogposts, blogposts_numcomments=blogposts_numcomments, comments=comments,images=images,youtube=youtube,vimo=vimo) Variables Context locals request session response IN FILE: C:\USERS\HASSAN\DESKTOP\WEB2PY\APPLICATIONS\AZEZ_BLOGS \CONTROLLERS/DEFAULT.PY 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. # -*- coding: utf-8 -*- # this file is released under public domain and you can use without limitations ######################################################################### import datetime #db.youtube.blog_id == db.blogposts.id #db.vimo.blog_id == db.blogposts.id #db.image.blog_id == db.blogposts.id def getpostsandcomments(): blogpostss= db().select(db.blogposts.ALL, orderby=~db.blogposts.datetime) blogposts_numcomments = db().select(db.blogposts.ALL, orderby=~db.blogposts.numcomments|~db.blogposts.datetime) commentsnposts = db(db.blogcomments.blogpost_id == db.blogposts.id) comments = commentsnposts.select(db.blogcomments.author, db.blogcomments.blogpost_id, db.blogposts.title, orderby=~db.blogcomments.datetime) images=db(image.blog_id==blogposts.id).select(db.image.ALL) youtube=db().select(db.youtube.ALL) vimo=db().select(db.vimo.ALL) return dict(blogposts=blogposts, blogposts_numcomments=blogposts_numcomments, comments=comments,images=images,youtube=youtube,vimo=vimo) ######################################################################### def createblogpost(): myd = getpostsandcomments() form=SQLFORM(db.blogposts,fields=['title','post','author','video','audio']) if form.accepts(request.vars,session): response.flash='new blogpost inserted' redirect('/' + request.application + "/default/index") myd['form'] = form return myd def index(): return getpostsandcomments() def createblogpost(): myd = getpostsandcomments() form=SQLFORM(db.blogposts,fields=['title','post','author']) if form.accepts(request.vars,session): response.flash='new blogpost inserted' redirect('/' + request.application + "/default/index") myd['form'] = form return myd def showblogpost(): images=db(db.image.blog_id == db.blogposts.id).select(db.image.ALL) youtube=db(db.youtube.blog_id == db.blogposts.id).select(db.youtube.ALL) vimo=db(db.vimo.blog_id == db.blogposts.id).select(db.vimo.ALL) myd = getpostsandcomments() blogid = request.args[0] singleblogpost = db(db.blogposts.id == blogid).select()[0] singleblogpost_comments = db(db.blogcomments.blogpost_id == blogid).select(orderby=~db.blogcomments.datetime) db.blogcomments.blogpost_id.default=singleblogpost.id form=SQLFORM(db.blogcomments,fields=['author', 'email', 'comment'],labels={'author':'Your Name', 'email':'Your email address', 'comment':'Comment'}) if form.accepts(request.vars,session): blogpostupdate=db(db.blogposts.id==blogid).select() if len(blogpostupdate)>0: blogpostupdate[0].update_record(numcomments=blogpostupdate[0].numcomments + 1) redirect('/' + request.application + "/default/showblogpost/" + str(singleblogpost.id) + "#Reader_Comments") myd['form'] = form myd['singleblogpost'] = singleblogpost myd['singleblogpost_comments'] = singleblogpost_comments return myd return dict(images=images,youtube=youtube,vimo=vimo) def user(): """ exposes: http://..../[app]/default/user/login http://..../[app]/default/user/logout http://..../[app]/default/user/register http://..../[app]/default/user/profile http://..../[app]/default/user/retrieve_password http://..../[app]/default/user/change_password use @auth.requires_login() @auth.requires_membership('group name') @auth.requires_permission('read','table name',record_id) to decorate functions that need access control """ return dict(form=auth()) def download(): """ allows downloading of uploaded files http://..../[app]/default/download/[filename] """ return response.download(request,db) def call(): """ exposes services. for example: http://..../[app]/default/call/jsonrpc decorate with @services.jsonrpc the functions to expose supports xml, json, xmlrpc, jsonrpc, amfrpc, rss, csv """ return service() @auth.requires_signature() def data(): """ http://..../[app]/default/data/tables http://..../[app]/default/data/create/[table] http://..../[app]/default/data/read/[table]/[id] http://..../[app]/default/data/update/[table]/[id] http://..../[app]/default/data/delete/[table]/[id[ http://..../[app]/default/data/select/[table] http://..../[app]/default/data/search/[table] but URLs bust be signed, i.e. linked with A('table',_href=URL('data/tables',user_signature=True)) or with the signed load operator LOAD('default','data.load',args='tables',ajax=True,user_signature=True) """ return dict(form=crud()) response._vars=response._caller(index) Powered by web2py™ created by Massimo Di Pierro ©2007-2010 - Admin language