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)
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)
def get(self, skey): value = System.get(skey).filter(domain=self.domain) #.all() self.writeasjson({ "skey": skey, "value": value, })
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" })