Advertisement
Guest User

Untitled

a guest
Feb 21st, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.13 KB | None | 0 0
  1. ####### moonbay.py
  2. import jinja2
  3. import os
  4. import webapp2
  5. from google.appengine.ext import db
  6.  
  7. template_dir=os.path.join(os.path.dirname(__file__),'templates')
  8. jinja_env=jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir),autoescape=True)
  9.  
  10. def blog_key(name='default'):
  11. return db.Key.from_path('Post',name)
  12.  
  13. class Handler(webapp2.RequestHandler):
  14. def render_str(self,template,**param):
  15. t=jinja_env.get_template(template)
  16. return t.render(**param)
  17. def render(self,template,**kw):
  18. self.response.write(self.render_str(template,**kw))
  19.  
  20. class Post(db.Model,Handler):
  21. title=db.StringProperty(required=True)
  22. content=db.TextProperty(required=True)
  23. created=db.DateTimeProperty(auto_now_add=True)
  24. last_modified=db.DateTimeProperty(auto_now=True)
  25. def render(self):
  26. self._render_text=self.content.replace('\n','<br>')
  27. href = '/blog/'+str(self.key().id())
  28. return self.render_str('u4-post.html',p=self,href=href)
  29.  
  30. #all posts
  31. class BlogFront(Handler):
  32. def get(self):
  33. posts=db.GqlQuery('select * from Post order by created Desc limit 10')
  34. self.render('u4-contents.html',posts=posts)
  35.  
  36. #single page for a post
  37. class PostPage(Handler):
  38. def get(self,post_id):
  39. key=db.Key.from_path('Post',int(post_id),parent=blog_key())
  40. post=db.get(key)
  41. if not post:
  42. self.error(404)
  43. return
  44. else:
  45. self.render('u4-permalink.html',post=post,parent=blog_key())
  46.  
  47. #new submit page
  48. class NewPost(Handler):
  49. def get(self):
  50. self.render('u4-newpost.html')
  51. def post(self):
  52. title=self.request.get('title')
  53. content=self.request.get('content')
  54. if title and content:
  55. p=Post(parent=blog_key(),title=title,content=content)
  56. p.put()
  57. self.redirect('/blog/%s'%str(p.key().id()))
  58. else:
  59. error='Please enter valid title and content'
  60. self.render('u4-newpost.html',title=title,content=content,error=error)
  61.  
  62. app=webapp2.WSGIApplication([
  63. ('/blog/?',BlogFront),
  64. ('/blog/([0-9]+)',PostPage),
  65. ('/blog/newpost',NewPost),
  66. ])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement