5 from google
.appengine
.api
import users
6 from google
.appengine
.ext
import ndb
9 # We set a parent key on the 'Greetings' to ensure that they are all in the same
10 # entity group. Queries across the single entity group will be consistent.
11 # However, the write rate should be limited to ~1/second.
13 def guestbook_key(guestbook_name
='default_guestbook'):
14 return ndb
.Key('Guestbook', guestbook_name
)
16 jinja_environment
= jinja2
.Environment(
17 loader
=jinja2
.FileSystemLoader(os
.path
.dirname(__file__
)),
18 extensions
=['jinja2.ext.autoescape'])
20 class Greeting(ndb
.Model
):
21 author
= ndb
.UserProperty()
22 content
= ndb
.StringProperty()
23 date
= ndb
.DateTimeProperty(auto_now_add
=True)
25 class MainPage(webapp2
.RequestHandler
):
27 greetings_query
= Greeting
.query(ancestor
=guestbook_key()).order(-Greeting
.date
)
28 greetings
= greetings_query
.fetch(10)
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'
37 template
= jinja_environment
.get_template('index.html')
38 self
.response
.out
.write(template
.render(greetings
=greetings
,
40 url_linktext
=url_linktext
))
42 class Guestbook(webapp2
.RequestHandler
):
44 greeting
= Greeting(parent
=guestbook_key())
46 if users
.get_current_user():
47 greeting
.author
= users
.get_current_user()
49 greeting
.content
= self
.request
.get('content')
53 application
= webapp2
.WSGIApplication(
55 ('/sign', Guestbook
)],