Simple Guest Book Using App Engine

guestbook6_templates.py

import cgi

import os

from google.appengine.api import users

from google.appengine.ext import webapp

from google.appengine.ext.webapp.util import run_wsgi_app

from google.appengine.ext import db

from google.appengine.ext.webapp import template

class Greeting(db.Model):

  author = db.UserProperty()

  content = db.StringProperty(multiline=True)

  date = db.DateTimeProperty(auto_now_add=True)

class MainPage(webapp.RequestHandler):

  def get(self):

    greetings_query = Greeting.all().order('-date')

    greetings = greetings_query.fetch(10)

    if users.get_current_user():

      url = users.create_logout_url(self.request.uri)

      url_linktext = 'Logout'

    else:

      url = users.create_login_url(self.request.uri)

      url_linktext = 'Login'

    template_values = {

      'greetings': greetings,

      'url': url,

      'url_linktext': url_linktext,

      }

    path = os.path.join(os.path.dirname(__file__), 'index.html')

    self.response.out.write(template.render(path, template_values))

    

class Guestbook(webapp.RequestHandler):

  def post(self):

    greeting = Greeting()

    if users.get_current_user():

      greeting.author = users.get_current_user()

    greeting.content = self.request.get('content')

    greeting.put()

    self.redirect('/')

application = webapp.WSGIApplication(

                                     [('/', MainPage),

                                      ('/sign', Guestbook)],

                                     debug=True)

def main():

  run_wsgi_app(application)

if __name__ == "__main__":

  main()

index.html

<html>

  <head>

    <link type="text/css" rel="stylesheet" href="/stylesheets/main.css" />

  </head>

  <body>

    {% for greeting in greetings %}

      {% if greeting.author %}

        <b>{{ greeting.author.nickname }}</b> wrote:

      {% else %}

       An anonymous person wrote:

      {% endif %}

      <blockquote>{{ greeting.content|escape }}</blockquote>

    {% endfor %}

    <form action="/sign" method="post">

      <div><textarea name="content" rows="3" cols="60"></textarea></div>

      <div><input type="submit" value="Sign Guestbook"></div>

    </form>

    <a href="{{ url }}">{{ url_linktext }}</a>

  </body>

</html>

main.css

body {

  font-family: Verdana, Helvetica, sans-serif;

  background-color: #DDDDDD;

}