|
@@ -46,8 +46,6 @@ class MainPage(webapp.RequestHandler):
|
46
|
46
|
|
47
|
47
|
self.show_footer()
|
48
|
48
|
|
49
|
|
- self.response.out.write(scraper().scrape_spore("csmith87"))
|
50
|
|
-
|
51
|
49
|
def show_header(self):
|
52
|
50
|
self.response.out.write("""
|
53
|
51
|
<html>
|
|
@@ -94,7 +92,15 @@ class MainPage(webapp.RequestHandler):
|
94
|
92
|
self.response.out.write(cgi.escape(account.source.name))
|
95
|
93
|
self.response.out.write("</td><td>")
|
96
|
94
|
self.response.out.write(cgi.escape(account.credentials))
|
97
|
|
- self.response.out.write("</td></tr>")
|
|
95
|
+ self.response.out.write("""
|
|
96
|
+ </td><td>
|
|
97
|
+ <form action="/worker/update" method="post">
|
|
98
|
+ <input type="hidden" name="key" value=""")
|
|
99
|
+ self.response.out.write('"' + cgi.escape(str(account.key())) + '"')
|
|
100
|
+ self.response.out.write(""">
|
|
101
|
+ <input type="submit" value="Update now">
|
|
102
|
+ </td></tr>
|
|
103
|
+ """)
|
98
|
104
|
|
99
|
105
|
self.response.out.write("</table>")
|
100
|
106
|
self.response.out.write("""<h2>Add Account</h2>
|
|
@@ -144,8 +150,49 @@ class AddAccountPage(webapp.RequestHandler):
|
144
|
150
|
|
145
|
151
|
|
146
|
152
|
class UpdatePage(webapp.RequestHandler):
|
|
153
|
+
|
147
|
154
|
def post(self):
|
148
|
155
|
account = db.get(db.Key(self.request.get('key')))
|
|
156
|
+ res = []
|
|
157
|
+
|
|
158
|
+ if account.source.name == 'Spore':
|
|
159
|
+ res = scraper().scrape_spore(account.credentials)
|
|
160
|
+
|
|
161
|
+ UpdatePage.merge_achievements(account, res)
|
|
162
|
+
|
|
163
|
+ @staticmethod
|
|
164
|
+ def merge_achievements(account, achievements):
|
|
165
|
+ source = account.source
|
|
166
|
+ user = account.user
|
|
167
|
+
|
|
168
|
+ for awarded in achievements:
|
|
169
|
+ achievement = UpdatePage.get_achievement(source, awarded)
|
|
170
|
+
|
|
171
|
+ res = AwardedAchievement.gql("WHERE achievement = :ac AND user = :user",
|
|
172
|
+ ac=achievement,
|
|
173
|
+ user=account.user)
|
|
174
|
+
|
|
175
|
+ if res.count(1) == 0:
|
|
176
|
+ AwardedAchievement(achievement=achievement,
|
|
177
|
+ user=account.user,
|
|
178
|
+ awarded=awarded['date']).put()
|
|
179
|
+
|
|
180
|
+ @staticmethod
|
|
181
|
+ def get_achievement(source, achievement):
|
|
182
|
+ res = Achievement.gql("WHERE name = :name AND source = :source",
|
|
183
|
+ name=achievement['title'],
|
|
184
|
+ source=source)
|
|
185
|
+
|
|
186
|
+ if res.count(1) == 0:
|
|
187
|
+ res = Achievement(name=achievement['title'],
|
|
188
|
+ image=achievement['img'],
|
|
189
|
+ description=achievement['desc'],
|
|
190
|
+ source=source)
|
|
191
|
+ res.put()
|
|
192
|
+ else:
|
|
193
|
+ res = res.get()
|
|
194
|
+
|
|
195
|
+ return res
|
149
|
196
|
|
150
|
197
|
application = webapp.WSGIApplication([('/', MainPage),
|
151
|
198
|
('/admin/addsource', AddSourcePage),
|