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
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
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
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
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
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
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
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
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
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