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
):
21 greetingsString
= memcache
.get(MEMCACHE_GREETINGS
)
22 if greetingsString
is not None:
23 greetings
= pickle
.loads(greetingsString
)
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'
34 url
= users
.create_login_url(self
.request
.uri
)
35 url_linktext
= 'Login'
38 'greetings': greetings
,
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
):
51 if users
.get_current_user():
52 greeting
.author
= users
.get_current_user()
54 greeting
.content
= self
.request
.get('content')
56 memcache
.delete(MEMCACHE_GREETINGS
)
59 application
= webapp
.WSGIApplication(
61 ('/sign', Guestbook
)],
65 run_wsgi_app(application
)
67 if __name__
== "__main__":