ad-password-self-service/utils/feishu/dt_approval.py

120 lines
4.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# coding: utf-8
from __future__ import absolute_import, division, print_function, unicode_literals
from typing import Any, List
import attr
from utils.feishu.dt_enum import ApprovalInstanceStatus, ApprovalTaskStatus, ApprovalTaskTypeStatus, ApprovalTimelineType
from utils.feishu.dt_help import to_json_decorator
@to_json_decorator
@attr.s
class ApprovalNode(object):
"""审批节点对象
"""
name = attr.ib(type=str, default='') # 节点名称
need_approver = attr.ib(type=bool, default=None) # 是否发起人自选节点true - 发起审批时需要提交审批人
node_id = attr.ib(type=str, default=None) # 节点 ID
custom_id = attr.ib(type=str, default=None) # 节点自定义 ID如果没有设置则不返回
node_type = attr.ib(type=str, default=None) # 审批方式AND -会签OR - 或签
@to_json_decorator
@attr.s
class ApprovalForm(object):
"""审批表单字段对象
"""
id = attr.ib(type=str, default=None) # 控件 ID
custom_id = attr.ib(type=str, default=None) # 控件自定义 ID
type = attr.ib(type=str, default=None) # 控件类型
name = attr.ib(type=str, default=None) # 控件名称
# 获取审批定义的时候不会返回,获取实例的时候会返回
value = attr.ib(type=Any, default=None) # 表单值
@to_json_decorator
@attr.s
class ApprovalDefinition(object):
"""审批定义对象
"""
approval_name = attr.ib(type=str, default=None)
forms = attr.ib(type=List[ApprovalForm], default=attr.Factory(list)) # type: List[ApprovalForm]
nodes = attr.ib(type=List[ApprovalNode], default=attr.Factory(list)) # type: List[ApprovalNode]
@to_json_decorator
@attr.s
class ApprovalTask(object):
"""审批任务对象
"""
id = attr.ib(type=str, default=None) # 任务 ID
user_id = attr.ib(type=str, default=None) # 审批人,自动通过、自动拒绝 task user_id 为空
status = attr.ib(type=ApprovalTaskStatus, default=None) # 任务状态
node_id = attr.ib(type=str, default=None) # task 所属节点 id
custom_node_id = attr.ib(type=str, default=None) # task 所属节点自定义 id, 如果没设置自定义 id, 则不返回该字段
type = attr.ib(type=ApprovalTaskTypeStatus, default=None) # 任务类型
start_time = attr.ib(type=int, default=None) # 创建时间
end_time = attr.ib(type=int, default=0) # 结束时间,未完成为 0
@to_json_decorator
@attr.s
class ApprovalComment(object):
"""审批中的评论对象
"""
id = attr.ib(type=str, default=None) # 评论 ID
user_id = attr.ib(type=str, default=None) # 发表评论用户
comment = attr.ib(type=str, default=None) # 评论详情
create_time = attr.ib(type=int, default=None) # 创建时间
@to_json_decorator
@attr.s
class ApprovalTimeline(object):
"""审批动态
"""
type = attr.ib(type=ApprovalTimelineType, default=None) # 发生时间
create_time = attr.ib(type=int, default=0) # 发生时间
user_id = attr.ib(type=str, default=None) # 动态产生用户
# 被抄送人列表
user_id_list = attr.ib(type=List[str], default=None) # type: List[str]
task_id = attr.ib(type=str, default='') # 产生动态关联的task_id
comment = attr.ib(type=str, default='') # 评论详情
# type类型 - user_id_list 含义
# TRANSFER - 被转交人
# ADD_APPROVER_BEFORE - 被加签人
# ADD_APPROVER - 被加签人
# ADD_APPROVER_AFTER - 被加签人
# DELETE_APPROVER - 被减签人
# type类型 - user_id 含义
# CC - 抄送人
ext = attr.ib(type=dict, default=None) # 动态其他信息,目前包括 user_id_list, user_id
@to_json_decorator
@attr.s
class ApprovalInstance(object):
"""审批实例对象
"""
approval_code = attr.ib(type=str, default='') # 审批定义唯一标识
approval_name = attr.ib(type=str, default='') # 审批定义名称
start_time = attr.ib(type=int, default=0) # 创建时间(毫秒)
end_time = attr.ib(type=int, default=0) # 结束时间毫秒未结束为0
user_id = attr.ib(type=str, default='') # 用户ID
department_id = attr.ib(type=str, default='') # 部门ID
status = attr.ib(type=ApprovalInstanceStatus, default=None) # 实例状态
form = attr.ib(type=List[ApprovalForm], default=attr.Factory(list)) # type: List[ApprovalForm]
# 任务列表
task_list = attr.ib(type=List[ApprovalTask], default=attr.Factory(list)) # type: List[ApprovalTask]
# 评论列表
comment_list = attr.ib(type=List[ApprovalComment], default=attr.Factory(list)) # type: List[ApprovalComment]
# 审批动态
timeline = attr.ib(type=List[ApprovalTimeline], default=attr.Factory(list)) # type: List[ApprovalTimeline]
serial_number = attr.ib(type=str, default='') # 审批编号