Created
October 11, 2012 12:05
-
-
Save kgleeson/3871889 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import os | |
| import datetime | |
| import webapp2 | |
| import jinja2 | |
| 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 render_str(template, **parms): | |
| templ = jinja_env.get_template(template) | |
| return templ.render(parms) | |
| class BaseHandler(webapp2.RequestHandler): | |
| def render(self, template,**kw): | |
| self.response.out.write(render_str(template, **kw)) | |
| def write(self, *a, **kw): | |
| self.response.out.write(*a, **kw) | |
| class MainPage(BaseHandler): | |
| def get(self): | |
| posts = Post.all() | |
| posts.order('-posted') | |
| posts.run() | |
| self.render('index.html', posts=posts) | |
| class Post(db.Model): | |
| subject = db.StringProperty(required = True) | |
| content = db.TextProperty(required = True) | |
| posted = db.DateTimeProperty() | |
| class BlogPost(BaseHandler): | |
| def get(self, post_id): | |
| post = Post.get_by_id(int(post_id)) | |
| self.render('post.html', post = post) | |
| class NewPost(BaseHandler): | |
| def get(self): | |
| self.render('newpost.html') | |
| def post(self): | |
| subject = self.request.get('subject') | |
| content = self.request.get('content') | |
| params = dict(subject = subject, content = content ) | |
| if not (subject or content): | |
| params['error'] = 'something is wrong' | |
| self.render('newpost.html', **params) | |
| else: | |
| posted = datetime.datetime.now() | |
| post = Post(subject=subject, | |
| content=content, | |
| posted = posted) | |
| post.put() | |
| post_id = post.key().id() | |
| self.redirect('/blog/%s'%post_id) | |
| app = webapp2.WSGIApplication([('/blog', MainPage), | |
| ('/blog/newpost', NewPost), | |
| (r'/blog/(\d+)', BlogPost)]) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment