Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(7)

Side by Side Diff: wto-informals.py

Issue 738: Started adapting old Browser code to work with GAE backend and XmlHttpRequests instead of JSONP SVN Base: http://wto-informals.googlecode.com/svn/trunk/wto-informals/
Patch Set: Created 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View unified diff | Download patch
OLDNEW
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()
OLDNEW

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld r338