10.6.20. Класс cerebro.events.BeforeEventMessage

class cerebro.events.BeforeEventMessage(event_type, event_id)[исходный код]

Базовый класс для события создания и изменения сообщения. Предоставляет доступ к данным нового/редактируемого сообщения перед записью в базу данных.

Методы

См.также

AfterEventMessage.

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 (string) – путь до файла.
  • comment (string) – текстовый комментарий.
  • hashtags (string, set(string, ) или list(string, )) – хэштег или массив хэштегов (каждый хэштег должен быть одним словом без пробелов).

Добавляет вложение как линк. Это вложение не попадет в файловое хранилище Cargador, а добавится как ссылка.

Именем вложения будет file_path.

См.также

add_attachment().

new_attachments()[исходный код]
Результат:список новых вложений в сообщение.
Тип результата:list(cerebro.aclasses.NewAttachment,)
new_task_status()[исходный код]
Результат:новый статус задачи, который задает пользователь при создании/редактировании сообщения. „(0, „“)“ означает, что пользователь переводит статус задачи в „Нет статуса“.
Тип результата:tuple(status_id, status_name) - список кортежей из двух полей: идентификатор статуса, имя статуса.

В графическом интерфейсе создания/редактирования сообщения есть возможность выбрать статус, в который перейдет задача после отправки сообщения. Если пользователь не меняет статус, то новый статус равен :py:meth:“текущему статусу задачи <cerebro.aclasses.Task.status>“.

См.также

set_new_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

См.также

new_task_status().

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 минут)