remove use of 1.6.4-compatible 'wrapper'
[gae-samples.git] / guestbook / guestbook7_memcache.py
blob9cfe8cb9d19ae27529b734c3c6f72168f7729ec8
1 import cgi
2 import os
3 import pickle
5 from google.appengine.api import users
6 from google.appengine.ext import webapp
7 from google.appengine.ext.webapp.util import run_wsgi_app
8 from google.appengine.ext import db
9 from google.appengine.ext.webapp import template
10 from google.appengine.api import memcache
12 MEMCACHE_GREETINGS = 'greetings'
14 class Greeting(db.Model):
15 author = db.UserProperty()
16 content = db.StringProperty(multiline=True)
17 date = db.DateTimeProperty(auto_now_add=True)
19 class MainPage(webapp.RequestHandler):
20 def get(self):
21 greetingsString = memcache.get(MEMCACHE_GREETINGS)
22 if greetingsString is not None:
23 greetings = pickle.loads(greetingsString)
24 else:
25 greetings_query = Greeting.all().order('-date')
26 greetings = greetings_query.fetch(10)
27 if not memcache.set(MEMCACHE_GREETINGS, pickle.dumps(greetings)):
28 logging.error("Memcache set failed.")
30 if users.get_current_user():
31 url = users.create_logout_url(self.request.uri)
32 url_linktext = 'Logout'
33 else:
34 url = users.create_login_url(self.request.uri)
35 url_linktext = 'Login'
37 template_values = {
38 'greetings': greetings,
39 'url': url,
40 'url_linktext': url_linktext,
43 path = os.path.join(os.path.dirname(__file__), 'index.html')
44 self.response.out.write(template.render(path, template_values))
47 class Guestbook(webapp.RequestHandler):
48 def post(self):
49 greeting = Greeting()
51 if users.get_current_user():
52 greeting.author = users.get_current_user()
54 greeting.content = self.request.get('content')
55 greeting.put()
56 memcache.delete(MEMCACHE_GREETINGS)
57 self.redirect('/')
59 application = webapp.WSGIApplication(
60 [('/', MainPage),
61 ('/sign', Guestbook)],
62 debug=True)
64 def main():
65 run_wsgi_app(application)
67 if __name__ == "__main__":
68 main()