Skip to content

Instantly share code, notes, and snippets.

@kgleeson
Created October 11, 2012 12:05
Show Gist options
  • Select an option

  • Save kgleeson/3871889 to your computer and use it in GitHub Desktop.

Select an option

Save kgleeson/3871889 to your computer and use it in GitHub Desktop.
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