Incomplete webapp to aggregate achievements/badges from various sources
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

helloworld.py 2.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import cgi
  2. from google.appengine.ext import webapp
  3. from google.appengine.api import users
  4. from google.appengine.ext.webapp.util import run_wsgi_app
  5. from google.appengine.ext import db
  6. class User(db.Model):
  7. user = db.UserProperty()
  8. joindate = db.DateTimeProperty(auto_now_add=True)
  9. class AchievementSource(db.Model):
  10. name = db.StringProperty()
  11. url = db.LinkProperty()
  12. class UserAccount(db.Model):
  13. user = db.ReferenceProperty(reference_class=User)
  14. source = db.ReferenceProperty(reference_class=AchievementSource)
  15. credentials = db.StringProperty()
  16. added = db.DateTimeProperty(auto_now_add=True)
  17. updated = db.DateTimeProperty()
  18. class Achievement(db.Model):
  19. name = db.StringProperty()
  20. image = db.LinkProperty()
  21. description = db.StringProperty()
  22. source = db.ReferenceProperty(reference_class=AchievementSource)
  23. class AwardedAchievement(db.Model):
  24. achievement = db.ReferenceProperty(reference_class=Achievement)
  25. user = db.ReferenceProperty(reference_class=User)
  26. awarded = db.DateTimeProperty()
  27. discovered = db.DateTimeProperty(auto_now_add=True)
  28. class MainPage(webapp.RequestHandler):
  29. def get(self):
  30. user = users.get_current_user()
  31. if not user:
  32. self.redirect(users.create_login_url(self.request.uri))
  33. return
  34. self.show_header()
  35. if users.is_current_user_admin():
  36. self.show_admin_form()
  37. self.show_footer()
  38. def show_header(self):
  39. self.response.out.write("""
  40. <html>
  41. <head>
  42. <title>Achievements Aggregator</title>
  43. </head>
  44. <body>""")
  45. def show_footer(self):
  46. self.response.out.write("""
  47. </body>
  48. </html>""")
  49. def show_admin_form(self):
  50. self.response.out.write("""
  51. ADMIN!""")
  52. class Guestbook(webapp.RequestHandler):
  53. def post(self):
  54. self.response.out.write('<html><body>You wrote:<pre>')
  55. self.response.out.write(cgi.escape(self.request.get('content')))
  56. self.response.out.write('</pre></body></html>')
  57. application = webapp.WSGIApplication([('/', MainPage),
  58. ('/sign', Guestbook)],
  59. debug=True)
  60. def main():
  61. run_wsgi_app(application)
  62. if __name__ == "__main__":
  63. main()