Ejemplo n.º 1
0
    def post(self, *args, **kwargs):
        self.set_header('Access-Control-Allow-Origin', '*')
        self.set_header("Cache-control", "no-cache")
        #self.set_header('Content-Type', 'application/octet-stream')

        #logging.info()

        self.msgs = []
        self.dynamic = {}

        self.imei = self.get_argument("imei", None)
        #print dir(self)
        if self.imei in IMEI_BLACK_LIST:
            logging.error("IMEI in black list. Denied. [%s]" % self.imei)
            self.write('ERROR: BLACK LIST\r\n')
            return

        phone = self.get_argument("phone", None)

        system = System.create_or_update(self.imei, cached=True, phone=phone)
        self.system = system
        self.skey = system.key

        # Динамические данные: csq, vout, vin
        self.dynamic["lastping"] = int(time())
        csq = self.get_argument("csq", None)
        if csq is not None:
            self.dynamic["csq"] = csq
        vout = self.get_argument("vout", None)
        if vout is not None:
            self.dynamic["vout"] = int(vout) / 1000.0
        vin = self.get_argument("vin", None)
        if vin is not None:
            self.dynamic["vin"] = int(vin) / 1000.0

        #TODO! Добавить обновление из self.get_arguments телефона и других "редко-изменяемых" параметров
        #TODO! Добавить обработку из self.get_arguments "часто-изменяемых" параметров

        #system.create_or_update() # Создать или обновить

        #self.skey = System.skey_by_imei_or_create(self.imei)
        self.onpost(*args, **kwargs)

        system.update_dynamic(**self.dynamic)
        msg = {
            "id": 0,
            "message": "update_dynamic",
            "skey": self.skey,
            "dynamic": self.dynamic
        }
        self.application.publisher.send(msg)
Ejemplo n.º 2
0
    def get(self, *args, **kwargs):
        self.set_header('Access-Control-Allow-Origin', '*')
        self.set_header("Cache-Control", "no-cache, must-revalidate")
        self.set_header("Expires", "Mon, 26 Jul 1997 05:00:00 GMT")
        now = datetime.now()
        expiration = datetime(now.year - 1, now.month, now.day)
        self.set_header("Last-Modified", expiration)
        #self.set_header('Content-Type', 'application/octet-stream')

        self.imei = self.get_argument("imei", None)
        phone = self.get_argument("phone", None)
        #print dir(self.reverse_url(self))
        if self.imei in IMEI_BLACK_LIST:
            logging.error("IMEI in black list. Denied. [%s]" % self.imei)
            self.write('ERROR: BLACK LIST\r\n')
            return

        #self.skey = self.application.system.skey_by_imei_or_create(self.imei)
        system = System.create_or_update(self.imei, cached=True, phone=phone)
        self.system = system
        self.skey = system.key

        self.dynamic = {}

        # Динамические данные: csq, vout, vin
        self.dynamic["lastping"] = int(time())
        csq = self.get_argument("csq", None)
        if csq is not None:
            self.dynamic["csq"] = csq
        vout = self.get_argument("vout", None)
        if vout is not None:
            self.dynamic["vout"] = int(vout) / 1000.0
        vin = self.get_argument("vin", None)
        if vin is not None:
            self.dynamic["vin"] = int(vin) / 1000.0

        self.onget(*args, **kwargs)

        system.update_dynamic(**self.dynamic)
        msg = {
            "id": 0,
            "message": "update_dynamic",
            "skey": self.skey,
            "dynamic": self.dynamic
        }
        self.application.publisher.send(msg)
Ejemplo n.º 3
0
 def get(self, skey):
     value = System.get(skey).filter(domain=self.domain) #.all()
     self.writeasjson({
         "skey": skey,
         "value": value,
     })
Ejemplo n.º 4
0
    def post(self):
        cmd = self.request.arguments.get("cmd", '')
        logging.info("AccountSystem.post[{cmd:%s}]", cmd)

        if cmd == '':

            self.writeasjson({
                "error": "cmd paramenter is required"
            })

        elif cmd == 'add':

            imeis = self.request.arguments.get("imeis")
            # logging.info(' == imeis=%s', repr(imeis))

            results = []

            skeys = [System.imei_to_key(imei) for imei in imeis]
            # logging.info(' == keys=%s', repr(skeys))
            systems = System(key=None, cached=True).find_all(skeys, domain=self.domain)
            # logging.info(' == systems=%s', repr(systems))
            pushAll = []

            for imei in imeis:
                skey = System.imei_to_key(imei)
                if skey in self.account.document["skeys"]:
                    results.append({
                        "result": "already"
                    })
                else:
                    #system = System.get(skey).filter(domain=self.domain)
                    if systems[skey] is None:
                        results.append({
                            "result": "notfound"
                        })
                    else:
                        pushAll.append(skey)
                        results.append({
                            "result": "added",
                            "system": systems[skey]
                        })
            self.account.add_systems(pushAll)

            self.writeasjson({
                "systems": results
            })

        elif cmd == 'sort':

            skeys = self.request.arguments.get("skeys", [])
            # logging.info("skeys = %s" % repr(skeys))
            self.account.sort_systems(skeys)
            self.writeasjson({
                "result": "sorted",
                "skeys": skeys
            })

        else:

            self.writeasjson({
                "error": "cmd must be set"
            })