10.6.20. Класс cerebro.events.BeforeEventMessage¶
-
class
cerebro.events.
BeforeEventMessage
(event_type, event_id)[исходный код]¶ - Базовые классы:
cerebro.events.Event
,cerebro.aclasses.AbstractMessage
Базовый класс для события создания и изменения сообщения. Предоставляет доступ к данным нового/редактируемого сообщения перед записью в базу данных.
Методы
add_attachment()
add_attachment_as_link()
new_attachments()
new_task_status()
resources()
set_approved()
set_client_visible()
set_html_text()
set_new_task_status()
set_work_time()
методы базового класса cerebro.aclasses.AbstractMessage
методы базового класса cerebro.events.Event
См.также
-
add_attachment
(file_path, comment='', name='', hashtags=None)[исходный код]¶ Параметры: - file_path (string) – путь до файла.
- comment (string) – текстовый комментарий.
- name (string) – имя вложения. Если имя не задано, в качестве имени вложения берется имя файла.
- hashtags (string, set(string, ) или list(string, )) – хэштег или массив хэштегов (каждый хэштег должен быть одним словом без пробелов).
Добавляет вложение в сообщение.
def before_event(event): evtype = event.event_type() if evtype == event.EVENT_CREATION_OF_MESSAGE or evtype == event.EVENT_CHANGING_OF_MESSAGE: file_path = cerebro.core.python_api_dir() + '/examples/icon.png' event.add_attachment(file_path, 'Добавлен при помощи Cerebro Python API')
См.также
-
add_attachment_as_link
(file_path, comment='', hashtags=None)[исходный код]¶ Параметры: Добавляет вложение как линк. Это вложение не попадет в файловое хранилище Cargador, а добавится как ссылка.
Именем вложения будет file_path.
См.также
-
new_attachments
()[исходный код]¶ Результат: список новых вложений в сообщение. Тип результата: list( cerebro.aclasses.NewAttachment
,)
-
new_task_status
()[исходный код]¶ Результат: новый статус задачи, который задает пользователь при создании/редактировании сообщения. „(0, „“)“ означает, что пользователь переводит статус задачи в „Нет статуса“. Тип результата: tuple(status_id, status_name) - список кортежей из двух полей: идентификатор статуса, имя статуса. В графическом интерфейсе создания/редактирования сообщения есть возможность выбрать статус, в который перейдет задача после отправки сообщения. Если пользователь не меняет статус, то новый статус равен :py:meth:“текущему статусу задачи <cerebro.aclasses.Task.status>“.
См.также
-
resources
()[исходный код]¶ Результат: список материальных ресурсов, за которых производится отчет. Тип результата: list(tuple,) - [(resource_id, resource_name),] - список кортежей из двух полей: идентификатор материального ресурса, имя ресурса. Ресутсы могут быть только у сообщений
типа "Отчет за ресурс"
. Еслитип сообщения
не «Отчет за ресурс», возвращается None.if event.type() == event.TYPE_RESOURCE_REPORT: print('resources()', event.resources())
-
set_approved
(is_approved)[исходный код]¶ Параметры: is_approved (bool) – Если равен True, отчету устанавливается состояние „принято“, иначе состояние „принято“ сбрасывается. Устанавливает отчету статус „принято“.
Состояние „принято“ означает, что рабочее время отчета становится принятым и в графическом интерфейсе в сообщении появляется зеленая галочка.
Этот статус имеет смысл устанавливать только для сообщений
типа "Отчет"
илитипа "Отчет за ресурс"
.if event.type() == event.TYPE_REPORT: event.set_approved(True)
-
set_client_visible
(is_visible)[исходный код]¶ Параметры: is_visible (bool) – Если равен True, сообщение устанавливается как видимое для клиентов, иначе - невидимое. Устанавливает видимость сообщения для клиентов.
def before_event(event): evtype = event.event_type() if evtype == event.EVENT_CREATION_OF_MESSAGE: event.set_client_visible(True)
-
set_html_text
(text)[исходный код]¶ Параметры: text (string) – текст в формате html. Текст может быть и без форматирования. Устанавливает новый текст сообщения.
-
set_new_task_status
(status_id)[исходный код]¶ Параметры: status_id (int) – идентификатор статуса. Устанавливает новый статус, в который перейдет задача после отправки сообщения. „0“ переводит статус задачи в „Нет статуса“.
# Если пишется отчет и новый статус не равен 'pending review', # то устанавливаем этот статус if event.type() == event.TYPE_REPORT and event.new_task_status()[1] != 'pending review': task = cerebro.core.task(event.task_id()) possible_statuses = task.possible_statuses() for status in possible_statuses: if status[cerebro.aclasses.Statuses.DATA_NAME] == 'pending review': # Поверяем, что пользователь может переключится на статус 'pending review' event.set_new_task_status(status[cerebro.aclasses.Statuses.DATA_ID]) break
См.также
-
set_work_time
(minutes)[исходный код]¶ Параметры: minutes (float) – время в минутах. Устанавливает рабочее время сообщения для клиентов.
Если тип сообщения
"Отчет"
или"Отчет за ресурс"
, рабочее время означает заявленное время работы. Если тип сообщения"Рецензия"
, рабочее время означает принятое время работы за предыдущий отчет. Для остальных типов задавать рабочее время не имеет смысла.if event.type() == event.TYPE_REPORT: if event.work_time() > 60000: # если время отчета больше 1000 часов raise Exception('Не много ли?') # генерируем исключение (пользователь увидит окно с этой ошибкой) else event.work_time() < 60: # если время отчета меньше 1 часа event.set_work_time(60) # установим, так и быть, 1 час (60 минут)