Ejemplo n.º 1
0
    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')
Ejemplo n.º 2
0
    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()