ferrero-opentext/Python-Version/venv/lib/python3.12/site-packages/boxsdk/object/task.py

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,
)