def post(self): RADIUS = 100 jsonobject = json.loads(self.request.body) # XXX: Super ultra mega hack because GQL doesn't allow for multiple # filters that use <, >, <= or >= registered_users = RegisteredUser.all().filter("role =", "helper") registered_users = filter( lambda u: (u.lat >= float(jsonobject["lat"]) - RADIUS and u.lat <= float(jsonobject["lat"]) + RADIUS and u.lon >= float(jsonobject["lon"]) - RADIUS and u.lon <= float(jsonobject["lon"]) + RADIUS), registered_users) if not registered_users: return ng = NotificationGroup(victim=jsonobject["uid"]) for u in registered_users: ng.uids.append(u.uid) ng.put() self.response.write("Registered users:\n") request_types = ['helprequest', 'acceptrequest'] for request_type in request_types: for u in registered_users: if u.uid == jsonobject["uid"]: continue url = 'http://gcm-http.googleapis.com/gcm/send' data = { "data": { "type": request_type, "uid": jsonobject["uid"], "name": jsonobject["name"], "lat": jsonobject["lat"], "lng": jsonobject["lon"] }, "to": u.uid } headers = { "Content-Type":"application/json", "Authorization":"key=AIzaSyBk3-v9AaKz8s2KYLuImlsIBSl1GF6XGlM" } req = urllib2.Request(url, json.dumps(data), headers) response = urllib2.urlopen(req) self.response.write(str(u)+'\n')
def post(self): jsonobject = json.loads(self.request.body) ng = NotificationGroup.all().get() if not ng: return for u in ng.uids: if u != jsonobject["uid"]: # send message to all the volunteers telling them that they # are not needed any more url = 'http://gcm-http.googleapis.com/gcm/send' data = { "data": { "type": "cancelrequest", "victim_uid": jsonobject["victim_uid"] }, "to": u } headers = { "Content-Type":"application/json", "Authorization":"key=AIzaSyBk3-v9AaKz8s2KYLuImlsIBSl1GF6XGlM" } req = urllib2.Request(url, json.dumps(data), headers) response = urllib2.urlopen(req) url = 'http://gcm-http.googleapis.com/gcm/send' data = { "data": { "type": "helponitsway", "uid": jsonobject["uid"], "name": jsonobject["name"], "level": jsonobject["level"] }, "to": jsonobject["victim_uid"] } headers = { "Content-Type":"application/json", "Authorization":"key=AIzaSyBk3-v9AaKz8s2KYLuImlsIBSl1GF6XGlM" } req = urllib2.Request(url, json.dumps(data), headers) response = urllib2.urlopen(req) ng.delete()