Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ####### moonbay.py
- import jinja2
- import os
- import webapp2
- from google.appengine.ext import db
- template_dir=os.path.join(os.path.dirname(__file__),'templates')
- jinja_env=jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir),autoescape=True)
- def blog_key(name='default'):
- return db.Key.from_path('Post',name)
- class Handler(webapp2.RequestHandler):
- def render_str(self,template,**param):
- t=jinja_env.get_template(template)
- return t.render(**param)
- def render(self,template,**kw):
- self.response.write(self.render_str(template,**kw))
- class Post(db.Model,Handler):
- title=db.StringProperty(required=True)
- content=db.TextProperty(required=True)
- created=db.DateTimeProperty(auto_now_add=True)
- last_modified=db.DateTimeProperty(auto_now=True)
- def render(self):
- self._render_text=self.content.replace('\n','<br>')
- href = '/blog/'+str(self.key().id())
- return self.render_str('u4-post.html',p=self,href=href)
- #all posts
- class BlogFront(Handler):
- def get(self):
- posts=db.GqlQuery('select * from Post order by created Desc limit 10')
- self.render('u4-contents.html',posts=posts)
- #single page for a post
- class PostPage(Handler):
- def get(self,post_id):
- key=db.Key.from_path('Post',int(post_id),parent=blog_key())
- post=db.get(key)
- if not post:
- self.error(404)
- return
- else:
- self.render('u4-permalink.html',post=post,parent=blog_key())
- #new submit page
- class NewPost(Handler):
- def get(self):
- self.render('u4-newpost.html')
- def post(self):
- title=self.request.get('title')
- content=self.request.get('content')
- if title and content:
- p=Post(parent=blog_key(),title=title,content=content)
- p.put()
- self.redirect('/blog/%s'%str(p.key().id()))
- else:
- error='Please enter valid title and content'
- self.render('u4-newpost.html',title=title,content=content,error=error)
- app=webapp2.WSGIApplication([
- ('/blog/?',BlogFront),
- ('/blog/([0-9]+)',PostPage),
- ('/blog/newpost',NewPost),
- ])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement