supporter_id = params.get('supporter_id', 0) if not (params and protocol_id and system_id and supporter_id) and is_contain_zh(path): return response(code=1, message='参数错误,且接口中不能包含中文') protocol = Protocol.query.get_or_404(protocol_id) system = System.query.get_or_404(system_id) supporter = User.query.get_or_404(supporter_id) # 判断 path 是否存在 existed_url = system.urls.filter(URL.path == path).first() if existed_url and existed_url.id != url.id: return response(code=1, message=f'{path} 已存在,请勿重复添加') url.path = path url.desc = params.get('desc'), url.protocol_id = protocol.id, url.system_id = system.id, url.supporter_id = supporter.id db.session.add(url) db.session.commit() return response() def patch(self, url_id): return response() api_v1.add_url_rule('/systems/<int:sys_id>/urls', view_func=URLsAPI.as_view('urls'), methods=['GET', 'POST']) api_v1.add_url_rule('/url/<int:url_id>', view_func=URLAPI.as_view('url'), methods=['GET', 'PUT', 'PATCH', 'DELETE'])
""" 获取用户收藏的 URL """ user = User.query.get_or_404(user_id) paginate = URLCollect.query.with_parent(user).order_by( URLCollect.timestamp.desc()).paginate(page, per_page, error_out=False) data = { 'urls': [c.systems.to_json() for c in paginate.items], 'count': paginate.total, 'paginate': paginate.page } return response(data=data) api_v1.add_url_rule('/users', view_func=UsersAPI.as_view('users'), methods=['GET', 'POST']) api_v1.add_url_rule('/users/<int:user_id>', view_func=UserAPI.as_view('user'), methods=['GET']) api_v1.add_url_rule('/users/<int:user_id>/projects', view_func=UserSupportProjects.as_view('support-projects'), methods=['GET']) api_v1.add_url_rule('/users/<int:user_id>/systems', view_func=UserSupportSystems.as_view('support-systems'), methods=['GET']) api_v1.add_url_rule('/users/<int:user_id>/urls', view_func=UserSupportURLs.as_view('support-urls'), methods=['GET']) api_v1.add_url_rule('/users/<int:user_id>/collection-projects', view_func=UserSupportURLs.as_view('collection-projects'),
db.session.commit() return response() @use_kwargs(NameSchema) @use_kwargs({'protocol_id': fields.Int(required=True, default=0)}) def put(self, m_id, name, protocol_id): """ 编辑方法 """ method = Method.query.get_or_404(m_id) protocol = Protocol.query.get_or_404(protocol_id) cap_name = name.upper() existed_method = protocol.methods.filter( Method.name == cap_name).first() if existed_method and existed_method.id != method.id: return response(code=1, message=f'请求方式 {cap_name} 已存在请勿重复添加') method.name = cap_name method.protocol_id = protocol_id db.session.add(method) db.session.commit() return response() def patch(self, m_id): return response() api_v1.add_url_rule('/protocols/<int:protocol_id>/methods', view_func=MethodsAPI.as_view('methods'), methods=['GET', 'POST']) api_v1.add_url_rule('/methods/<int:m_id>', view_func=MethodAPI.as_view('method'), methods=['GET', 'PUT', 'PATCH', 'DELETE'])
protocol = Protocol.query.get_or_404(protocol_id) if protocol.methods.count() > 0: return response(code=1, message=f'协议 {protocol.name} 中已包含方法,无法删除') db.session.delete(protocol) db.session.commit() return response() @use_kwargs(NameSchema) def put(self, protocol_id, name): """ 编辑协议 """ protocol = Protocol.query.get_or_404(protocol_id) cap_name = name.upper() existed_protocol = Protocol.query.filter_by(name=cap_name).first() if existed_protocol and existed_protocol.id != protocol.id: return response(code=1, message='协议名已存在,请勿重复添加') protocol.name = cap_name db.session.add(protocol) db.session.commit() return response() def patch(self, protocol_id): return response() api_v1.add_url_rule('/protocols', view_func=ProtocolsAPI.as_view('protocols'), methods=['GET', 'POST']) api_v1.add_url_rule('/protocols/<int:protocol_id>', view_func=ProtocolAPI.as_view('protocol'), methods=['GET', 'PUT', 'PATCH', 'DELETE'])
@use_kwargs(PASysSchema) def put(self, project_id, name, desc, domains, supporter_id): """ 编辑项目 """ project = Project.query.get_or_404(project_id) existed_project = Project.query.filter_by(name=name).first() if existed_project and existed_project.id != project.id: return response(code=1, message='项目已存在,请勿重复添加') supporter = User.query.get_or_404(supporter_id) project.name = name project.desc = desc project.domains = domains project.supporter_id = supporter.id db.session.add(project) db.session.commit() return response(data={'project': project.to_json()}) def patch(self, project_id): """ 修改项目某一项参数 """ Project.query.get_or_404(project_id) return response() api_v1.add_url_rule('/projects', view_func=ProjectsAPI.as_view('projects'), methods=['GET', 'POST']) api_v1.add_url_rule('/projects/<project_id>', view_func=ProjectAPI.as_view('project'), methods=['GET', 'PUT', 'PATCH', 'DELETE'])
@use_kwargs(PASysSchema) def put(self, sys_id, name, desc, domains, supporter_id, project_id): """ 编辑系统 """ system = System.query.get_or_404(sys_id) supporter = User.query.get_or_404(supporter_id) project = Project.query.get_or_404(project_id) existed_system = project.systems.filter(System.name == name).first() if existed_system and existed_system.id != system.id: return response(code=1, message=f'系统 {name} 已存在,请勿重复添加') system.name = name system.desc = desc, system.domains = domains system.project_id = project.id system.supporter_id = supporter.id db.session.add(system) db.session.commit() return response(data={'system': system.to_json()}) def patch(self, sys_id): return response() api_v1.add_url_rule('/projects/<int:project_id>/systems', view_func=SystemsAPI.as_view('systems'), methods=['GET', 'POST']) api_v1.add_url_rule('/systems/<int:sys_id>', view_func=SystemAPI.as_view('system'), methods=['GET', 'PUT', 'PATCH', 'DELETE'])
docs = url.api_docs.all() return response(data={'docs': [doc.to_json() for doc in docs]}) def post(self, url_id): """ 新建接口 """ URL.query.get_or_404(url_id) return response() class DocAPI(MethodView): def get(self, doc_id): return response() def delete(self, doc_id): return response() def put(self, doc_id): return response() def patch(self, doc_id): return response() api_v1.add_url_rule('/urls/<int:url_id>/docs', view_func=DocsAPI.as_view('docs'), methods=['GET', 'POST']) api_v1.add_url_rule('/docs/<int:doc_id>', view_func=DocsAPI.as_view('doc'), methods=['GET', 'POST'])