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

144 lines
7.4 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 List
import attr
from utils.feishu.dt_contact import DepartmentUserCustomAttr, EmployeeType
from utils.feishu.dt_help import to_json, to_json_decorator
from utils.feishu.helper import pop_or_none
@to_json_decorator
@attr.s
class CreateDepartmentRequest(object):
parent_id = attr.ib(type=str) # 父部门 ID
name = attr.ib(type=str) # 部门名称
# 自定义部门 ID。只能在创建部门时指定不支持更新。企业内必须唯一若不填该参数将自动生成。不区分大小写长度为 1 ~ 64 个字符。
# 只能由数字、字母和 "_-@." 四种字符组成,且第一个字符必须是数字或字母
id = attr.ib(type=str, default='')
# 部门负责人 ID支持通过 leader_user_id 或 leader_open_id 设置部门负责人,请求同时传递两个参数时按 leader_user_id 处理
leader_open_id = attr.ib(type=str, default='')
leader_user_id = attr.ib(type=str, default='')
create_group_chat = attr.ib(type=bool, default=False) # 是否同时创建部门群,默认为 false不创建部门群
@to_json_decorator
@attr.s
class CreateUserRequest(object):
"""创建用户所需要的参数
"""
# 必填
name = attr.ib(type=str) # 用户名
mobile = attr.ib(type=str) # 用户手机号
# 新增用户所在部门,仅支持一个用户在一个部门下,需要有加入部门的通讯录权限
department_ids = attr.ib(type=List[str]) # type: List[str]
# 可选
# 用户邮箱地址
email = attr.ib(type=str, default=None)
# 手机号码可见性true 为可见false 为不可见,目前默认为 true。不可见时组织员工将无法查看该员工的手机号码
mobile_visible = attr.ib(type=bool, default=None)
# 用户所在城市
city = attr.ib(type=str, default=None)
# 用户所在国家
country = attr.ib(type=str, default=None)
# 性别1:男2:女
gender = attr.ib(type=int, default=None)
employee_type = attr.ib(type=EmployeeType, default=None) # 员工类型。1:正式员工2:实习生3:外包4:劳务5:顾问
join_time = attr.ib(type=int, default=None) # 入职时间
# 直接领导信息,支持通过 leader_user_id 或者 leader_open_id 设置直接领导,同时传递两个参数时按参数 leader_user_id 处理
leader_open_id = attr.ib(type=str, default=None)
leader_user_id = attr.ib(type=str, default=None) # v1 需要转成 employee
# 用户企业内唯一标识。
# 自定义唯一标识不区分大小写,长度为 1 ~ 64 个字符。只能由数字、字母和 "_-@.“ 四种字符组成,且第一个字符必须是数字或字母。
# 创建用户时可指定该唯一标识,指定的唯一标识不能修改。
user_id = attr.ib(type=str, default=None) # v1 需要转成 employee
# 工号
employee_no = attr.ib(type=str, default=None)
# 是否发送邀请通知。该字段为 true 时, 添加用户成功后会往相应的邮箱或者 mobile 发送邀请通知
need_send_notification = attr.ib(type=bool, default=None)
# 自定义用户属性。
# 该字段仅当企业管理员在企业管理后台开启了“允许开放平台API调用”时有效。
# 传入的每个自定义用户属性需要包含平台生成的属性ID和要设置的属性值。
# 当企业管理后台未开启“允许开放平台API调用”以及传入的自定义用户属性 ID 不存在或者非法时,会忽略该条属性设置信息。
custom_attrs = attr.ib(type=List[DepartmentUserCustomAttr],
default=attr.Factory(list)) # type: List[DepartmentUserCustomAttr]
# 工位
work_station = attr.ib(type=str, default=None)
def v1_json(self):
d = to_json(self)
d['leader_employee_id'] = pop_or_none(d, 'leader_user_id')
d['employee_id'] = pop_or_none(d, 'user_id')
custom_attrs = pop_or_none(d, 'custom_attrs')
custom = {}
for i in custom_attrs:
attr_id = pop_or_none(i, 'id')
custom[attr_id] = i
d['custom_attrs'] = custom
return d
@to_json_decorator
@attr.s
class UpdateUserRequest(object):
"""更新用户所需要的参数
"""
# 下面两个,必填一个
user_id = attr.ib(type=str, default=None)
open_id = attr.ib(type=str, default=None)
# 选填
name = attr.ib(type=str, default=None) # 用户名
mobile = attr.ib(type=str, default=None) # 用户手机号
# 新增用户所在部门,仅支持一个用户在一个部门下,需要有加入部门的通讯录权限
department_ids = attr.ib(type=List[str], default=attr.Factory(list)) # type: List[str]
is_frozen = attr.ib(type=bool, default=None) # 是否冻结用户
# 用户邮箱地址
email = attr.ib(type=str, default=None)
# 手机号码可见性true 为可见false 为不可见,目前默认为 true。不可见时组织员工将无法查看该员工的手机号码
mobile_visible = attr.ib(type=bool, default=None)
# 用户所在城市
city = attr.ib(type=str, default=None)
# 用户所在国家
country = attr.ib(type=str, default=None)
# 性别1:男2:女
gender = attr.ib(type=int, default=None)
employee_type = attr.ib(type=EmployeeType, default=None) # 员工类型。1:正式员工2:实习生3:外包4:劳务5:顾问
join_time = attr.ib(type=int, default=None) # 入职时间
# 直接领导信息,支持通过 leader_user_id 或者 leader_open_id 设置直接领导,同时传递两个参数时按参数 leader_user_id 处理
leader_open_id = attr.ib(type=str, default=None)
leader_user_id = attr.ib(type=str, default=None) # v1 需要转成 employee
# 用户企业内唯一标识。
# 自定义唯一标识不区分大小写,长度为 1 ~ 64 个字符。只能由数字、字母和 "_-@.“ 四种字符组成,且第一个字符必须是数字或字母。
# 创建用户时可指定该唯一标识,指定的唯一标识不能修改。
# 工号
employee_no = attr.ib(type=str, default=None)
# 是否发送邀请通知。该字段为 true 时, 添加用户成功后会往相应的邮箱或者 mobile 发送邀请通知
need_send_notification = attr.ib(type=bool, default=None)
# 自定义用户属性。
# 该字段仅当企业管理员在企业管理后台开启了“允许开放平台API调用”时有效。
# 传入的每个自定义用户属性需要包含平台生成的属性ID和要设置的属性值。
# 当企业管理后台未开启“允许开放平台API调用”以及传入的自定义用户属性 ID 不存在或者非法时,会忽略该条属性设置信息。
custom_attrs = attr.ib(type=List[DepartmentUserCustomAttr],
default=attr.Factory(list)) # type: List[DepartmentUserCustomAttr]
# 工位
work_station = attr.ib(type=str, default=None)
def v1_json(self):
d = to_json(self)
d['employee_id'] = pop_or_none(d, 'user_id')
d['leader_employee_id'] = pop_or_none(d, 'leader_user_id')
custom_attrs = pop_or_none(d, 'custom_attrs')
custom = {}
for i in custom_attrs:
attr_id = pop_or_none(i, 'id')
custom[attr_id] = i
d['custom_attrs'] = custom
return d