Example #1
0
    def put(self, url_id):
        """ 编辑 url """
        url = URL.query.get_or_404(url_id)
        params = request.json
        path = params.get('path', '').strip().replace(' ', '')
        protocol_id = params.get('protocol_id', 0)
        system_id = params.get('system_id', 0)
        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()
Example #2
0
 def delete(self, protocol_id):
     """ 删除协议 """
     # TODO 增加权限控制
     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()
Example #3
0
 def delete(self, project_id):
     """ 删除项目 """
     # TODO 增加权限控制
     project = Project.query.get_or_404(project_id)
     if project.systems.count() > 0:
         return response(code=1, message='项目中存在系统,无法删除')
     db.session.delete(project)
     db.session.commit()
     return response(message='删除成功')
Example #4
0
 def get(self, user_id):
     """ 获取用户信息 """
     if user_id == g.current_user.id:
         user = g.current_user
     else:
         user = User.query.get(user_id)
     if not user:
         return response(code=1, message='用户不存在')
     return response(data={'user': user.to_json()})
Example #5
0
 def delete(self, m_id):
     """ 删除方法 """
     method = Method.query.get_or_404(m_id)
     # TODO 增加权限控制
     if method.api_docs:
         return response(code=1, message='此方法已经被使用,请联系管理员')
     db.session.delete(method)
     db.session.commit()
     return response()
Example #6
0
 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()
Example #7
0
 def post(self, name):
     """ 新建协议 """
     # TODO 将中文校验放入 webargs Schema 统一校验
     cap_name = name.upper()
     existed_protocol = Protocol.query.filter_by(name=cap_name).first()
     if existed_protocol:
         return response(code=1, message='协议名已存在,请勿重复添加')
     protocol = Protocol(name=cap_name)
     db.session.add(protocol)
     db.session.commit()
     return response()
Example #8
0
 def post(self, protocol_id, name):
     """ 新建方法 """
     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:
         return response(code=1, message=f'请求方式 {cap_name} 已存在请勿重复添加')
     method = Method(name=cap_name, protocol_id=protocol_id)
     db.session.add(method)
     db.session.commit()
     return response()
Example #9
0
    def post(self, email, username, password):
        user = User.query.filter_by(email=email).first()
        if user is not None:
            return response(code=1, message=f'邮箱 {user.email} 已存在')
        user = User.query.filter_by(username=username).first()
        if user is not None:
            return response(code=1, message=f'用户名 {user.username} 已存在')

        user = User(username=username, email=email)
        user.set_password(password)
        db.session.add(user)
        db.session.commit()
        return response(message='注册成功')
Example #10
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()
Example #11
0
    def post(self, name, desc, domains, supporter_id):
        """ 新增项目 """
        exited_project = Project.query.filter_by(name=name).first()
        if exited_project:
            return response(code=1, message='项目已存在,请勿重复添加')

        supporter = User.query.get_or_404(supporter_id)
        project = Project(name=name,
                          desc=desc,
                          domains=domains,
                          supporter_id=supporter.id)
        db.session.add(project)
        db.session.commit()
        return response(data={'project': project.to_json()})
Example #12
0
    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()})
Example #13
0
 def exception(e):
     error_code = hasattr(e, 'code') and e.code or 1
     if hasattr(e, 'description'):
         message = e.description
     else:
         message = e.args[0]
     return response(code=error_code, message=message)
Example #14
0
    def handle_validation_error(e):
        exc = e.exc

        message = ''
        for k, v in exc.messages.items():
            message += f'参数 {k} {" ".join(v)} '

        return response(code=e.code, message=message)
Example #15
0
 def get(self, page, per_page):
     paginate = User.query.paginate(page, per_page, error_out=False)
     data = {
         'projects': [p.to_json() for p in paginate.items],
         'count': paginate.total,
         'paginate': paginate.page
     }
     return response(data=data)
Example #16
0
    def post(self, project_id, name, desc, domains, supporter_id):
        """ 新建系统 """
        project = Project.query.get_or_404(project_id)
        supporter = User.query.get_or_404(supporter_id)

        existed_system = project.systems.filter(System.name == name).first()
        if existed_system:
            return response(code=1, message=f'系统 {name} 已存在,请勿重复添加')

        system = System(name=name,
                        desc=desc,
                        domains=domains,
                        project_id=project.id,
                        supporter_id=supporter.id)
        db.session.add(system)
        db.session.commit()
        return response(data={'system': system.to_json()})
Example #17
0
 def get(self, user_id, page, per_page):
     """ 获取用户所创建的 uri """
     user = User.query.get_or_404(user_id)
     paginate = user.urls.paginate(page, per_page, error_out=False)
     data = {
         'urls': [u.to_json() for u in paginate.items],
         'count': paginate.total,
         'paginate': paginate.page
     }
     return response(data=data)
Example #18
0
 def get(self, project_id, page, per_page):
     """ 获取项目下的项目集 """
     project = Project.query.get_or_404(project_id)
     paginate = project.systems.order_by(System.id.desc()).paginate(
         page, per_page, error_out=False)
     data = {
         'systems': [s.to_json() for s in paginate.items],
         'count': paginate.total,
         'paginate': paginate.page
     }
     return response(data=data)
Example #19
0
 def get(self, user_id, page, per_page):
     """ 获取用户收藏的项目 """
     user = User.query.get_or_404(user_id)
     paginate = ProjectCollect.query.with_parent(user).order_by(
         ProjectCollect.timestamp.desc()).paginate(page,
                                                   per_page,
                                                   error_out=False)
     data = {
         'projects': [c.project.to_json() for c in paginate.items],
         'count': paginate.total,
         'paginate': paginate.page
     }
     return response(data=data)
Example #20
0
    def post(self, grant_type, username, password):
        if grant_type.lower() != 'password':
            return api_abort(code=400, message='The grant type must be password.')

        user = User.query.filter_by(username=username).first()
        if user is None or not user.validate_password(password):
            return api_abort(code=400, message='Either the username or password was invalid.')

        token, expiration = generate_token(user)
        headers = {
            'Cache-Control': 'no-store',
            'Pragma': 'no-cache'
        }

        data = {
            'access_token': token,
            'token_type': 'Bearer',
            'expires_in': expiration
        }

        return response(data=data, headers=headers)
Example #21
0
 def post(self):
     return response()
Example #22
0
 def patch(self, url_id):
     return response()
Example #23
0
 def get(self, m_id):
     """ 获取方法信息 """
     method = Method.query.get_or_404(m_id)
     return response(data={'method': method.to_json()})
Example #24
0
 def delete(self, url_id):
     """ 删除 URL """
     URL.query.filter_by(id=url_id).delete(synchronize_session=False)
     return response()
Example #25
0
 def get(self, url_id):
     """ 获取 URL 详情 """
     url = URL.query.get_or_404(url_id)
     return response(data={'url': url.to_json()})
Example #26
0
 def get(self, sys_id):
     """ 获取项目下的项目集 """
     system = System.query.get_or_404(sys_id)
     urls = system.urls.all()
     return response(data={'urls': [u.to_json() for u in urls]})
Example #27
0
 def patch(self, m_id):
     return response()
Example #28
0
 def patch(self, protocol_id):
     return response()
Example #29
0
 def get(self, protocol_id):
     """ 获取协议 """
     protocol = Protocol.query.get_or_404(protocol_id)
     return response(data={'protocol': protocol.to_json()})
Example #30
0
 def get(self, protocol_id):
     protocol = Protocol.query.get_or_404(protocol_id)
     return response(
         data={'methods': [m.to_json() for m in protocol.methods]})