set guestbook StringProperty to be indexed=False
[gae-samples.git] / guestbook / guestbook8_logging.py
blobd1b7f3a8921257d9083dd3f697d724d9b8b43296
1 import cgi
2 import os
3 import pickle
4 import logging
6 from google.appengine.api import users
7 from google.appengine.ext import webapp
8 from google.appengine.ext.webapp.util import run_wsgi_app
9 from google.appengine.ext import db
10 from google.appengine.ext.webapp import template
11 from google.appengine.api import memcache
13 MEMCACHE_GREETINGS = 'greetings'
15 class Greeting(db.Model):
16 author = db.UserProperty()
17 content = db.StringProperty(multiline=True)
18 date = db.DateTimeProperty(auto_now_add=True)
20 class MainPage(webapp.RequestHandler):
21 def get(self):
22 logging.debug("In MainPage handler");
23 greetingsString = memcache.get(MEMCACHE_GREETINGS)
24 if greetingsString is not None:
25 logging.info("Retrieved greetings from memcache")
26 greetings = pickle.loads(greetingsString)
27 else:
28 logging.info("No greetings in memcache, re-querying datastore")
29 greetings_query = Greeting.all().order('-date')
30 greetings = greetings_query.fetch(10)
31 if not memcache.set(MEMCACHE_GREETINGS, pickle.dumps(greetings)):
32 logging.error("Memcache set failed.")
34 if users.get_current_user():
35 url = users.create_logout_url(self.request.uri)
36 url_linktext = 'Logout'
37 else:
38 url = users.create_login_url(self.request.uri)
39 url_linktext = 'Login'
41 template_values = {
42 'greetings': greetings,
43 'url': url,
44 'url_linktext': url_linktext,
47 path = os.path.join(os.path.dirname(__file__), 'index.html')
48 self.response.out.write(template.render(path, template_values))
51 class Guestbook(webapp.RequestHandler):
52 def post(self):
53 greeting = Greeting()
55 if users.get_current_user():
56 greeting.author = users.get_current_user()
58 greeting.content = self.request.get('content')
59 greeting.put()
60 memcache.delete(MEMCACHE_GREETINGS)
61 self.redirect('/')
63 application = webapp.WSGIApplication(
64 [('/', MainPage),
65 ('/sign', Guestbook)],
66 debug=True)
68 def main():
69 run_wsgi_app(application)
71 if __name__ == "__main__":
72 main()