| OLD | NEW |
|---|---|
| 1 import logging | 1 import logging |
| 2 import wsgiref.handlers | 2 import wsgiref.handlers |
| 3 import os | 3 import os |
| 4 import re | 4 import re |
| 5 import random | 5 import random |
| 6 import simplejson | 6 import simplejson |
| 7 | 7 |
| 8 from google.appengine.ext.webapp import template | 8 from google.appengine.ext.webapp import template |
| 9 from google.appengine.api import users | 9 from google.appengine.api import users |
| 10 from google.appengine.ext import webapp | 10 from google.appengine.ext import webapp |
| 11 from google.appengine.ext import db | 11 from google.appengine.ext import db |
| 12 | |
| 13 | |
| 14 cache_hits = 0; | |
| 15 # dictionary from group name to member list | |
| 16 group_members_cache = None | |
| 17 member_groups_cache = None | |
| 18 | |
|
fergald
2008/05/09 20:59:05
my first reaction was to say "make this an object"
| |
| 19 def build_cache(): | |
| 20 global group_members_cache, member_groups_cache | |
| 21 | |
| 22 if not group_members_cache or not member_groups_cache: | |
| 23 logging.info("building cache.") | |
| 24 temp_group_members_cache = {} | |
| 25 temp_member_groups_cache = {} | |
| 26 | |
| 27 memberships = Membership.all() | |
|
fergald
2008/05/09 20:59:05
redundant variable
| |
| 28 for membership in memberships: | |
| 29 # TODO use db keys instead of name and iso? | |
| 30 iso = membership.member.iso | |
| 31 name = membership.group.name | |
| 32 temp_group_members_cache.setdefault(name, []).append(iso) | |
| 33 temp_member_groups_cache.setdefault(iso, []).append(name) | |
| 34 | |
| 35 group_members_cache = temp_group_members_cache | |
| 36 member_groups_cache = temp_member_groups_cache | |
| 37 logging.info("Cache built.") | |
| 12 | 38 |
| 13 # Model Classes # | 39 # Model Classes # |
| 14 #___________________# | 40 #___________________# |
| 15 | 41 |
| 16 class Member(db.Model): | 42 class Member(db.Model): |
| 17 version = db.DateTimeProperty(auto_now = True) | 43 version = db.DateTimeProperty(auto_now = True) |
| 18 | 44 |
| 19 iso = db.StringProperty() | 45 iso = db.StringProperty() |
| 20 name = db.StringProperty() | 46 name = db.StringProperty() |
| 21 formal_name = db.StringProperty() | 47 formal_name = db.StringProperty() |
| (...skipping 45 matching lines...) Show 10 above Show 10 below | |
| 67 # JSON Endpoints # | 93 # JSON Endpoints # |
| 68 #___________________# | 94 #___________________# |
| 69 | 95 |
| 70 class MemberList(webapp.RequestHandler): | 96 class MemberList(webapp.RequestHandler): |
| 71 def get(self): | 97 def get(self): |
| 72 members = Member.all() | 98 members = Member.all() |
| 73 result = [member.iso for member in members] | 99 result = [member.iso for member in members] |
| 74 self.response.out.write(simplejson.dumps(result)) | 100 self.response.out.write(simplejson.dumps(result)) |
| 75 | 101 |
| 76 class MemberDetails(webapp.RequestHandler): | 102 class MemberDetails(webapp.RequestHandler): |
| 77 def get(self): | 103 def get(self, group): |
|
fergald
2008/05/09 20:59:05
what value does group get?
| |
| 78 members = Member.all() | 104 members = Member.all() |
| 79 result = [member for member in members] | 105 result = [member for member in members] |
| 80 self.response.out.write(simplejson.dumps(result)) | 106 self.response.out.write(simplejson.dumps(result)) |
| 81 | 107 |
| 82 class MemberGroups(webapp.RequestHandler): | 108 class MemberGroups(webapp.RequestHandler): |
| 83 def get(self): | 109 def get(self): |
| 84 iso = self.request.get("iso"), | 110 iso = self.request.get("iso"), |
| 85 memberships = Memberships.all() | 111 memberships = Memberships.all() |
| 86 memberships.filter("member =", iso) | 112 memberships.filter("member =", iso) |
| 87 memberships.filter("active =", True) | 113 memberships.filter("active =", True) |
| 88 | 114 |
| 89 result = [memberships.group.name for membership in memberships] | 115 result = [memberships.group.name for membership in memberships] |
| 90 self.response.out.write(simplejson.dumps(result)) | 116 self.response.out.write(simplejson.dumps(result)) |
| 91 | 117 |
| 92 class GroupList(webapp.RequestHandler): | 118 class GroupList(webapp.RequestHandler): |
| 93 def get(self): | 119 def get(self): |
| 94 groups = Groups.all() | 120 groups = Group.all() |
| 95 result = [group.name for group in groups] | 121 result = [group.name for group in groups if group.active] |
| 96 self.response.out.write(simplejson.dumps(result)) | 122 self.response.out.write(simplejson.dumps(result)) |
| 97 | 123 |
| 98 class GroupDetails(webapp.RequestHandler): | 124 class GroupDetails(webapp.RequestHandler): |
| 99 def get(self): | 125 def get(self): |
| 126 global group_members_cache | |
| 127 | |
| 100 groups = Group.all() | 128 groups = Group.all() |
| 101 result = [group for group in groups] | 129 result = [] |
| 130 for group in groups: | |
| 131 result.append( { | |
| 132 "formal_name": group.formal_name, | |
| 133 "created": str(group.created), | |
| 134 "name": group.name, | |
| 135 "active": group.active, | |
| 136 "members": group_members_cache.get(group.name, []) | |
| 137 }) | |
| 102 self.response.out.write(simplejson.dumps(result)) | 138 self.response.out.write(simplejson.dumps(result)) |
| 103 | 139 |
| 104 class GroupMembers(webapp.RequestHandler): | 140 class GroupMembers(webapp.RequestHandler): |
| 105 def get(self): | 141 def get(self): |
| 106 #group = self.request.get("group"), | 142 #group = self.request.get("group"), |
| 107 #memberships = Memberships.all() | 143 #memberships = Memberships.all() |
| 108 #memberships.filter("group =", group) | 144 #memberships.filter("group =", group) |
| 109 #memberships.filter("active =", True) | 145 #memberships.filter("active =", True) |
| 110 | 146 |
| 111 #result = [memberships.member.iso for membership in memberships] | 147 #result = [memberships.member.iso for membership in memberships] |
| (...skipping 25 matching lines...) Show 10 above Show 10 below | |
| 137 self.redirect('/Browser') | 173 self.redirect('/Browser') |
| 138 | 174 |
| 139 class TemplatePage(webapp.RequestHandler): | 175 class TemplatePage(webapp.RequestHandler): |
| 140 def get(self): | 176 def get(self): |
| 141 pass | 177 pass |
| 142 | 178 |
| 143 class MainPage(webapp.RequestHandler): | 179 class MainPage(webapp.RequestHandler): |
| 144 def get(self): | 180 def get(self): |
| 145 curUser = users.get_current_user() | 181 curUser = users.get_current_user() |
| 146 | 182 |
| 147 #if not curUser: | 183 #if not curUser: |
|
fergald
2008/05/09 20:59:05
I don't see any other user checking in the code. I
| |
| 148 # self.redirect(users.create_login_url(self.request.uri)) | 184 # self.redirect(users.create_login_url(self.request.uri)) |
| 149 # return | 185 # return |
| 186 | |
| 187 TAGLINES = [ | |
| 188 "tracking the meetings between the meetings", | |
| 189 "tracking the meetings between the meetings", | |
| 190 "tracking the meetings between the meetings", | |
| 191 "possibly the coolest map on the internet", | |
| 192 "you probably didn't even know there was such a thing", | |
| 193 "where the secret cabals make nefarious decisions", | |
| 194 "this is what international trade nerds do with free time", | |
| 195 ] | |
| 196 | |
| 197 data = { | |
| 198 "tagline": TAGLINES[random.randint(0, len(TAGLINES) - 1)] | |
| 199 } | |
| 150 | 200 |
| 151 path = os.path.join(os.path.dirname(__file__), 'templates/browser.html') | 201 path = os.path.join(os.path.dirname(__file__), 'templates/browser.html') |
| 152 self.response.out.write(template.render(path, None)) | 202 self.response.out.write(template.render(path, data)) |
| 153 | 203 |
| 154 | 204 |
| 155 def main(): | 205 def main(): |
| 206 global cache_hits | |
| 207 cache_hits += 1 | |
| 208 build_cache() | |
| 156 application = webapp.WSGIApplication( | 209 application = webapp.WSGIApplication( |
| 157 [ | 210 [ |
| 158 ('/', RootPage), | 211 ('/', RootPage), |
| 159 ('/Browser', MainPage), | 212 ('/Browser', MainPage), |
| 160 ('/Template/.*', TemplatePage), | 213 ('/Template/.*', TemplatePage), |
| 161 ('/MemberList', MemberList), | 214 ('/MemberList', MemberList), |
| 162 ('/MemberDetails', MemberDetails), | 215 ('/MemberDetails', MemberDetails), |
| 163 ('/MemberGroups', MemberGroups), | 216 ('/MemberGroups', MemberGroups), |
| 164 ('/GroupList', GroupList), | 217 ('/GroupList', GroupList), |
| 165 ('/GroupDetails', GroupDetails), | 218 ('/GroupDetails', GroupDetails), |
| 166 ('/GroupMembers', GroupMembers), | 219 ('/GroupMembers', GroupMembers), |
| 167 ], | 220 ], |
| 168 debug=True) | 221 debug=True) |
| 169 wsgiref.handlers.CGIHandler().run(application) | 222 wsgiref.handlers.CGIHandler().run(application) |
| 170 | 223 |
| 171 if __name__ == "__main__": | 224 if __name__ == "__main__": |
| 172 main() | 225 main() |
| OLD | NEW |