def login_success(user, handler): """ 后台用户登录成功之后事物处理函数 """ # 设置登录用户cookie信息 handler.set_curent_user(user) user_id = user.id login_count = user.login_count if user.login_count else 0 params = { 'login_count': login_count + 1, 'last_login_at': utime.timestamp(3), 'last_login_ip': handler.request.remote_ip, } AdminUser.Update.filter(AdminUser.id == user_id).update(params) params = { 'id': 0, 'user_id': user.id, 'client': 'web', 'ip': handler.request.remote_ip, 'created_at': utime.timestamp(3), } log = AdminUserLoginLog(**params) AdminUserLoginLog.session.add(log) AdminUserLoginLog.session.commit() return True
def insert(param): """插入 [description] Arguments: id int -- 主键 param dict -- [description] return: True | JsonError """ columns = [i for (i, _) in AdminRole.__table__.columns.items()] param = {k:v for k,v in param.items() if k in columns} if 'created_at' in columns: param['created_at'] = utime.timestamp(3) try: obj = AdminRole(**param) AdminRole.session.add(obj) AdminRole.session.commit() return True except Exception as e: AdminRole.session.rollback() SysLogger.error(e) raise JsonError('insert error')
def update(id, param): """更新记录 [description] Arguments: id int -- 主键 param dict -- [description] return: True | JsonError """ columns = [i for (i, _) in AdminRole.__table__.columns.items()] param = {k:v for k,v in param.items() if k in columns} if 'updated_at' in columns: param['updated_at'] = utime.timestamp(3) if not id: raise JsonError('ID 不能为空') try: AdminRole.Update.filter(AdminRole.id == id).update(param) AdminRole.session.commit() return True except Exception as e: AdminRole.session.rollback() SysLogger.error(e) raise JsonError('update error')
def update(key, param): """更新记录 [description] Arguments: key string -- 主键 param dict -- [description] return: True | JsonError """ columns = [i for (i, _) in Config.__table__.columns.items()] param = {k: v for k, v in param.items() if k in columns} if 'updated_at' in columns: param['updated_at'] = utime.timestamp(3) if not key: raise JsonError('key 不能为空') try: Config.Update.filter(Config.key == key).update(param) Config.session.commit() return True except Exception as e: Config.session.rollback() SysLogger.error(e) raise JsonError('update error')
def insert(param): """插入 [description] Arguments: id int -- 主键 param dict -- [description] return: True | JsonError """ columns = [i for (i, _) in Advertising.__table__.columns.items()] param = {k:v for k,v in param.items() if k in columns} if 'created_at' in columns: param['created_at'] = utime.timestamp(3) description = param.get('description', '') if len(description) > 255: raise JsonError('Data too long for \'description\'') if 'start_at' in param.keys(): param['start_at'] = param['start_at'] if param['start_at'].isnumeric() else 0 if 'end_at' in param.keys(): param['end_at'] = param['end_at'] if param['end_at'].isnumeric() else 0 try: obj = Advertising(**param) Advertising.session.add(obj) Advertising.session.commit() return True except Exception as e: Advertising.session.rollback() SysLogger.error(e) raise JsonError('insert error')
def update(id, param): """更新记录 [description] Arguments: id int -- 主键 param dict -- [description] return: True | JsonError """ columns = [i for (i, _) in Goods.__table__.columns.items()] param = {k: v for k, v in param.items() if k in columns} if 'updated_at' in columns: param['updated_at'] = utime.timestamp(3) if not id: raise JsonError('ID 不能为空') if 'thumb' in param.keys(): try: param['thumb'] = json_decode(param['thumb']) except Exception as e: param['thumb'] = {} try: Goods.Update.filter(Goods.id == id).update(param) Goods.session.commit() return True except Exception as e: Goods.session.rollback() SysLogger.error(e) raise JsonError('update error')
def insert(param): """插入 [description] Arguments: id int -- 主键 param dict -- [description] return: True | JsonError """ columns = [i for (i, _) in Goods.__table__.columns.items()] param = {k: v for k, v in param.items() if k in columns} if 'created_at' in columns: param['created_at'] = utime.timestamp(3) if 'thumb' in param.keys(): try: param['thumb'] = json_decode(param['thumb']) except Exception as e: param['thumb'] = {} raise e else: param['thumb'] = {} try: obj = Goods(**param) Goods.session.add(obj) Goods.session.commit() return True except Exception as e: Goods.session.rollback() SysLogger.error(e) raise JsonError('insert error')
def insert(param): """插入 [description] Arguments: id int -- 主键 param dict -- [description] return: True | JsonError """ columns = [i for (i, _) in Article.__table__.columns.items()] param = {k: v for k, v in param.items() if k in columns} if 'created_at' in columns: param['created_at'] = utime.timestamp(3) category_id = param.get('category_id', 0) if not category_id: raise JsonError('文章分类缺失') description = param.get('description', '') if len(description) > 255: raise JsonError('Data too long for \'description\'') try: obj = Article(**param) Article.session.add(obj) Article.session.commit() return True except Exception as e: Article.session.rollback() SysLogger.error(e) raise JsonError('insert error')
def update(user_id, param, rsa_encrypt=0): """ 保存用户数据 :param user: 用户数据字典 :param rsa_encrypt: :param user_id: :return: """ columns = [i for (i, _) in AdminUser.__table__.columns.items()] param = {k: v for k, v in param.items() if k in columns} if 'updated_at' in columns: param['updated_at'] = utime.timestamp(3) if 'username' in param.keys(): if param['username']: if AdminUserService.check_username(param['username'], user_id): raise JsonError('名称已被占用') else: del param['username'] if 'password' in param.keys(): if param['password']: if settings.login_pwd_rsa_encrypt and int( rsa_encrypt) == 1 and len(param['password']) > 4: private_key = sys_config('login_rsa_priv_key') param['password'] = RSAEncrypter.decrypt( param['password'], private_key) param['password'] = make_password(param['password']) else: del param['password'] if 'email' in param.keys(): if param['email']: if AdminUserService.check_email(param['email'], user_id): raise JsonError('邮箱已被占用') else: param['email'] = None if 'mobile' in param.keys(): if param['mobile']: if AdminUserService.check_mobile(param['mobile'], user_id): raise JsonError('电话号码已被占用') else: param['mobile'] = None try: if user_id: AdminUser.Update.filter(AdminUser.id == user_id).update(param) else: obj = AdminUser(**param) AdminUser.session.add(obj) except Exception as e: raise e else: AdminUser.session.commit() return True
def get_for_category(category): """ Arguments: category string -- category 唯一标识 limit int -- 查询记录数 return: list """ category_id = AdvertisingCategory.session.query(AdvertisingCategory.id) \ .filter(AdvertisingCategory.name == category).scalar() now_time = utime.timestamp(3) row = Advertising.Q \ .filter(Advertising.category_id == category_id) \ .filter(Advertising.start_at <= now_time) \ .filter(or_(Advertising.end_at > now_time, Advertising.end_at == 0)) \ .filter(Advertising.status == 1) \ .order_by(Advertising.sort.desc()) \ .first() return row
def update(id, param): """更新记录 [description] Arguments: id int -- 主键 param dict -- [description] return: True | JsonError """ columns = [i for (i, _) in Advertising.__table__.columns.items()] param = {k:v for k,v in param.items() if k in columns} if 'updated_at' in columns: param['updated_at'] = utime.timestamp(3) if 'start_at' in param.keys(): param['start_at'] = param['start_at'] if param['start_at'].isnumeric() else 0 if 'end_at' in param.keys(): param['end_at'] = param['end_at'] if param['end_at'].isnumeric() else 0 description = param.get('description', '') if len(description) > 255: raise JsonError('Data too long for \'description\'') if not id: raise JsonError('ID 不能为空') try: Advertising.Update.filter(Advertising.id == id).update(param) Advertising.session.commit() return True except Exception as e: Advertising.session.rollback() SysLogger.error(e) raise JsonError('update error')
def update(id, param): """更新记录 [description] Arguments: id int -- 主键 param dict -- [description] return: True | JsonError """ columns = [i for (i, _) in Article.__table__.columns.items()] param = {k: v for k, v in param.items() if k in columns} if 'updated_at' in columns: param['updated_at'] = utime.timestamp(3) description = param.get('description', '') if len(description) > 255: raise JsonError('Data too long for \'description\'') if not id: raise JsonError('ID 不能为空') status = param.get('status', None) category_id = param.get('category_id', 0) if not category_id: raise JsonError('文章分类缺失') try: Article.Update.filter(Article.id == id).update(param) Article.session.commit() return True except Exception as e: Article.session.rollback() SysLogger.error(e) raise JsonError('update error')