10.1.11. Класс cerebro.aclasses.Task

class cerebro.aclasses.Task(task_id)[исходный код]

Класс задачи.

Методы

task = cerebro.core.current_task()
task = cerebro.core.task(task_id)
tasks = cerebro.core.selected_tasks(task_id)
ALLOCATED_ = ''

Поля кортежа данных назначенного пользователя (исполнителя)

ALLOCATED_FLAGS = 2

Флаги пользователя. Флаги пользователя описаны в классе cerebro.aclasses.Users.

ALLOCATED_ID = 0

Идентификатор пользователя.

ALLOCATED_NAME = 1

Полное имя пользователя.

DATA_ = ''

Поля кортежа данных задачи

DATA_ACTIVITY_ID = 6

Идентификатор вида деятельности.

DATA_ACTIVITY_NAME = 5

Имя вида деятельности.

DATA_ALLOCATED = 20

Назначенные пользователи (исполнители) на задачу. Тип string. Разделитель „;“.

DATA_BUDGET = 29

Бюджет задачи с её подзадачами.

DATA_CREATED = 9

Время создания задачи. Тип datetime.

DATA_CREATOR_ID = 18

Идентификатор автора задачи.

DATA_DURATION = 22

Рассчитанная длительность задачи в календарных днях. Тип float.

DATA_FLAGS = 16

Флаги задачи.

DATA_HUMAN_FINISH = 26

Заданное время окончания задачи в днях от 01.01.2000. Тип float.

DATA_HUMAN_START = 25

Заданное время начала задачи в днях от 01.01.2000. Тип float.

DATA_ID = 1

Идентификатор задачи.

DATA_MODERATOR_ID = 17

Идентификатор пользователя, изменившего задачу.

DATA_MODIFIED = 19

Время изменения задачи. Тип datetime.

DATA_MTM = 0

Время модификации данных. Тип datetime.

DATA_NAME = 3

Имя задачи.

DATA_OFFSET = 21

Рассчитанное время начала задачи в днях от 01.01.2000. Тип float.

DATA_PARENT_ID = 2

Идентификатор родительской задачи.

DATA_PARENT_URL = 4

Полный путь до родителькой задачи. Пример: /Test project/Scene 1/.

DATA_PLANNED = 12

Запланированное время на задачу в часах. Тип float.

DATA_PRIORITY = 10

Приоритет.

DATA_PRIVILEGE = 24

Права доступа текущего пользователя к задаче. Тип int.

DATA_PROGRESS = 11

Прогресс. Тип float от 0.0 до 100.0.

DATA_PROJECT_ID = 23

Идентификатор проекта задачи.

DATA_RESOURCE_APPROVED = 34

Принятое время материальных ресурсов по задаче с её подзадачами в часах. Тип float.

DATA_RESOURCE_DECLARED = 33

Заявленное время материальных ресурсов по задаче с её подзадачами в часах. Тип float.

DATA_RESOURCE_SELF_APPROVED = 32

Принятое время материальных ресурсов по задаче в минутах. Тип float.

DATA_RESOURCE_SELF_DECLARED = 31

Заявленное время материальных ресурсов по задаче в минутах. Тип float.

DATA_SELF_BUDGET = 27

Бюджет задачи.

DATA_SELF_SPENT = 28

Затраты (сумма платежи) по задаче.

DATA_SELF_USERS_APPROVED = 8

Принятое время пользователей по задаче в минутах. Тип float.

DATA_SELF_USERS_DECLARED = 7

Заявленное время пользователей по задаче в минутах. Тип float.

DATA_SPENT = 30

Затраты (сумма платежей) по задаче с её подзадачами.

DATA_STATUS_ID = 35

Идентификатор статуса.

DATA_THUMBS = 15

Хеши эскизов. Тип string. Разделитель „;“.

DATA_USERS_APPROVED = 14

Принятое время пользователей по задаче и её подзадачам в часах. Тип float.

DATA_USERS_DECLARED = 13

Заявленное время пользователей по задаче и её подзадачам в часах. Тип float.

FLAG_ = ''

Флаги задачи

FLAG_ASSIGNED = 38

Текуший пользователь является исполнителем на задаче.

FLAG_CLOSED = 2

Задача закрыта.

FLAG_CLOSED_EFFECTIVE = 30

Задача закрыта, поскольку закрыта задача более верхнего уровня.

FLAG_DELETED = 0

Задача удалена.

FLAG_FORUM_LOCKED = 5

Форум задачи только для чтения.

FLAG_HAS_CHILD = 32

Задача имеет подзадачи.

FLAG_HAS_MESSAGES = 33

Задача имеет сообщения в форуме.

FLAG_HAS_PLANNED = 56

Задача имеет собственное запланированное время.

FLAG_HAS_PROGRESS = 59

Задача имеет собственный прогресс.

FLAG_HAS_REFERENCE = 62

На задачу имеется одна или несколько ссылок.

FLAG_HAS_SUB_PERMS = 35

На задаче установленны собственные права доступа

FLAG_INTEREST = 39

Текуший пользователь следит за задачей.

FLAG_IS_REFERENCE = 61

Задача является ссылкой.

FLAG_LAST_EV_APPROVED = 45

Последнее сообщение в задаче принято.

FLAG_LAST_EV_CLIENT_VIS = 44

Последнее сообщение в задаче видимо для клиентов.

FLAG_NEED_ANSWER = 34

Задача требует ответа (в соответствии с правами доступа текущего пользователя).

FLAG_PERM_INHERIT_BLOCK = 1

У задачи сброшено наследование прав доступа.

FLAG_SUSPENED = 4

Задача остановлена (на паузе).

FLAG_SUSPENED_EFFECTIVE = 31

Задача остановлена, поскольку остановлена задача более верхнего уровня.

FLAG_TASK_AS_EVENT = 3

Задача помечена как событие.

PAYMENT_ = ''

Поля кортежа данных платежа

PAYMENT_COMMENT = 7

Текстовый комментарий к платежу.

PAYMENT_FLAGS = 4

Флаги платежа.

PAYMENT_ID = 2

Идентификатор платежа.

PAYMENT_MONEY = 5

Сумма платежа в условных единицах.

PAYMENT_MTM = 0

Время модификации данных. Тип datetime.

PAYMENT_RECORD_TIME = 6

Время записи о платеже. Тип datetime.

PAYMENT_TASK_ID = 3

Идентификатор задачи.

PAYMENT_USER_ID = 1

Идентификатор пользователя, совершившего платеж.

PAYMENT__FLAG_ = ''

Флаги платежа

PAYMENT__FLAG_CANCEL = 1

Платеж отменен.

PRIORITY_ = ''

Значения приоритета

PRIORITY_ABOVE_NORMAL = 1

Выше нормального.

PRIORITY_BELOW_NORMAL = -1

Ниже нормального.

PRIORITY_CRITICAL = 3

Критичный.

PRIORITY_HIGH = 2

Высокий.

PRIORITY_LOW = -2

Низкий.

PRIORITY_NORMAL = 0

Нормальный.

activity()[исходный код]
Результат:вид деятельности задачи. „(0,“„)“ означает, что вид деятельности задачи не задан.
Тип результата:tuple(activity_id, activity_name) - кортеж из двух полей: идентификатор вида деятельности, имя вида деятельности.

См.также

set_activity().

add_hashtags(hashtags)[исходный код]
Параметры:hashtags (string, set(string, ) или list(string, )) – хэштег или массив хэштегов (каждый хэштег должен быть одним словом без пробелов).

Добавляет хэштеги к задаче.

См.также

hashtags(), remove_hashtags().

allocated()[исходный код]
Результат:список кортежей данных по аллоцированным пользователям (исполнителям) на задачу.
Тип результата:list(tuple,)

Пример определения аллоцированного материального ресурса на задачу:

for user in task.allocated():
        if cerebro.aclasses.Users.is_resource(user[task.ALLOCATED_FLAGS]) == True:
                print('На задачу назначен ресурс', user[task.ALLOCATED_NAME])
budget()[исходный код]
Результат:бюджет задачи в условных единицах.
Тип результата:float

См.также

set_budget().

creation_time()[исходный код]
Результат:время создания задачи.
Тип результата:datetime
creator_id()[исходный код]
Результат:идентификатор автора задачи.
Тип результата:int
data()[исходный код]
Результат:кортеж данных по задаче.
Тип результата:tuple

По сути, большинство методов данного класса являются обёртками к этому кортежу. Поэтому вы можете пользоваться напрямую данными из него.

task.creator_id() == task.data()[task.DATA_CREATOR_ID]
task.priority() == task.data()[task.DATA_PRIORITY]
# и так далее                   
finish()[исходный код]
Результат:время окончания задачи.
Тип результата:datetime

См.также

set_finish().

flags()[исходный код]
Результат:флаги задачи.
Тип результата:int
if cerebro.core.has_flag(task.flags(), task.FLAG_FORUM_LOCKED): # проверка на залоченый форум задачи
        return  

См.также

set_flag().

hashtags()[исходный код]
Результат:список хэштегов задачи.
Тип результата:list(string,)

Пример: вывод хэштегов

for ht in task.hashtags():
        print('Hashtag:', ht)

См.также

add_hashtags(), remove_hashtags().

id()[исходный код]
Результат:идентификатор задачи.
Тип результата:int

(parameter_1, parameter_2)

moderator_id()[исходный код]
Результат:идентификатор пользователя, изменившего задачу.
Тип результата:int
modification_time()[исходный код]
Результат:время изменения задачи.
Тип результата:datetime
name()[исходный код]
Результат:имя задачи.
Тип результата:string

См.также

set_name().

parent_id()[исходный код]
Результат:идентификатор родительской задачи.
Тип результата:int
parent_url()[исходный код]
Результат:полный путь до родителькой задачи. Пример: „/Test project/Scene 1/“.
Тип результата:string
payments()[исходный код]
Результат:список кортежей данных по платежам задачи.
Тип результата:list(tuple,)

Пример проверки на отмененные платежи:

for pay in task.payments():
        if pay[task.PAYMENT_MONEY] > 1000 and cerebro.core.has_flag(pay[task.PAYMENT_FLAGS], task.PAYMENT__FLAG_CANCEL)==True:
                cerebro.core.print_warning('Платеж по задаче больше 1000 бфл отменен', task.name())
planned_time()[исходный код]
Результат:запланированное время на задачу в часах.
Тип результата:float

См.также

set_planned_time().

possible_statuses()[исходный код]
Результат:список кортежей данных по статусам, которые можно установить задаче.
Тип результата:list(tuple,)

В системе Cerebro для каждого статуса настраиваются разрешения на переключение для каждого статуса. Кроме того, у каждого статуса есть флаг наследственности. На задачи-контейнеры можно устанавливать только те статусы, у которых включен этот флаг. Поэтому список возможных статусов зависит от прав пользователя, текущего статуса, а так же наличия/отсутсвия подзадач у задачи.

Пример определения возможности установить задаче статус completed:

possible_statuses = task.possible_statuses()
for status in possible_statuses:
        if status[cerebro.aclasses.Statuses.DATA_NAME] == 'completed': 
                task.set_status(status[cerebro.aclasses.Statuses.DATA_ID])
                break
priority()[исходный код]
Результат:приоритет задачи.
Тип результата:int
if task.priority() == task.PRIORITY_CRITICAL:
        cerebro.core.print_warning('Задача критичного приоритета', task.name())

См.также

set_priority().

progress()[исходный код]
Результат:прогресс задачи от 0.0 до 100.0.
Тип результата:float

См.также

set_progress().

project_id()[исходный код]
Результат:идентификатор проекта задачи.
Тип результата:int
remove_allocated(user_id)[исходный код]
Параметры:user_id (int) – идентификатор пользователя.

Убирает исполнителя с задачи.

Пример удаления материальных ресурсов с задачи:

allocated = task.allocated()
for user in allocated:
        if cerebro.aclasses.Users.is_resource(user[task.ALLOCATED_FLAGS]) == True:
                task.remove_allocated(user[task.ALLOCATED_ID])          

См.также

set_allocated(), allocated().

remove_hashtags(hashtags)[исходный код]
Параметры:hashtags (string, set(string, ) или list(string, )) – хэштег или массив хэштегов (каждый хэштег должен быть одним словом без пробелов).

Удаляет хэштеги из задачи.

См.также

hashtags(), add_hashtags().

set_activity(activity_id)[исходный код]
Параметры:activity_id (int) – идентификатор вида деятельности.

Устанавливает вид деятельности задачи. „0“ переводит вид деятельности задачи в „Нет вида деятельности“.

Пример установки вида деятельности „animation“:

activities = cerebro.core.activities()
for activity in activities.data():
        if activity[activities.DATA_NAME] == 'animation':
                task.set_activity(activity[activities.DATA_ID])
                break

См.также

activity().

set_allocated(user_id)[исходный код]
Параметры:user_id (int) – идентификатор пользователя.

Назначает исполнителя на задачу.

Пример назначения на задачу всех пользователей, кроме материальных ресурсов:

users = cerebro.core.users()
for user in users.data():
        if cerebro.aclasses.Users.is_resource(user[users.DATA_FLAGS]) != True:
                task.set_allocated(user[users.DATA_ID])         

См.также

allocated(), remove_allocated().

set_budget(budget)[исходный код]
Параметры:budget (float) – в условных единицах.

Устанавливает бюджет.

Значение None сбрасывает собственный бюджет задачи. После сброса бюджет расчитывается из подзадач.

См.также

budget().

set_finish(time)[исходный код]
Параметры:time (float) – время в днях от 01.01.2000.

Устанавливает время окончания задачи в днях от 01.01.2000 в UTC.

task.set_finish(4506.75) # время окончания 03.05.2012 18:00 UTC

Значение None сбрасывает установленное время окончания задачи. После сброса время окончания расчитывается исходя из запланированного времени на задачу и расписания.

Пример установки времени окончания задачи через 3 дня от текущего:

import datetime

datetime_now = datetime.datetime.utcnow()
datetime_2000 = datetime.datetime(2000, 1, 1)
timedelta = datetime_now - datetime_2000
days = timedelta.total_seconds()/(24*60*60) + 3 

task.set_finish(days)           

См.также

finish().

set_flag(flag, is_set)[исходный код]
Параметры:
  • flag (int) – флаг задачи.
  • is_set (bool) – выбор действия.

Устанавливает флаг у задачи. Если аргумент is_set равен True флаг устанавливается, иначе сбрасывается.

# Установка задачи в статус Закрыта
task.set_flag(task.FLAG_CLOSED, True)

См.также

flags().

set_name(name)[исходный код]
Параметры:name (string) – имя задачи.

Устанавливает новое имя задаче.

Предупреждение

Задача не может содержать в имени следующие символы / # : ? & „ » , + |

См.также

name().

set_planned_time(hours)[исходный код]
Параметры:hours (float) – запланированные на задачу часы.

Устанавливает запланированное время задачи в часах.

Значение None сбрасывает запланированное время задачи. После сброса запланированное время расчитывается исходя из календарных сроков задачи и расписания.

См.также

planned_time().

set_priority(prior)[исходный код]
Параметры:prior (int) – приоритет задачи.

Устанавливает приоритет задачи.

task.set_priority(task.PRIORITY_HIGHT)

См.также

priority().

set_progress(progress)[исходный код]
Параметры:progress (float) – прогресс задачи от 0.0 до 100.0.

Устанавливает прогресс задачи. При установке прогреса в 100, задача считается Выполненой(Done).

Значение None сбрасывает собственный прогресс задачи. После сброса прогресс расчитывается из подзадач.

См.также

progress().

set_start(time)[исходный код]
Параметры:time (float) – время в днях от 01.01.2000.

Устанавливает время начала задачи в днях от 01.01.2000 в UTC.

task.set_start(4506.375) # время старта 03.05.2012 9:00 UTC

Значение None сбрасывает установленное время начала задачи. После сброса время начала расчитывается исходя из связей задачи и расписания.

Пример установки времени начала задачи в текущее:

import datetime

datetime_now = datetime.datetime.utcnow()
datetime_2000 = datetime.datetime(2000, 1, 1)
timedelta = datetime_now - datetime_2000
days = timedelta.total_seconds()/(24*60*60)     

task.set_start(days)            

См.также

start().

set_status(status_id)[исходный код]
Параметры:status_id (int) – идентификатор статуса.

Устанавливает статус задачи. „0“ переводит статус задачи в „Нет статуса“.

Пример установки статуса closed:

statuses = cerebro.core.statuses()
for status in statuses.data():
        if status[statuses.DATA_NAME] == 'closed':
                task.set_status(status[statuses.DATA_ID])
                break

См.также

status(), possible_statuses().

spent()[исходный код]
Результат:сумму расходов (платежей) на задачу.
Тип результата:float
start()[исходный код]
Результат:время начала задачи.
Тип результата:datetime

См.также

set_start().

status()[исходный код]
Результат:статус задачи. „(0,“„)“ означает, что статус задачи не задан.
Тип результата:tuple(status_id, status_name) - кортеж из двух полей: идентификатор статуса, имя статуса.

См.также

set_status(), possible_statuses().

tags()[исходный код]
Результат:список тегов задачи.
Тип результата:list(cerebro.aclasses.Tag,)