コード例 #1
0
class Add(StaffAuthorizedApi):
    """添加任务"""
    request = with_metaclass(RequestFieldSet)
    request.task_container_info = RequestField(DictField,
                                               desc="任务详情",
                                               conf={
                                                   'name':
                                                   CharField(desc="任务容器名称"),
                                                   'type':
                                                   CharField(desc="任务容器类型"),
                                                   'exec_parms':
                                                   CharField(
                                                       desc="任务容器参数",
                                                       is_required=False),
                                                   'group_list':
                                                   CharField(desc="任务容器项"),
                                               })

    response = with_metaclass(ResponseFieldSet)

    @classmethod
    def get_desc(cls):
        return "任务添加接口"

    @classmethod
    def get_author(cls):
        return "fsy"

    def execute(self, request):
        TaskContainerServer.add(**request.task_container_info)

    def fill(self, response):
        return response
コード例 #2
0
class Login(NoAuthrizedApi):
    """员工登录接口"""
    request = with_metaclass(RequestFieldSet)
    request.username = RequestField(CharField, desc="账号")
    request.password = RequestField(CharField, desc="密码")

    response = with_metaclass(ResponseFieldSet)
    response.access_token = ResponseField(CharField, desc="访问凭证")
    response.renew_flag = ResponseField(CharField, desc="续签标识")
    response.expire_time = ResponseField(CharField, desc="到期时间")

    @classmethod
    def get_desc(cls):
        return "员工登录接口"

    @classmethod
    def get_author(cls):
        return "Roy"

    def execute(self, request):
        token = StaffAccountServer.login(request.username, request.password)
        return token

    def fill(self, response, token):
        response.access_token = token.auth_token
        response.renew_flag = token.renew_flag
        response.expire_time = token.expire_time
        return response
コード例 #3
0
class Search(StaffAuthorizedApi):
    """任务容器搜索列表"""
    request = with_metaclass(RequestFieldSet)
    request.current_page = RequestField(IntField, desc="当前查询页码")
    request.search_info = RequestField(DictField, desc='搜索条件', conf={})

    response = with_metaclass(ResponseFieldSet)
    response.data_list = ResponseField(ListField,
                                       desc='任务容器列表',
                                       fmt=DictField(
                                           desc="任务容器列表",
                                           conf={
                                               'id':
                                               IntField(desc="任务容器id"),
                                               'name':
                                               CharField(desc="任务容器名称"),
                                               'type':
                                               CharField(desc="任务容器类型"),
                                               'exec_parms':
                                               CharField(desc="任务容器参数",
                                                         is_required=False),
                                               'group_list':
                                               CharField(desc="任务容器项"),
                                               'status':
                                               CharField(desc="任务容器状态"),
                                               'reason':
                                               CharField(desc="任务容器异常原因"),
                                               'create_time':
                                               DatetimeField(desc="任务容器添加事件"),
                                           }))
    response.total = ResponseField(IntField, desc="数据总数")
    response.total_page = ResponseField(IntField, desc="总页码数")

    @classmethod
    def get_desc(cls):
        return "任务容器列表接口"

    @classmethod
    def get_author(cls):
        return "fsy"

    def execute(self, request):
        task_container_pages = TaskContainerServer.search(
            request.current_page, **request.search_info)
        return task_container_pages

    def fill(self, response, task_container_pages):
        response.data_list = [{
            'id': task_container.id,
            'name': task_container.name,
            'type': task_container.type,
            'exec_parms': task_container.exec_parms,
            'group_list': task_container.group_list,
            'status': task_container.status,
            'reason': task_container.reason,
            'create_time': task_container.create_time,
        } for task_container in task_container_pages.data]
        response.total = task_container_pages.total
        response.total_page = task_container_pages.total_page
        return response
コード例 #4
0
class UpdateStatus(StaffAuthorizedApi):
    """编辑任务状态"""
    request = with_metaclass(RequestFieldSet)
    request.task_container_id = RequestField(IntField, desc="任务容器的id")
    request.task_container_status = RequestField(CharField, desc="任务容器的状态")

    response = with_metaclass(ResponseFieldSet)

    @classmethod
    def get_desc(cls):
        return "任务容器状态接口"

    @classmethod
    def get_author(cls):
        return "fsy"

    def execute(self, request):
        task_container = TaskContainerServer.get(request.task_container_id)
        param = {"status": request.task_container_status}
        TaskContainerServer.update(task_container, **param)

        task_middleware.update_container_redis(task_container.name)

    def fill(self, response):
        return response
コード例 #5
0
class Update(StaffAuthorizedApi):
    """修改个人中心详情"""
    request = with_metaclass(RequestFieldSet)
    request.myself_info = RequestField(DictField, desc = "员工修改详情", conf = {
        'name': CharField(desc = "姓名"),
        'identification': CharField(desc = "身份证"),
        'gender': CharField(desc = "性别"),
        'birthday': CharField(desc = "生日"),
        'phone': CharField(desc = "电话"),
        'email': CharField(desc = "邮箱"),
        'id_number': CharField(desc = "员工工号"),
        'is_admin': BooleanField(desc = "是否是管理员"),
    })

    response = with_metaclass(ResponseFieldSet)

    @classmethod
    def get_desc(cls):
        return "员工个人中心修改接口"

    @classmethod
    def get_author(cls):
        return "Roy"

    def execute(self, request):
        staff = self.auth_user
        StaffServer.update(staff.id, **request.myself_info)

    def fill(self, response):
        return response
コード例 #6
0
class Get(StaffAuthorizedApi):
    """获取个人中心详情"""
    request = with_metaclass(RequestFieldSet)

    response = with_metaclass(ResponseFieldSet)
    response.staff_info = ResponseField(DictField, desc = "用户详情", conf = {
        'name': CharField(desc = "姓名"),
        'identification': CharField(desc = "身份证"),
        'gender': CharField(desc = "性别"),
        'birthday': CharField(desc = "生日"),
        'phone': CharField(desc = "电话"),
        'email': CharField(desc = "邮箱"),
        'id_number': CharField(desc = "员工工号"),
        'is_admin': BooleanField(desc = "是否是管理员"),
        'department_role_list': ListField(desc = '所属部门', is_required = False, fmt =
                                          DictField(desc = "部门ID", conf = {
                                            'department_role_id': IntField(desc = "部门角色id"),
                                            'department_id': IntField(desc = "部门id"),
                                            'department_name': CharField(desc = "部门名称"),
                                            'role_id': IntField(desc = "部门id"),
                                            'role_name': CharField(desc = "角色名称"),
                                          })),
    })

    @classmethod
    def get_desc(cls):
        return "员工个人中心详情接口"

    @classmethod
    def get_author(cls):
        return "Roy"

    def execute(self, request):
        return StaffServer.get(self.auth_user)

    def fill(self, response, staff):
        department_role_list = [ {
            'role_id': department_role.role.id,
            'role_name': department_role.role.name,
            'department_id': department_role.department.id,
            'department_name': department_role.department.name,
            'department_role_id': department_role.id,
        } for department_role in staff.department_role_list]
        response.staff_info = {
            'name': staff.certification.name,
            'id_number': staff.id_number,
            'identification': staff.certification.identification,
            'gender': staff.certification.gender,
            'birthday': staff.certification.birthday,
            'phone': staff.certification.phone,
            'email': staff.certification.email,
            'is_admin': staff.is_admin,
            'department_role_list': department_role_list
        }
        return response
コード例 #7
0
class Logout(StaffAuthorizedApi):
    """注销"""
    request = with_metaclass(RequestFieldSet)
    response = with_metaclass(ResponseFieldSet)

    @classmethod
    def get_desc(cls):
        return "员工注销接口"

    @classmethod
    def get_author(cls):
        return "Roy"

    def execute(self, request):
        staff = self.auth_user
        StaffAccountServer.logout(staff)

    def fill(self, response):
        return response
コード例 #8
0
class Upload(MiniAuthorizedApi):
    """上传文件"""
    request = with_metaclass(RequestFieldSet)
    request._upload_files = RequestField(FileField, desc="文件名称")
    request._ip = RequestField(CharField, desc="上传分类")
    request.store_type = RequestField(CharField, desc="上传分类")

    response = with_metaclass(ResponseFieldSet)
    response.file_paths = ResponseField(ListField,
                                        desc='文件路径列表',
                                        fmt=CharField(desc="文件路径列表"))

    count = False

    @classmethod
    def get_desc(cls):
        return "上传文件"

    @classmethod
    def get_author(cls):
        return "Roy"

    def execute(self, request):
        path_list = []
        if not FileTransport.is_fileserver(request._ip):
            ft = FileTransport(request._upload_files)
            result = ft.run(store_type=request.store_type)
            path_list = result.file_paths
        else:
            for name, f in request._upload_files.items():
                path = file_middleware.save(name, f, request.store_type)
                host_url = FileTransport.get_server_host()
                path_list.append(host_url + path)
        print(path_list)
        return path_list

    def fill(self, response, path_list):
        response.file_paths = path_list
        return response
コード例 #9
0
class Remove(StaffAuthorizedApi):
    """删除任务"""
    request = with_metaclass(RequestFieldSet)
    request.task_container_id = RequestField(IntField, desc="任务容器的id")

    response = with_metaclass(ResponseFieldSet)

    @classmethod
    def get_desc(cls):
        return "任务容器删除接口"

    @classmethod
    def get_author(cls):
        return "fsy"

    def execute(self, request):
        task_container = TaskContainerServer.get(request.task_container_id)
        if task_container.status == "init" or task_container.status == "executting" or \
        task_container.status == "suspend":
            raise BusinessError("该任务容器状态禁止删除")
        TaskContainerServer.remover(task_container)

    def fill(self, response):
        return response
コード例 #10
0
class Search(StaffAuthorizedApi):
    """日志搜索"""
    request = with_metaclass(RequestFieldSet)
    request.current_page = RequestField(IntField, desc="当前页码")
    request.search_info = RequestField(DictField,
                                       desc="日志搜索条件",
                                       conf={
                                           'active_name':
                                           CharField(desc="搜索主动方名称",
                                                     is_required=False),
                                           'active_type':
                                           CharField(desc="搜索主动方类型",
                                                     is_required=False),
                                           'passive_name':
                                           CharField(desc="搜索被动方名称",
                                                     is_required=False),
                                           'passive_type':
                                           CharField(desc="搜索被动方类型",
                                                     is_required=False),
                                           'journal_type':
                                           CharField(desc="搜索日志类型",
                                                     is_required=False),
                                           'start_time':
                                           DateField(desc="搜索开始时间",
                                                     is_required=False),
                                           'end_time':
                                           DateField(desc="搜搜结束时间",
                                                     is_required=False)
                                       })

    response = with_metaclass(ResponseFieldSet)
    response.data_list = ResponseField(ListField,
                                       desc='日志列表',
                                       fmt=DictField(
                                           desc="日志数据",
                                           conf={
                                               'id':
                                               IntField(desc="日志id"),
                                               'active_name':
                                               CharField(desc="主动方名称"),
                                               'active_type':
                                               CharField(desc="主动方类型"),
                                               'passive_name':
                                               CharField(desc="被动方名称"),
                                               'passive_type':
                                               CharField(desc="被动方类型"),
                                               'journal_type':
                                               CharField(desc="日志类型"),
                                               'record_detail':
                                               CharField(desc="详情"),
                                               'create_time':
                                               DatetimeField(desc="日志添加时间")
                                           }))
    response.total = ResponseField(IntField, desc="数据总数")
    response.total_page = ResponseField(IntField, desc="总页码数")

    @classmethod
    def get_desc(cls):
        return "日志列表接口"

    @classmethod
    def get_author(cls):
        return "fsy"

    def execute(self, request):
        if 'start_time' in request.search_info:
            start_time = request.search_info.pop('start_time')
            request.search_info['create_time__gte'] = start_time
        if 'end_time' in request.search_info:
            end_time = request.search_info.pop('end_time')
            request.search_info['create_time__lt'] = end_time
        journal_pages = JournalMiddleware.search(request.current_page,
                                                 **request.search_info)

        return journal_pages

    def fill(self, response, journal_pages):
        data_list = [{
            'id': journal.id,
            'active_name': journal.active_name,
            'active_type': journal.active_type,
            'passive_name': journal.passive_name,
            'passive_type': journal.passive_type,
            'journal_type': journal.journal_type,
            'record_detail': journal.record_detail,
            'create_time': journal.create_time,
        } for journal in journal_pages.data]
        response.data_list = data_list
        response.total = journal_pages.total
        response.total_page = journal_pages.total_page
        return response