def _receive_packet(self): while True: robots_list = db.table('robots').all() for id in range(6): updated_robot = { "info": { "id": id, "name": "Robot {}".format(id) }, "supply": { "batt": random.random() * 100, "voltage": random.random() * 16, "current": random.random() * 5, "power": random.random() }, "com": { "time_since_last_packet": 2 } } if any(robot['info']['name'] == updated_robot['info']['name'] for robot in robots_list): sio.emit('robots_update', updated_robot) with transaction(db.table('robots')) as robots: robots.update( updated_robot, where('info').name == updated_robot['info'] ['name']) else: sio.emit('robots_insert', updated_robot) with transaction(db.table('robots')) as robots: robots.insert(updated_robot) time.sleep(1)
def upgrade_tags_v2(): # read old table , convert data and insert into new table for t in db.table('pre_upgrade_tags_v2').select( db.raw( 'id, hwid, description, (NOT is_disabled) as is_enabled, created_at, updated_at' )).get(): print("insert:", t) db.table('tags').insert(t) # destroy old table db.table('tags').delete()
def add_execute_logs(socket, uuid, app_uuid, app_name, result): log_info = { "uuid": uuid, "app_uuid": app_uuid, "app_name": app_name, "result": result, "create_time": Time.get_date_time(), } db.table("zbn_logs").insert(log_info) data = {"method": "execute_log", "data": log_info} if socket is None: pass else: socket.send(json.dumps(data))
def generate(repo_name, from_date=None, to_date=None): stats = prst.PrSt(config.token, repo_name, from_date, to_date) table = db.table("report") stats.result["name"] = repo_name stats.result["id"] = table._last_id + 1 table.insert(stats.result)
def insert_gateway_record(self, msg): db = TinyDB('device_data/Gateway/gateway_records.json') table = db.table('gateway_records') values = {} value = 0 for key in msg["keys"]: values[key] = msg["values"][value] value += 1 values["time"] = msg["time"] table.insert(values)
def getList(self, args, qraw=None): if hasattr(self, '__view__'): me = db.table(self.__view__) elif hasattr(self, 'use_raw_view'): if self.use_raw_view: me = self.vw() else: me = self else: me = self #Page Number if 'p' in args: args['p']=int(args['p']) else: args['p']=1 # Record Per Page if 'rp' in args: args['rp']=int(args['rp']) else: args['rp']=25 # Search Raw if qraw is not None: me = me.where_raw(qraw) # Filter if 'f' in args: if len(args['f']): for k, v in args['f'].items(): me = me.where(k, v) # Order if 'o' in args: if args['o'] is not None and len(args['o']): for k, v in args['o'].items(): if (v.lower() == 'asc' or v.lower() == 'desc'): me = me.order_by(k, v) result = { 'args':args } result['data'] = me.simple_paginate(args['rp'], args['p']).serialize() result['next']=args['p']+1 if len(result['data'])<args['rp']: result['next']=args['p'] result['prev']=args['p']-1 if args['p']==1: result['prev']=1 return result
def get(self, resource_id): table = db.table("report") if resource_id == "all": reports = table.all() for curr in reports: curr.pop("users", None) curr["name"] = curr["name"].split("/")[1] return sorted(reports, key=lambda x: x["timespan"]["captured_at"], reverse=True) q = Query() return table.search(q.id == int(resource_id))[0]
def getApiList(self, recPerPage=25, search=None, filter={}, page=1, order={}): if hasattr(self, '__view__'): me = db.table(self.__view__) table = self.__view__ else: me = self table = me.__table__ # Filter if len(filter): for k, v in filter.items(): me = me.where(k, v) # Search if search is not None and search != '': me = me.where_raw(search) # Order if order is not None and len(order): for k, v in order.items(): if schema.has_column(table, k) and (v.lower() == 'asc' or v.lower() == 'desc'): me = me.order_by(k, v) paged = me.paginate(recPerPage, page) result = { "total": paged.total, "per_page": paged.per_page, "current_page": paged.current_page, "last_page": paged.last_page, "prev_page": paged.previous_page, "next_page": paged.next_page, "data": paged.serialize() } return result
def getWebList(self, search, args): if hasattr(self, '__view__'): me = db.table(self.__view__) table = self.__view__ else: me = self table = me.__table__ recPerPage = 10 page = 1 if 'p' in args: page = int(args['p']) else: args['p'] = page if 'rp' in args: recPerPage = int(args['rp']) else: args['rp'] = recPerPage if search is not None and search != '': me = me.where_raw(search) result = {'args': args} #use simple_paginate to just use next and prev paging result['data'] = me.simple_paginate(recPerPage, page) result['next'] = page + 1 if len(result['data']) < recPerPage: result['next'] = page result['prev'] = page - 1 if page == 1: result['prev'] = 1 return result
def get_gateway_records(): db = TinyDB('device_data/Gateway/gateway_records.json') table = db.table('gateway_records') data = table.all() return data
def _getTable(self): return db.table(self._getTableName())
def run_exec(socket, uuid): workflow_info = ( db.table("zbn_workflow") .select("uuid", "name", "start_app", "end_app", "flow_json", "flow_data") .where("uuid", uuid) .first() ) if workflow_info: start_app = workflow_info["start_app"] end_app = workflow_info["end_app"] flow_json = json.loads(workflow_info["flow_json"]) flow_data = json.loads(workflow_info["flow_data"]) # for r in flow_json["edges"]: # print(r["label"], r["source"], r["target"]) global_data = {} target_app = find_start_app(edges=flow_json["edges"], start_app=start_app) add_execute_logs( socket=socket, uuid=uuid, app_uuid=start_app, app_name="开始", result="剧本开始执行" ) is_while = True while is_while: try: # 拿到当前APP数据 if_else, source_app, next_app = find_next_app( edges=flow_json["edges"], next_app=target_app ) except Exception: add_execute_logs( socket=socket, uuid=uuid, app_uuid="", app_name="", result="当前剧本不具有可执行条件", ) is_while = False break key = target_app + "_sum" if redis.exists(key) == 1: sum = redis.get(key) redis.set(key, int(sum) + 1, ex=3) else: redis.set(key, 1, ex=3) # 当前APP执行数据 source_info = flow_data[source_app] # print(source_app) s, ifelse_result = get_app_data( socket=socket, uuid=uuid, app_uuid=source_app, app_info=source_info, global_data=global_data, ) if not s: add_execute_logs( socket=socket, uuid=uuid, app_uuid=end_app, app_name=flow_data.get(source_app).get("name"), result="执行错误:{}".format(ifelse_result), ) add_execute_logs( socket=socket, uuid=uuid, app_uuid=end_app, app_name="结束", result="剧本执行结束", ) is_while = False if if_else != "": if if_else == ifelse_result: target_app = next_app else: target_app = next_app if next_app == end_app: add_execute_logs( socket=socket, uuid=uuid, app_uuid=end_app, app_name="结束", result="剧本执行结束", ) is_while = False
db.Column("work_article_id", db.Integer, db.ForeignKey("tb_work_article.id"), primary_key=True), db.Column("thinking_article_id", db.Integer, db.ForeignKey("tb_thinking_article.id"), primary_key=True), db.Column("create_time", db.DateTime, default=datetime.now)) user_follow = db.table( "tb_user_follow", db.Column("follower_id", db.Integer, db.ForeignKey("tb_user.id"), primary_key=True), db.Column("followed_id", db.Integer, db.ForeignKey("tb_user.id"), primary_key=True), ) class User(BaseModel, db.Model): """定义用户类""" __tablename__ = 'tb_user' id = db.Column(db.Integer, primary_key=True, autoincrement=True) user_name = db.Column(db.String(32), nullable=False, unique=True) password_hash = db.Column(db.String(128)) signature = db.Column(db.String(512), nullable=True) avatar_url = db.Column(db.String(256))
def send_robots_list(): robots_list = db.table('robots').all() return jsonify(robots_list)
def delete(self, resource_id): table = db.table("report") return 200 if len(table.remove( where("id") == int(resource_id))) != 0 else 500