dingtalk.client.api.workrecord 源代码

# encoding: utf-8
from __future__ import absolute_import, unicode_literals

import datetime
import time

from optionaldict import optionaldict

from dingtalk.client.api.base import DingTalkBaseAPI
from dingtalk.model.field import FieldBase


[文档]class WorkRecord(DingTalkBaseAPI):
[文档] def add(self, userid, create_time, title, url, form_item_dict, originator_user_id='', source_name=''): """ 新增待办事项 :param userid: 用户id :param create_time: 待办时间。Unix时间戳 :param title: 标题 :param url: 待办跳转url :param form_item_dict: 表单列表 OrderedDict((('标题1', '内容1'),('标题2', '内容2'))) :param originator_user_id: manager7078 :param source_name: 待办来源名称 """ if isinstance(create_time, (datetime.date, datetime.datetime)): create_time = int(time.mktime(create_time.timetuple()) * 1000) form_item_list = [{'title': k, 'content': v}for k, v in form_item_dict.items()] return self._top_request( "dingtalk.oapi.workrecord.add", { "userid": userid, "create_time": create_time, "title": title, "url": url, "formItemList": form_item_list, "originator_user_id": originator_user_id, "source_name": source_name }, result_processor=lambda x: x['record_id'] )
[文档] def update(self, userid, record_id): """ 更新待办事项状态 :param userid: 用户id :param record_id: 待办事项唯一id """ return self._top_request( "dingtalk.oapi.workrecord.update", {"userid": userid, "record_id": record_id} )
[文档] def getbyuserid(self, userid, status, offset=0, limit=50): """ 获取用户的待办事项 :param userid: 用户唯一ID :param offset: 分页游标,从0开始,如返回结果中has_more为true,则表示还有数据,offset再传上一次的offset+limit :param limit: 分页大小,最多50 :param status: 待办事项状态,0表示未完成,1表示完成 """ return self._top_request( "dingtalk.oapi.workrecord.getbyuserid", { "userid": userid, "offset": offset, "limit": limit, "status": status }, result_processor=lambda x: x['records'] )
[文档] def process_save(self, name, description, form_component_list=(), process_code=None, agentid=None): """ 保存审批模板 :param name: 模板名称 :param description: 模板描述 :param form_component_list: 表单列表 :param process_code: 模板的唯一码 :param agentid: 企业微应用标识 """ form_component_list = [form.get_dict() if isinstance(form, FieldBase) else form for form in form_component_list] return self._top_request( "dingtalk.oapi.process.save", { "saveProcessRequest": optionaldict({ "agentid": agentid, "process_code": process_code, "name": name, "description": description, "fake_mode": True, "form_component_list": form_component_list }) }, result_processor=lambda x: x['process_code'] )
[文档] def process_delete(self, process_code, agentid=''): """ 删除创建的审批模板 :param process_code: 模板的唯一码 :param agentid: 微应用agentId,ISV必填 """ return self._top_request( "dingtalk.oapi.process.delete", { "request": { "process_code": process_code, "agentid": agentid } } )
[文档] def process_workrecord_create( self, process_code, originator_user_id, form_component_values, url, agentid='', title='' ): """ 发起不带流程的审批实例 :param process_code: 审批模板唯一码 :param originator_user_id: 审批发起人 :param form_component_values: 表单参数列表 :param url: 实例跳转链接 :param agentid: 应用id :param title: 实例标题 """ if isinstance(form_component_values, dict): form_component_values = [{"name": name, "value": value} for name, value in form_component_values.items()] return self._top_request( "dingtalk.oapi.process.workrecord.create", { "request": { "process_code": process_code, "originator_user_id": originator_user_id, "form_component_values": form_component_values, "url": url, "agentid": agentid, "title": title } }, result_processor=lambda x: x['process_instance_id'] )
[文档] def process_workrecord_update( self, process_instance_id, status, result, agentid='' ): """ 同步待办实例状态 :param process_instance_id: 实例id :param status: 实例状态,分为COMPLETED, TERMINATED :param result: 实例结果, 如果实例状态是COMPLETED,需要设置result,分为agree和refuse :param agentid: 应用id """ return self._top_request( "dingtalk.oapi.process.workrecord.update", { "request": { "process_instance_id": process_instance_id, "status": status, "result": result, "agentid": agentid } } )
[文档] def process_workrecord_task_create( self, process_instance_id, tasks, agentid='', activity_id='' ): """ 创建待办任务 :param process_instance_id: 实例id :param tasks: 任务列表 :param agentid: 应用id :param activity_id: 节点id """ return self._top_request( "dingtalk.oapi.process.workrecord.task.create", { "request": { "process_instance_id": process_instance_id, "tasks": tasks, "agentid": agentid, "activity_id": activity_id } }, result_processor=lambda x: x['tasks'] )
[文档] def dingtalk_oapi_process_workrecord_task_update( self, process_instance_id, tasks, agentid='' ): """ 更新待办任务状态 :param process_instance_id: 实例id :param tasks: 任务列表 :param agentid: 应用id """ return self._top_request( "dingtalk.oapi.process.workrecord.task.update", { "request": { "process_instance_id": process_instance_id, "tasks": tasks, "agentid": agentid } }, result_processor=lambda x: x['tasks'] )
[文档] def process_workrecord_taskgroup_cancel( self, process_instance_id, activity_id, agentid='' ): """ 批量取消任务 :param process_instance_id: 实例id :param activity_id: 任务组id :param agentid: 应用id """ return self._top_request( "dingtalk.oapi.process.workrecord.taskgroup.cancel", { "request": { "process_instance_id": process_instance_id, "activity_id": activity_id, "agentid": agentid } } )