def filter_item(self, **kwargs): session = self.db if session is None: return None, None start = int(kwargs.get("start", -1)) end = int(kwargs.get("end", -1)) pk = kwargs.get("id", None) try: filter_obj = self.do_filter(**kwargs) if not filter_obj: return None, None if pk: return filter_obj.first(), 1 order_by = kwargs.get("order_by", None) order_method = kwargs.get("order_method", None) if order_by is None: filter_obj = filter_obj.order_by(desc("id")) else: if order_method == "desc": filter_obj = filter_obj.order_by(desc(order_by)) else: filter_obj = filter_obj.order_by(order_by) if start == -1 and end == -1: data = filter_obj.all() return data, len(data) else: pk = self.get_model_pk() if pk is None: return None, None return filter_obj[start:end], filter_obj.with_entities(func.count(pk)).scalar() except Exception as e: logger.error(u"查询%s出错. %s, %s" % (self._model.__tablename__, e, kwargs)) return None, None
def do_filter(self, **kwargs): session = kwargs.get("session", None) if session is None: return None pk = kwargs.get("id", None) try: filter_obj = session.query(self._model) if pk is not None: return filter_obj.filter_by(id=pk) value = { k: self._clean_value(kwargs[k]) for k in self._filter_value(kwargs) } filter_obj = filter_obj.filter_by(**value) kv = kwargs.get("like", None) if kv is not None: k, v = kv.split("^") filter_obj = filter_obj.filter( getattr(self._model, k).like("%%%s%%" % v)) id_list = kwargs.get("id_list", None) if id_list is not None: filter_obj = filter_obj.filter( getattr(self._model, "id").in_(id_list)) filter_condition = kwargs.get('filter_condition', None) if filter_condition is not None: filter_obj = filter_obj.filter(filter_condition) return filter_obj except Exception as e: logger.error(u"查询%s出错. %s, %s" % (self._model.__tablename__, e, kwargs)) return None
def change_position(self, data): room_id, p_id = data.get('room_id', None), data.get('p_id', 0) try: p_id = int(p_id) room = RoomTool.change_position(self.client, room_id, p_id) if room is not None: Response('room.info', room).response(clients=self.clients) except TypeError as e: logger.error(e)
def get_model_pk(self): """ 获取model主键 :return: Column """ try: ins = inspect(self.model) return ins.primary_key[0] except Exception as e: logger.error("获取主键失败e" % e) return None
def get(self): try: data, total = self._controller_obj.filter_item(**self._input) self._data["total"] = total self._data["list"] = to_dict_obj(data) self._db_session.commit() except Exception as e: logger.error(u'查询user表失败: %s' % e) self._ret, self._msg = error_msg.SERVER_ERROR self._db_session.rollback() return self._response()
def _do_put(self): try: if self._controller_obj.update_item(**self._input): self._db_session.commit() return True else: self._db_session.rollback() return False except Exception as e: logger.error("put method error: %s" % e) return False
def get_department_info(self, department_id): params = {"department_id": department_id} try: # 获取用户信息 department_data = requests.get( settings.USER_CENTER_API['user_url'], params=params, timeout=5).json() department_info_list = department_data.get('data', []) except Exception as e: logger.error(u"获取用户信息异常. %s" % e) department_info_list = [] return department_info_list
def decode_session(self, session): try: data = requests.get("%s?sessionid=%s" % (settings.SESSION_URL, session)).json() if data["ret"] == 0: self._user = data["data"] return True else: return False except Exception as e: logger.error("get session error %s" % e) return False
def handle(self, client, packet): self.client = client try: # headers = str.split()packet.get('header', "") # create_obj = compile('obj()', 'create_obj.py', 'eval') # a = eval(create_obj) # method = getattr(self, packet['header']) method = getattr(self, packet['header']) (method(packet['data']) if 'data' in packet else method()) if method else self.invalid() except AttributeError as e: logger.error(e)
def get_user_info(self): try: # 获取用户信息 user_data = requests.get(settings.USER_CENTER_API['user_url'], timeout=5).json() user_info_list = user_data.get('data', []) if user_info_list: for item in user_info_list: item['username'] = item['email'].split('@')[0] except Exception as e: logger.error(u"获取用户信息异常. %s" % e) user_info_list = [] return user_info_list
def _do_post(self): try: if self._controller_obj.new_item(**self._input): self._db_session.commit() return True else: self._db_session.rollback() logger.error("post method error") return False except Exception as e: self._ret, self._msg = error_msg.SERVER_ERROR logger.error("post method error: %s" % e) return False
def delete_item(self, **kwargs): session = self.db if session is None: return False try: filter_obj = self.do_filter(**kwargs) if filter_obj: filter_obj.delete() return True else: return False except Exception as e: logger.error(u"删除%s出错. %s, %s" % (self._model.__tablename__, e, kwargs)) return False
def new_item(self, **kwargs): session = self.db if session is None: return False try: value = {k: self._clean_value(kwargs[k]) for k in self._filter_value(kwargs)} if 'password' in value: # sha1加密密码字符 value['password'] = self.__encryption(value['password']) new_obj = self._model(**value) session.add(new_obj) return new_obj except Exception as e: logger.error(u"新建%s出错. %s, %s" % (self._model.__tablename__, e, kwargs)) return False
def _do_get(self, disable_output=None, transform_json=True): try: data, total = self._controller_obj.filter_item(**self._input) self._data["total"] = total if transform_json: self._data["list"] = utility.to_dict_obj( data, without_fields=disable_output) else: self._data["list"] = data return True except Exception as e: import traceback traceback.print_exc() logger.error("get method error: %s" % e) return False
def get_single_user_info(self, user_id): """返回单个用户ID信息""" params = {"user_ids": user_id} try: # 获取用户信息 user_data = requests.get(settings.USER_CENTER_API['user_url'], params=params, timeout=5).json() single_user_info = user_data.get('data', [])[0] if single_user_info: single_user_info['username'] = single_user_info['email'].split( '@')[0] except Exception as e: logger.error(u"获取用户信息异常. %s" % e) single_user_info = {} return single_user_info
def update_item(self, **kwargs): session = self.db if session is None: return False try: value = {k: self._clean_value(kwargs[k]) for k in self._filter_value(kwargs)} if 'password' in value: # sha1加密密码字符 value['password'] = self.__encryption(value['password']) filter_obj = self.do_filter(**kwargs) if filter_obj: filter_obj.update(value) return True else: return False except Exception as e: session.rollback() logger.error(u"修改%s出错. %s, %s" % (self._model.__tablename__, e, kwargs)) return False