def upload(): image = request.files.get('image', None) if not image: raise ParameterException(msg='没有找到图片') if image and allowed_file(image.filename): path = os.path.join(lin_config.get_config('oss.upload_folder'), image.filename) image.save(path) else: raise ParameterException(msg='图片类型不允许或图片key不合法') return Success()
def add_model(cls, data, commit=True, *, throw=False): """添加模型""" if not data.get('name'): raise ParameterException(msg='要添加的数据中没有name属性') model = cls.query.filter_by(name=data.get('name')).first() if model is not None: if not throw: return False else: raise ParameterException(msg='相关资源已存在') model = cls.create(**data, commit=commit) return model
def list_cart(): userId = request.args["userId"] if userId: cart = ShoppingCart.list_cart(userId=userId) return Result(data=cart) else: return ParameterException(msg="用户id不能为空")
def address_list(): userId = request.args["userId"] if userId: address = Address.address_list(userId=userId) return Result(data=address) else: return ParameterException(msg="请传入用户id")
def search_info(): form = HistoryInfoForm().validate_for_api() keyword = request.args.get('keyword', default=None, type=str) if keyword is None or '': raise ParameterException(msg='搜索关键字不可为空') start, count = paginate() # logs = Log.query.filter(Log.message.like(f'%{keyword}%')) # res = OpenVPNLogInfo.query.filter(OpenVPNLogInfo.common_name.like((f'%{keyword}%'))) res = OpenVPNLogInfo.query.filter( OpenVPNLogInfo.remote_ip.like(f"%{keyword}%")) if form.username.data: res = OpenVPNLogInfo.query.filter( OpenVPNLogInfo.common_name == form.username.data) if form.start.data and form.end.data: res = res.filter( OpenVPNLogInfo.starting_time.between(form.start.data, form.end.data)) total = res.count() res = res.order_by( text('starting_time desc')).offset(start).limit(count).all() total_page = math.ceil(total / count) page = get_page_from_query() if not res: res = [] return json_res(page=page, count=count, total=total, items=res, total_page=total_page)
def edit_case(self, name, info, url, method, submit, header, data, deal, condition, expect, assertion, type): old_case = Case(self.case_group, self.name, self.info, self.url, self.method, self.submit, self.header, self.data, self.deal, self.condition, self.expect, self.assertion, self.type) old_case.id = self.id if self.name != name: if Case.query.filter_by(name=name, case_group=self.case_group, delete_time=None).first(): raise ParameterException(msg='当前组已存在同名用例,请更改用例名称') # 用例名称暂时不允许修改 # self.name = name self.info = info self.url = url self.method = CaseMethodEnum(method) self.submit = CaseSubmitEnum(submit) self.header = header self.data = data self.deal = CaseDealEnum(deal) self.condition = condition self.expect = expect self.assertion = CaseAssertEnum(assertion) self.type = CaseTypeEnum(type) self.update_user = get_current_user().id db.session.commit() self.edit_log(old_case)
def remove_cart(): id = request.args["id"] if id: ShoppingCart.remove_cart(id) return Success(msg="移除成功") else: return ParameterException(msg="请传入商品id")
def new_group(cls, form): group = CaseGroup.query.filter_by(name=form.name.data, delete_time=None).first() if group is not None: raise ParameterException(msg='分组已存在') # 新增分组的时候同时新增可查看当前用例组的人员。当出现问题时进行回滚,人员和分组都不插入 try: group = CaseGroup() group.name = form.name.data group.info = form.info.data db.session.add(group) db.session.flush() if form.users.data: current_app.logger.info(group.id) for user in form.users.data: user_auth = UserAuth() user_auth.user_id = user user_auth.auth_id = group.id user_auth.type = UserAuthEnum.GROUP db.session.add(user_auth) db.session.commit() except Exception as e: db.session.rollback() raise UnknownException(msg='新增异常 数据已回滚') return True
def validate_content(self, field): category = Category.query.filter_by(delete_time=None, content=field.data, type=int(self.type.data)).first() if category: msg = '分类<' + str(field.data) + '>已存在' raise ParameterException(msg=msg)
def address_delete(): id = request.args["id"] if id: Address.delete_address(id=id) return Success(msg="删除成功") else: return ParameterException(msg="请传入地址id")
def new_project(cls, form): project = cls.query.filter_by(name=form.name.data, delete_time=None).first() if project is not None: raise ParameterException(msg='工程已存在') # 新增分组的时候同时新增可查看当前用例组的人员。当出现问题时进行回滚,人员和分组都不插入 try: project = Project() project.name = form.name.data project.server = form.server.data project.header = form.header.data project.info = form.info.data project.progress = 0 project.type = ProjectTypeEnum(form.type.data) project.user = form.user.data project.running = False project.send_email = form.sendEmail.data project.email_strategy = EmailStrategyEnum(form.emailStrategy.data) project.copy_person = form.copyPerson.data db.session.add(project) db.session.flush() if form.users.data: for user in form.users.data: user_auth = UserAuth() user_auth.user_id = user user_auth.auth_id = project.id user_auth.type = UserAuthEnum.PROJECT db.session.add(user_auth) db.session.commit() except Exception as e: db.session.rollback() raise UnknownException(msg='新增异常 数据已回滚') return True
def paginate(): _count = get_count_from_query() count = 15 if _count >= 15 else _count start = get_page_from_query() * count if start < 0 or count < 0: raise ParameterException() return start, count
def new_case(self): if Case.query.filter_by(name=self.name, case_group=self.case_group, delete_time=None).first(): raise ParameterException(msg='当前组已存在同名用例,请更改用例名称') db.session.add(self) db.session.commit()
def append_cart(): data = eval(str(request.data, encoding='utf-8')) form = Append_Cart(ImmutableMultiDict(data)) if form.validate(): ShoppingCart.append_cart(form) return Success(msg="加入购物成功") else: return ParameterException(msg=form.errors)
def wxlogin(): form = WxLoginForm().validate_for_api() code = form.code.data res = request_wx_api(code) user = manager.find_user(openid=res['openid']) if user: raise ParameterException(msg='邮箱已被注册,请重新输入邮箱') wx_register_user(res) return 'success'
def add(cls, data, commit=True, *, throw=False): model = cls.query.filter_by(**data, soft=True).first() if model: if not throw: return False else: raise ParameterException(msg='相同内容已经评论过了') cls.create(**data, commit=commit) return True
def post_file(): files = request.files type=request.form.get("type") if not type or type not in typeRadio: raise ParameterException(msg={type: ["Not a valid choice"]}) config = FILE[type] uploader = LocalUploader(files,config) ret = uploader.upload(type) return jsonify(ret)
def get_ip_user(): form = IPSearchForm().validate_for_api() command = ["/usr/local/bin/get_user_ip.sh", form.openvpn_ip.data] command = ' '.join(str(d) for d in command) value = remote_server.onetime_shell(command) if re.findall('没有', value): raise ParameterException(msg='Unregistered') else: return Success(msg=value)
def add_model(cls, data, commit=True, *, throw=False): model = cls.query.filter_by(**data).first() if model: if not throw: return False else: raise ParameterException(msg='相关横幅子项目已存在或已隐藏') cls.create(**data, commit=True) return True
def offset_limit(): start = int( request.args.get('start', current_app.config.get('START_DEFAULT', 0))) count = int( request.args.get('count', current_app.config.get('COUNT_DEFAULT', 1))) count = 20 if count >= 20 else count if start < 0 or count < 0: raise ParameterException() return start, count
def validate_some_cart_content(): cart_contents = request.get_json() if cart_contents and type(cart_contents) == list: for cart_content in cart_contents: cc = CartContentOne(data=cart_content) valid = cc.validate() if not valid: raise ParameterException(msg=cc.errors) return cart_contents
def amend(): data = eval(str(request.data, encoding='utf-8')) form = AddressAmend(ImmutableMultiDict(data)) if form.validate(): Address.amend_default_address(form) return Success(msg="更改地址成功") else: return ParameterException(msg=form.errors)
def validate_product_props(): props = request.json.get('params', None) if props and type(props) == list: for prop in props: pp = ProductProp(data=prop) valid = pp.validate() if not valid: raise ParameterException(msg=pp.errors) return props
def validate_place_order(): products = request.get_json() if products and type(products) == list: for product in products: cc = OneProductOfOrder(data=product) valid = cc.validate() if not valid: raise ParameterException(msg=cc.errors) return products
def edit_model(cls, id, data, commit=True, *, throw=False): """编辑模型""" if not data.get('name'): raise ParameterException(msg='要更改的数据中没有name属性') model = cls.query.filter_by(name=data.get('name')).filter( cls.id != id).first() if model is not None: if not throw: return False else: raise ParameterException(msg='相同名称资源已存在') model = cls.query.filter_by(id=id, soft=True).first() if not model: if not throw: return False else: raise NotFound(msg='相关资源未添加或已隐藏') model.update(**data, commit=commit) return model
def paginate(): count = int(request.args.get('count', current_app.config.get('COUNT_DEFAULT') if current_app.config.get( 'COUNT_DEFAULT') else 1)) start = int(request.args.get('page', current_app.config.get('PAGE_DEFAULT') if current_app.config.get( 'PAGE_DEFAULT') else 0)) count = 15 if count >= 15 else count start = start * count if start < 0 or count < 0: raise ParameterException() return start, count
def query_class(): _type = request.args["type"] if _type: comm = Commodity.query_comm_type(_type=_type) for item in comm: setattr(item, "product", eval(getattr(item, "product"))) setattr(item, "titleImg", eval(getattr(item, "titleImg"))) return comm else: return ParameterException(msg="请传入商品类型")
def new_model(cls, data, *, err_msg=None): """添加短评""" model = cls.query.filter_by(**data, delete_time=None).first() if model is not None: if err_msg is None: return False else: raise ParameterException(msg=err_msg) cls.create(**data, commit=True) return True
def update(): form = UpdateInfoForm().validate_for_api() user = get_current_user() if user.email != form.email.data: exists = manager.user_model.get(email=form.email.data) if exists: raise ParameterException(msg='邮箱已被注册,请重新输入邮箱') with db.auto_commit(): user.email = form.email.data return Success(msg='操作成功')
def case_debug(self): self.str_to_dict() # res = self.method_request() try: res = self.method_request() except Exception as e: current_app.logger.debug(e) raise ParameterException(msg='参数错误') result = self.get_result(res) return result