Guest User

Untitled

a guest
Oct 26th, 2017
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.83 KB | None | 0 0
  1. """ Basic blog using webpy 0.3 """
  2. import web
  3. import model
  4.  
  5. from web.contrib.auth import DBAuth
  6.  
  7.  
  8. ### Url mappings
  9.  
  10.  
  11.  
  12. urls = (
  13.     '/', 'Index',
  14.     '/view/(\d+)', 'View',
  15.     '/new', 'New',
  16.     '/delete/(\d+)', 'Delete',
  17.     '/edit/(\d+)', 'Edit',
  18.     '/logout', 'Logout',
  19.     '/vote/(\d+)/(\d+)', 'Vote',
  20.     '/deletevote/(\d+)', 'Deletevote',
  21.     '/addaccount', 'AddAccount',
  22.     '/jsonpdemo', 'JsonpDemo',
  23. )
  24.  
  25.  
  26. ### Templates
  27.  
  28. t_globals = {
  29.     'datestr': web.datestr
  30. }
  31. render = web.template.render('/usr/www/nathantresch/templates/', globals=t_globals)
  32.  
  33. app = web.application(urls, globals(),autoreload=False)
  34. main = app.wsgifunc()
  35.  
  36. db = web.database(dbn='mysql', db='blog', user='spectre', pw='rty133p')
  37. mysession = web.session.Session(app, web.session.DiskStore('/usr/www/nathantresch/sessions'))
  38.  
  39. settings = dict(
  40.     template_login = render.login,
  41.     template_reset_token = render.reset_token,
  42.     template_reset_email = render.reset_email,
  43.     template_reset_change = render.reset_change,
  44.     #url_reset_token = '/appcode.py/password_reset',
  45.     #url_reset_change = '/appcode.py/password_reset',
  46. )
  47.  
  48. auth = DBAuth(app, db, mysession, **settings)
  49.  
  50. t_globals = {
  51.     'datestr': web.datestr,
  52.     'auth':    auth,
  53.     'model':   model
  54. }
  55.  
  56. render = web.template.render('/usr/www/nathantresch/templates/', base='base', globals=t_globals)
  57. renderInsert = web.template.render('/usr/www/nathantresch/templates/', globals=t_globals)
  58.  
  59. class Index:
  60.     def GET(self):
  61.         """ Show page """
  62.         posts = model.get_posts()
  63.         return render.index(posts,auth.getUser())
  64.  
  65.  
  66. class View:
  67.     form = web.form.Form(
  68.         web.form.Textbox('title', web.form.notnull,
  69.             size=30,
  70.             description="Comment title:"),
  71.         web.form.Textarea('content', web.form.notnull,
  72.             rows=30, cols=80,
  73.             description="Comment content:"),
  74.         web.form.Button('Post Comment'),
  75.     )
  76.  
  77.     def GET(self, id):
  78.         """ View single post """
  79.         post = model.get_post(int(id))
  80.         user = model.getUserById(post.user_id)
  81.         comments = model.get_comments(int(id))
  82.         renderedComments = ""
  83.         if comments:
  84.             renderedComments = renderInsert.comments(comments,model)
  85.         votes = model.get_votes(id)
  86.         lUser = auth.getUser()
  87.         if lUser:
  88.             hasUserVoted = model.hasUserVoted(auth.getUser().user_id,post.id)
  89.         else:
  90.             hasUserVoted = False
  91.         return render.view(post,user,renderedComments,self.form,hasUserVoted,votes)
  92.     def POST(self,refId):
  93.         form = self.form
  94.  
  95.         if not form.validates():
  96.             return render.view(form)
  97.         model.new_post(form.d.title, form.d.content, auth.getUser().user_id, refId)
  98.         raise web.seeother('/')
  99.  
  100. class New:
  101.     form = web.form.Form(
  102.         web.form.Textbox('title', web.form.notnull,
  103.             size=30,
  104.             description="Post title:"),
  105.         web.form.Textarea('content', web.form.notnull,
  106.             rows=30, cols=80,
  107.             description="Post content:"),
  108.         web.form.Button('Post entry'),
  109.     )
  110.     title="New Post"
  111.     @auth.protected()
  112.     def GET(self):
  113.         form = self.form()
  114.         return render.form(form,self.title)
  115.  
  116.     def POST(self):
  117.         form = self.form()
  118.  
  119.         if not form.validates():
  120.             return render.form(form,self.title)
  121.         model.new_post(form.d.title, form.d.content, auth.getUser().user_id)
  122.         raise web.seeother('/')
  123.  
  124. class AddAccount:
  125.     form = web.form.Form(
  126.         web.form.Textbox('username', web.form.notnull,
  127.             size=30,
  128.             description="User Name:"),
  129.         web.form.Textbox('email', web.form.notnull,
  130.             size=30,
  131.             description="Email:"),
  132.  
  133.         web.form.Password('password', web.form.notnull,
  134.             size=30,
  135.             description="Password:"),
  136.         web.form.Button('Submit'),
  137.     )
  138.     title="Add Account"
  139.     def GET(self):
  140.         form = self.form()
  141.         return render.form(form,self.title)
  142.     def POST(self):
  143.         form = self.form()
  144.  
  145.         if not form.validates():
  146.             return render.form(form,self.title)
  147.         auth.createUser(form.d.username, password=form.d.password, user_email=form.d.email, perms=[])
  148.  
  149.         raise web.seeother('/')
  150.  
  151. class Delete:
  152.     @auth.protected()
  153.     def POST(self, id):
  154.         thisPost = model.get_post(int(id))
  155.         thisUser = auth.getUser()
  156.         if (thisPost.user_id == thisUser.user_id):
  157.              model.del_post(int(id))
  158.         raise web.seeother('/')
  159.  
  160. class JsonpDemo:
  161.     def GET(self):
  162.         return render.jsonpdemo()
  163.  
  164. class Edit:
  165.     @auth.protected()
  166.     def GET(self, id):
  167.         post = model.get_post(int(id))
  168.         form = New.form()
  169.         form.fill(post)
  170.         return render.edit(post,form)
  171.  
  172.  
  173.     def POST(self, id):
  174.         form = New.form()
  175.         post = model.get_post(int(id))
  176.  
  177.         if not form.validates():
  178.             return render.edit(post, form)
  179.         if (post.user_id == auth.getUser().user_id):
  180.              model.update_post(int(id), form.d.title, form.d.content)
  181.         raise web.seeother('/')
  182.  
  183. class Vote:
  184.     @auth.protected()
  185.     def GET(self, id, polarity):
  186.         if not model.hasUserVoted(auth.getUser().user_id,id):
  187.             model.vote(polarity,auth.getUser().user_id,id)
  188.         origPost = model.getOrigional(id)
  189.         raise web.seeother('/view/'+str(origPost))
  190.  
  191. class Deletevote:
  192.     @auth.protected()
  193.     def GET(self, id):
  194.         if model.hasUserVoted(auth.getUser().user_id,id):
  195.             model.delete_vote(auth.getUser().user_id,id)
  196.         origPost = model.getOrigional(id)
  197.         raise web.seeother('/view/'+str(origPost))
  198.  
  199. class Logout:
  200.     def GET(self):
  201.         auth.logout()
  202.         raise web.seeother('/')
  203.  
  204. if __name__ == '__main__':
  205.     app.run()
Add Comment
Please, Sign In to add comment