# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from optionaldict import optionaldict
from teambition.api.base import TeambitionAPI
[文档]class Subtasks(TeambitionAPI):
[文档] def get(self, id=None, task_id=None):
"""
获取子任务,子任务 ID 和任务 ID 参数只能有一个存在
详情请参考
http://docs.teambition.com/wiki/tasks-subtasks#tasks-subtasks-get
:param id: 可选,子任务 ID
:param task_id: 可选,任务 ID
:return: 返回的 JSON 数据包
"""
assert id or task_id, 'id 和 task_id 必须提供其中之一'
if id:
endpoint = 'api/subtasks/{0}'.format(id)
elif task_id:
endpoint = 'api/tasks/{0}/subtasks'.format(task_id)
return self._get(endpoint)
[文档] def create(self, content, task_id, executor_id=None):
"""
新建子任务
详情请参考
http://docs.teambition.com/wiki/tasks-subtasks#tasks-subtasks-create
:param content: 子任务内容
:param task_id: 任务 ID
:param executor_id: 可选,执行者 ID,默认为空
:return: 返回的 JSON 数据包
"""
data = optionaldict(
content=content,
_taskId=task_id,
_executorId=executor_id
)
return self._post(
'api/subtasks',
data=data
)
[文档] def delete(self, id):
"""
删除子任务
详情请参考
http://docs.teambition.com/wiki/tasks-subtasks#tasks-subtasks-delete
:param id: 子任务 ID
:return: 返回的 JSON 数据包
"""
return self._delete('api/subtasks/{0}'.format(id))
[文档] def update(self, id, content=None, is_done=None, executor_id=None):
"""
更新子任务
详情请参考
http://docs.teambition.com/wiki/tasks-subtasks#tasks-subtasks-update
:param id: 子任务 ID
:param content: 可选,子任务内容
:param is_done: 可选,子任务完成状态
:param executor_id: 可选,执行者 ID
:return: 返回的 JSON 数据包
"""
data = optionaldict(
content=content,
isDone=is_done,
_executorId=executor_id
)
return self._put(
'api/subtasks/{0}'.format(id),
data=data
)
[文档] def update_content(self, id, content):
"""
更新子任务内容
详情请参考
http://docs.teambition.com/wiki/tasks-subtasks#tasks-subtasks-update_content
:param id: 子任务 ID
:param content: 任务内容
:return: 返回的 JSON 数据包
"""
return self._put(
'api/subtasks/{0}/content'.format(id),
data={
'content': content
}
)
[文档] def update_executor(self, id, executor_id):
"""
更新子任务执行者
详情请参考
http://docs.teambition.com/wiki/tasks-subtasks#tasks-subtasks-update_executor
:param id: 子任务 ID
:param executor_id: 执行者 ID
:return: 返回的 JSON 数据包
"""
return self._put(
'api/subtasks/{0}/_executorId'.format(id),
data={
'_executorId': executor_id
}
)
[文档] def update_status(self, id, is_done):
"""
更新子任务状态
详情请参考
http://docs.teambition.com/wiki/tasks-subtasks#tasks-subtasks-update_status
:param id: 子任务 ID
:param is_done: 是否已经完成
:return: 返回的 JSON 数据包
"""
return self._put(
'api/subtasks/{0}/isDone'.format(id),
data={
'isDone': is_done
}
)
[文档] def update_duedate(self, id, duedate):
"""
更新截止日期
详情请参考
http://docs.teambition.com/wiki/tasks-subtasks#tasks-subtasks-update_duedate
:param id: 子任务 ID
:param duedate: 截止日期,请使用 ISOString 格式,置空请传 None
:return: 返回的 JSON 数据包
"""
return self._put(
'api/subtasks/{0}/dueDate'.format(id),
data={
'dueDate': duedate
}
)