87 lines
2.6 KiB
Python
87 lines
2.6 KiB
Python
import json
|
|
from typing import TYPE_CHECKING, Optional, Iterable
|
|
|
|
from boxsdk.object.base_object import BaseObject
|
|
from ..pagination.marker_based_object_collection import MarkerBasedObjectCollection
|
|
from ..util.api_call_decorator import api_call
|
|
|
|
if TYPE_CHECKING:
|
|
from boxsdk.object.user import User
|
|
from boxsdk.object.task_assignment import TaskAssignment
|
|
from boxsdk.pagination.box_object_collection import BoxObjectCollection
|
|
|
|
|
|
class Task(BaseObject):
|
|
"""Represents a Box task."""
|
|
_item_type = 'task'
|
|
|
|
@api_call
|
|
def assign(self, assignee: 'User') -> 'TaskAssignment':
|
|
"""
|
|
Assign a task to a single user on a single file.
|
|
|
|
:param assignee:
|
|
The :class:`User` to assign the task to.
|
|
:returns:
|
|
A task assignment object.
|
|
"""
|
|
url = self._session.get_url('task_assignments')
|
|
body = {
|
|
'task': {
|
|
'type': 'task',
|
|
'id': self.object_id,
|
|
},
|
|
'assign_to': {
|
|
'id': assignee.object_id,
|
|
},
|
|
}
|
|
response = self._session.post(url, data=json.dumps(body)).json()
|
|
return self.translator.translate(
|
|
session=self._session,
|
|
response_object=response,
|
|
)
|
|
|
|
@api_call
|
|
def assign_with_login(self, assignee_login: Optional[str]) -> 'TaskAssignment':
|
|
"""
|
|
Used to assign a task to a single user with the login email address of the assignee.
|
|
|
|
:param assignee_login:
|
|
The login of the user to assign the task to.
|
|
:returns:
|
|
A task assignment object.
|
|
"""
|
|
url = self._session.get_url('task_assignments')
|
|
body = {
|
|
'task': {
|
|
'type': 'task',
|
|
'id': self.object_id,
|
|
},
|
|
'assign_to': {
|
|
'login': assignee_login,
|
|
},
|
|
}
|
|
response = self._session.post(url, data=json.dumps(body)).json()
|
|
return self.translator.translate(
|
|
session=self._session,
|
|
response_object=response,
|
|
)
|
|
|
|
@api_call
|
|
def get_assignments(self, fields: Iterable[str] = None) -> 'BoxObjectCollection':
|
|
"""
|
|
Get the entries in the file task assignment.
|
|
|
|
:param fields:
|
|
List of fields to request.
|
|
:returns:
|
|
An iterator of the entries in the file task assignment.
|
|
"""
|
|
return MarkerBasedObjectCollection(
|
|
session=self._session,
|
|
url=self.get_url('assignments'),
|
|
limit=None,
|
|
marker=None,
|
|
fields=fields,
|
|
return_full_pages=False,
|
|
)
|