Исходный код cerebro.events

# -*- coding: utf-8 -*-
"""
Модуль cerebro.events содержит описание классов и типов событий,
передаваемых в функции :ref:`модуля обработки событий event <capi-event>`.

Типы событий описаны в :py:const:`базовом классе события Event <cerebro.events.Event.EVENT_>`.

.. rubric:: Классы	

* :py:class:`cerebro.events.AfterEventChangingOfAttachments`
* :py:class:`cerebro.events.AfterEventChangingOfMessage`
* :py:class:`cerebro.events.AfterEventChangingOfMessages`
* :py:class:`cerebro.events.AfterEventChangingOfTasks`
* :py:class:`cerebro.events.AfterEventChangingOfTasksTag`
* :py:class:`cerebro.events.AfterEventCreationOfMessage`
* :py:class:`cerebro.events.AfterEventCreationOfTask`
* :py:class:`cerebro.events.AfterEventMessage`
* :py:class:`cerebro.events.BeforeEventChangingOfAttachments`
* :py:class:`cerebro.events.BeforeEventChangingOfAttachmentsHashtags`
* :py:class:`cerebro.events.BeforeEventChangingOfMessage`
* :py:class:`cerebro.events.BeforeEventChangingOfMessages`
* :py:class:`cerebro.events.BeforeEventChangingOfMessagesHashtags`
* :py:class:`cerebro.events.BeforeEventChangingOfTasks`
* :py:class:`cerebro.events.BeforeEventChangingOfTasksAllocated`
* :py:class:`cerebro.events.BeforeEventChangingOfTasksHashtags`
* :py:class:`cerebro.events.BeforeEventChangingOfTasksTag`
* :py:class:`cerebro.events.BeforeEventCreationOfMessage`
* :py:class:`cerebro.events.BeforeEventCreationOfTask`
* :py:class:`cerebro.events.BeforeEventMessage`
* :py:class:`cerebro.events.Event`
* :py:class:`cerebro.events.EventChangingOfAttachments`
* :py:class:`cerebro.events.EventChangingOfMessages`
* :py:class:`cerebro.events.EventChangingOfTasks`
* :py:class:`cerebro.events.EventError`
* :py:class:`cerebro.events.TestEvent`


"""

import cerebro
import py_cerebro_classes

def get_val_by_type(val_id):
		pass

class TypeEvent:
	#Класс типа события. Для внутреннего использования.
	
	def __init__(self, type, id):
		self.type   = type
		self.id     = id


[документация]class Event: """ Базовый класс события. От этого класса наследуются все классы событий. .. rubric:: Методы * :py:meth:`event_type() <cerebro.events.Event.event_type>` * :py:meth:`type_str() <cerebro.events.Event.type_str>` """ EVENT_ = '' """ .. rubric:: Типы событий """ EVENT_TEST =0 """ Тестовое событие. Генерируется по нажатию на кнопку :ref:`генерации тестового события <capi_test_btn>`. Объекты передаваемые в функции событий: * def :py:func:`before_event <event.before_event>` (:py:class:`Event <cerebro.events.Event>`) * def :py:func:`after_event <event.after_event>` (:py:class:`Event <cerebro.events.Event>`) * def :py:func:`error_event <event.error_event>` (:py:class:`EventError <cerebro.events.EventError>`, :py:class:`Event <cerebro.events.Event>`) """ EVENT_CREATION_OF_MESSAGE =1 """ Cобытие создания сообщения. Генерируется при нажатии кнопки "Отправить" в интерфейсе создания сообщения. .. note:: Событие генерируется только при непосредственном создании сообщения. При вставке сообщения скопированного или вырезанного из другого форума будут генерироваться другие события, которые появятся в будущем. Объекты передаваемые в функции событий: * def :py:func:`before_event <event.before_event>` (:py:class:`BeforeEventCreationOfMessage <cerebro.events.BeforeEventCreationOfMessage>`) * def :py:func:`after_event <event.after_event>` (:py:class:`AfterEventCreationOfMessage <cerebro.events.AfterEventCreationOfMessage>`) * def :py:func:`error_event <event.error_event>` (:py:class:`EventError <cerebro.events.EventError>`, :py:class:`BeforeEventCreationOfMessage <cerebro.events.BeforeEventCreationOfMessage>`) """ EVENT_CHANGING_OF_MESSAGE =10 """ Cобытие редактирования сообщения. Генерируется в интерфейсе редактирования ранее созданного сообщения. Объекты передаваемые в функции событий: * def :py:func:`before_event <event.before_event>` (:py:class:`BeforeEventChangingOfMessage <cerebro.events.BeforeEventChangingOfMessage>`) * def :py:func:`after_event <event.after_event>` (:py:class:`AfterEventChangingOfMessage <cerebro.events.AfterEventChangingOfMessage>`) * def :py:func:`error_event <event.error_event>` (:py:class:`EventError <cerebro.events.EventError>`, :py:class:`BeforeEventChangingOfMessage <cerebro.events.BeforeEventChangingOfMessage>`) """ EVENT_CHANGING_OF_MESSAGE_HASHTAGS =12 """ Cобытие редактирования хэштегов сообщения. Генерируется при редактировании хэштегов у сообщения в интерфейсе форума. Объекты передаваемые в функции событий: * def :py:func:`before_event <event.before_event>` (:py:class:`BeforeEventChangingOfMessagesHashtags <cerebro.events.BeforeEventChangingOfMessageHashtags>`) * def :py:func:`error_event <event.error_event>` (:py:class:`EventError <cerebro.events.EventError>`, :py:class:`BeforeEventChangingOfMessagesHashtags <cerebro.events.BeforeEventChangingOfMessagesHashtags>`) """ EVENT_CHANGING_OF_MESSAGE_APPROVED =13 """ Событие редактирования сообщения. Объекты передаваемые в функции событий: * def :py:func:`before_event <event.before_event>` (:py:class:`BeforeEventChangingOfMessages <cerebro.events.BeforeEventChangingOfMessages>`) * def :py:func:`error_event <event.error_event>` (:py:class:`EventError <cerebro.events.EventError>`, :py:class:`BeforeEventChangingOfMessages <cerebro.events.BeforeEventChangingOfMessages>`) """ EVENT_CHANGING_OF_MESSAGE_CLIENT_VISIBLE =14 """ Событие редактирования сообщения. Объекты передаваемые в функции событий: * def :py:func:`before_event <event.before_event>` (:py:class:`BeforeEventChangingOfMessages <cerebro.events.BeforeEventChangingOfMessages>`) * def :py:func:`error_event <event.error_event>` (:py:class:`EventError <cerebro.events.EventError>`, :py:class:`BeforeEventChangingOfMessages <cerebro.events.BeforeEventChangingOfMessages>`) """ EVENT_CREATION_OF_TASK =100 """ Cобытие создания новой задачи. Генерируется при нажатии кнопки "Отправить" в интерфейсе создания задачи. При создании новой задачи, создается новое сообщение типа "Постановка задачи", поэтому в событии создания задачи обрабатывается и создание этого сообщения. .. note:: Событие генерируется только при непосредственном создании задачи. При дублицировании, вставке задач, а также при добавлении задач с помощью вставки файлов или текста будут генерироваться другие события, которые появятся в будущем. Объекты передаваемые в функции событий: * def :py:func:`before_event <event.before_event>` (:py:class:`BeforeEventCreationOfTask <cerebro.events.BeforeEventCreationOfTask>`) * def :py:func:`after_event <event.after_event>` (:py:class:`AfterEventCreationOfTask <cerebro.events.AfterEventCreationOfTask>`) * def :py:func:`error_event <event.error_event>` (:py:class:`EventError <cerebro.events.EventError>`, :py:class:`BeforeEventCreationOfTask <cerebro.events.BeforeEventCreationOfTask>`) """ EVENT_CHANGING_OF_TASKS_NAME =110 """ Cобытие изменения имени задачи. Генерируется при изменении имени в таблице или в окне свойств задач. Объекты передаваемые в функции событий: * def :py:func:`before_event <event.before_event>` (:py:class:`BeforeEventChangingOfTasks <cerebro.events.BeforeEventChangingOfTasks>`) * def :py:func:`after_event <event.after_event>` (:py:class:`AfterEventChangingOfTasks <cerebro.events.AfterEventChangingOfTasks>`) * def :py:func:`error_event <event.error_event>` (:py:class:`EventError <cerebro.events.EventError>`, :py:class:`BeforeEventChangingOfTasks <cerebro.events.BeforeEventChangingOfTasks>`) """ EVENT_CHANGING_OF_TASKS_ACTIVITY =111 """ Cобытие изменения вида деятельности задач. Генерируется при изменении вида деятельности в таблице или в окне свойств задач. Объекты передаваемые в функции событий: * def :py:func:`before_event <event.before_event>` (:py:class:`BeforeEventChangingOfTasks <cerebro.events.BeforeEventChangingOfTasks>`) * def :py:func:`after_event <event.after_event>` (:py:class:`AfterEventChangingOfTasks <cerebro.events.AfterEventChangingOfTasks>`) * def :py:func:`error_event <event.error_event>` (:py:class:`EventError <cerebro.events.EventError>`, :py:class:`BeforeEventChangingOfTasks <cerebro.events.BeforeEventChangingOfTasks>`) """ EVENT_CHANGING_OF_TASKS_PRIORITY =112 """ Cобытие изменения приоритета задач. Генерируется при изменении приоритета в таблице или в окне свойств задач. Объекты передаваемые в функции событий: * def :py:func:`before_event <event.before_event>` (:py:class:`BeforeEventChangingOfTasks <cerebro.events.BeforeEventChangingOfTasks>`) * def :py:func:`after_event <event.after_event>` (:py:class:`AfterEventChangingOfTasks <cerebro.events.AfterEventChangingOfTasks>`) * def :py:func:`error_event <event.error_event>` (:py:class:`EventError <cerebro.events.EventError>`, :py:class:`BeforeEventChangingOfTasks <cerebro.events.BeforeEventChangingOfTasks>`) """ EVENT_CHANGING_OF_TASKS_PROGRESS =113 """ Cобытие изменения прогресса задач. Генерируется при изменении прогресса задач в таблице или в окне свойств задач, а так же по кнопке "Пометить задачу как выполненную". Объекты передаваемые в функции событий: * def :py:func:`before_event <event.before_event>` (:py:class:`BeforeEventChangingOfTasks <cerebro.events.BeforeEventChangingOfTasks>`) * def :py:func:`after_event <event.after_event>` (:py:class:`AfterEventChangingOfTasks <cerebro.events.AfterEventChangingOfTasks>`) * def :py:func:`error_event <event.error_event>` (:py:class:`EventError <cerebro.events.EventError>`, :py:class:`BeforeEventChangingOfTasks <cerebro.events.BeforeEventChangingOfTasks>`) """ EVENT_CHANGING_OF_TASKS_PLANNED_TIME =114 """ Cобытие изменения запланированного времени задач. Генерируется при изменении запланированного времени в таблице или в окне свойств задач. Объекты передаваемые в функции событий: * def :py:func:`before_event <event.before_event>` (:py:class:`BeforeEventChangingOfTasks <cerebro.events.BeforeEventChangingOfTasks>`) * def :py:func:`after_event <event.after_event>` (:py:class:`AfterEventChangingOfTasks <cerebro.events.AfterEventChangingOfTasks>`) * def :py:func:`error_event <event.error_event>` (:py:class:`EventError <cerebro.events.EventError>`, :py:class:`BeforeEventChangingOfTasks <cerebro.events.BeforeEventChangingOfTasks>`) """ EVENT_CHANGING_OF_TASKS_START =115 """ Cобытие изменения времени начала задач. Генерируется при изменении времени начала в таблице или в окне свойств задач, а также на диаграмме Ганта. Объекты передаваемые в функции событий: * def :py:func:`before_event <event.before_event>` (:py:class:`BeforeEventChangingOfTasks <cerebro.events.BeforeEventChangingOfTasks>`) * def :py:func:`after_event <event.after_event>` (:py:class:`AfterEventChangingOfTasks <cerebro.events.AfterEventChangingOfTasks>`) * def :py:func:`error_event <event.error_event>` (:py:class:`EventError <cerebro.events.EventError>`, :py:class:`BeforeEventChangingOfTasks <cerebro.events.BeforeEventChangingOfTasks>`) """ EVENT_CHANGING_OF_TASKS_FINISH =116 """ Cобытие изменения времени окончания задач. Генерируется при изменении времени окончания в таблице или в окне свойств задач, а также на диаграмме Ганта. Объекты передаваемые в функции событий: * def :py:func:`before_event <event.before_event>` (:py:class:`BeforeEventChangingOfTasks <cerebro.events.BeforeEventChangingOfTasks>`) * def :py:func:`after_event <event.after_event>` (:py:class:`AfterEventChangingOfTasks <cerebro.events.AfterEventChangingOfTasks>`) * def :py:func:`error_event <event.error_event>` (:py:class:`EventError <cerebro.events.EventError>`, :py:class:`BeforeEventChangingOfTasks <cerebro.events.BeforeEventChangingOfTasks>`) """ EVENT_CHANGING_OF_TASKS_BUDGET =117 """ Cобытие изменения бюджета задач. Генерируется при изменении бюджета в таблице или в окне свойств задач. Объекты передаваемые в функции событий: * def :py:func:`before_event <event.before_event>` (:py:class:`BeforeEventChangingOfTasks <cerebro.events.BeforeEventChangingOfTasks>`) * def :py:func:`after_event <event.after_event>` (:py:class:`AfterEventChangingOfTasks <cerebro.events.AfterEventChangingOfTasks>`) * def :py:func:`error_event <event.error_event>` (:py:class:`EventError <cerebro.events.EventError>`, :py:class:`BeforeEventChangingOfTasks <cerebro.events.BeforeEventChangingOfTasks>`) """ EVENT_CHANGING_OF_TASKS_ALLOCATED =118 """ Cобытие добавления/удаления пользователей и материальных ресурсов на задачи. Генерируется при изменении списка исполнителей в таблице или в окне свойств задач. Объекты передаваемые в функции событий: * def :py:func:`before_event <event.before_event>` (:py:class:`BeforeEventChangingOfTasksAllocated <cerebro.events.BeforeEventChangingOfTasksAllocated>`) * def :py:func:`after_event <event.after_event>` (:py:class:`AfterEventChangingOfTasks <cerebro.events.AfterEventChangingOfTasks>`) * def :py:func:`error_event <event.error_event>` (:py:class:`EventError <cerebro.events.EventError>`, :py:class:`BeforeEventChangingOfTasksAllocated <cerebro.events.BeforeEventChangingOfTasksAllocated>`) """ EVENT_CHANGING_OF_TASKS_FLAG =119 EVENT_CHANGING_OF_TASKS_PAYMENT =120 EVENT_CHANGING_OF_TASKS_TAG =121 """ Cобытие изменения значения тега задач. Генерируется при изменении значения тега в таблице или в окне свойств задач. Объекты передаваемые в функции событий: * def :py:func:`before_event <event.before_event>` (:py:class:`BeforeEventChangingOfTasksTag <cerebro.events.BeforeEventChangingOfTasksTag>`) * def :py:func:`after_event <event.after_event>` (:py:class:`AfterEventChangingOfTasksTag <cerebro.events.AfterEventChangingOfTasksTag>`) * def :py:func:`error_event <event.error_event>` (:py:class:`EventError <cerebro.events.EventError>`, :py:class:`BeforeEventChangingOfTasksTag <cerebro.events.BeforeEventChangingOfTasksTag>`) """ EVENT_CHANGING_OF_TASKS_LINK =122 EVENT_CHANGING_OF_TASKS_STATUS =123 """ Cобытие изменения статуса задач. Генерируется при изменении статуса задачи в таблице или в окне свойств задач, а также в интерфейсе создания/редактирования сообщения. Объекты передаваемые в функции событий: * def :py:func:`before_event <event.before_event>` (:py:class:`BeforeEventChangingOfTasks <cerebro.events.BeforeEventChangingOfTasks>`) * def :py:func:`after_event <event.after_event>` (:py:class:`AfterEventChangingOfTasks <cerebro.events.AfterEventChangingOfTasks>`) * def :py:func:`error_event <event.error_event>` (:py:class:`EventError <cerebro.events.EventError>`, :py:class:`BeforeEventChangingOfTasks <cerebro.events.BeforeEventChangingOfTasks>`) """ EVENT_CHANGING_OF_TASKS_HASHTAGS =124 """ Cобытие редактирования хэштегов задач. Генерируется при редактировании хэштегов задачи в таблице или в окне свойств задач. Объекты передаваемые в функции событий: * def :py:func:`before_event <event.before_event>` (:py:class:`BeforeEventChangingOfTasksHashtags <cerebro.events.BeforeEventChangingOfTasksHashtags>`) * def :py:func:`error_event <event.error_event>` (:py:class:`EventError <cerebro.events.EventError>`, :py:class:`BeforeEventChangingOfTasksHashtags <cerebro.events.BeforeEventChangingOfTasksHashtags>`) """ EVENT_CHANGING_OF_ATTACHMENT_HASHTAGS =1010 """ Cобытие редактирования хэштегов вложений. Генерируется при редактировании хэштегов вложений в таблице или в окне редактирования хэштегов вложений. Объекты передаваемые в функции событий: * def :py:func:`before_event <event.before_event>` (:py:class:`BeforeEventChangingOfAttachmentsHashtags <cerebro.events.BeforeEventChangingOfAttachmentsHashtags>`) * def :py:func:`error_event <event.error_event>` (:py:class:`EventError <cerebro.events.EventError>`, :py:class:`BeforeEventChangingOfAttachmentsHashtags <cerebro.events.BeforeEventChangingOfAttachmentsHashtags>`) """ EVENT_MANAGE_OF_TASK_REFERENCE =1100 def __init__(self, event_type, event_id): self.__event = TypeEvent(event_type, event_id)
[документация] def event_type(self): """ :returns: :py:const:`тип события <cerebro.events.Event.EVENT_>`. :rtype: int """ return self.__event.type;
[документация] def type_str(self): """ :returns: строковое имя типа события. :rtype: string """ if self.__event.type == Event.EVENT_TEST: return 'EVENT_TEST' elif self.__event.type == Event.EVENT_CREATION_OF_MESSAGE: return 'EVENT_CREATION_OF_MESSAGE' elif self.__event.type == Event.EVENT_CHANGING_OF_MESSAGE: return 'EVENT_CHANGING_OF_MESSAGE' elif self.__event.type == Event.EVENT_CHANGING_OF_MESSAGE_APPROVED: return 'EVENT_CHANGING_OF_MESSAGE_APPROVED' elif self.__event.type == Event.EVENT_CHANGING_OF_MESSAGE_CLIENT_VISIBLE: return 'EVENT_CHANGING_OF_MESSAGE_CLIENT_VISIBLE' elif self.__event.type == Event.EVENT_CREATION_OF_TASK: return 'EVENT_CREATION_OF_TASK' elif self.__event.type == Event.EVENT_CHANGING_OF_TASKS_NAME: return 'EVENT_CHANGING_OF_TASKS_NAME' elif self.__event.type == Event.EVENT_CHANGING_OF_TASKS_ACTIVITY: return 'EVENT_CHANGING_OF_TASKS_ACTIVITY' elif self.__event.type == Event.EVENT_CHANGING_OF_TASKS_PRIORITY: return 'EVENT_CHANGING_OF_TASKS_PRIORITY' elif self.__event.type == Event.EVENT_CHANGING_OF_TASKS_PROGRESS: return 'EVENT_CHANGING_OF_TASKS_PROGRESS' elif self.__event.type == Event.EVENT_CHANGING_OF_TASKS_PLANNED_TIME: return 'EVENT_CHANGING_OF_TASKS_PLANNED_TIME' elif self.__event.type == Event.EVENT_CHANGING_OF_TASKS_START: return 'EVENT_CHANGING_OF_TASKS_START' elif self.__event.type == Event.EVENT_CHANGING_OF_TASKS_FINISH: return 'EVENT_CHANGING_OF_TASKS_FINISH' elif self.__event.type == Event.EVENT_CHANGING_OF_TASKS_BUDGET: return 'EVENT_CHANGING_OF_TASKS_BUDGET' elif self.__event.type == Event.EVENT_CHANGING_OF_TASKS_ALLOCATED: return 'EVENT_CHANGING_OF_TASKS_ALLOCATED' elif self.__event.type == Event.EVENT_CHANGING_OF_TASKS_FLAG: return 'EVENT_CHANGING_OF_TASKS_FLAG' elif self.__event.type == Event.EVENT_CHANGING_OF_TASKS_PAYMENT: return 'EVENT_CHANGING_OF_TASKS_PAYMENT' elif self.__event.type == Event.EVENT_CHANGING_OF_TASKS_TAG: return 'EVENT_CHANGING_OF_TASKS_TAG' elif self.__event.type == Event.EVENT_CHANGING_OF_TASKS_LINK: return 'EVENT_CHANGING_OF_TASKS_LINK' elif self.__event.type == Event.EVENT_CHANGING_OF_TASKS_STATUS: return 'EVENT_CHANGING_OF_TASKS_STATUS' elif self.__event.type == Event.EVENT_CHANGING_OF_MESSAGE_HASHTAGS: return 'EVENT_CHANGING_OF_MESSAGE_HASHTAGS' elif self.__event.type == Event.EVENT_CHANGING_OF_TASKS_HASHTAGS: return 'EVENT_CHANGING_OF_TASKS_HASHTAGS' elif self.__event.type == Event.EVENT_CHANGING_OF_ATTACHMENT_HASHTAGS: return 'EVENT_CHANGING_OF_ATTACHMENT_HASHTAGS'
[документация]class EventError: """ Класс ошибки события. Имеет два атрибута: * code (int) - код ошибки * text (string) - текст ошибки Передается в функцию error_event модуля event. :: def error_event(error, event): print(error) print(error.code) print(error.text) """ def __init__(self, code, text): self.code = code self.text = text def __repr__(self): return "Error_event({0.text!r}. {0.code!r})".format(self) def __str__(self): return "Error code {0.code}: {0.text}".format(self)
[документация]class TestEvent(Event): """ Класс тестового события. .. rubric:: Методы * :py:class:`методы базового класса cerebro.events.Event <cerebro.events.Event>` Вызов тестого события происходит при нажатии на кнопке :ref:`Вызвать тестовое событие <capi_test_btn>` на панели отладки Python. Это событие нужно для того чтобы проверить корректность работы событийного механизма. Объект класса передается в функции :py:func:`before_event <event.before_event>`, :py:func:`after_event <event.after_event>` и :py:func:`error_event <event.error_event>` модуля :ref:`event <capi-event>`. :: def after_event(event): if event.event_type() == event.EVENT_TEST: print('Тестовое событие прошло успешно') """ def __init__(self, event_type, event_id): Event.__init__(self, event_type, event_id)
[документация]class BeforeEventMessage(Event, cerebro.aclasses.AbstractMessage): """ Базовый класс для события создания и изменения сообщения. Предоставляет доступ к данным нового/редактируемого сообщения перед записью в базу данных. .. rubric:: Методы * :py:meth:`add_attachment() <cerebro.events.BeforeEventMessage.add_attachment>` * :py:meth:`add_attachment_as_link() <cerebro.events.BeforeEventMessage.add_attachment_as_link>` * :py:meth:`new_attachments() <cerebro.events.BeforeEventMessage.new_attachments>` * :py:meth:`new_task_status() <cerebro.events.BeforeEventMessage.new_task_status>` * :py:meth:`resources() <cerebro.events.BeforeEventMessage.resources>` * :py:meth:`set_approved() <cerebro.events.BeforeEventMessage.set_approved>` * :py:meth:`set_client_visible() <cerebro.events.BeforeEventMessage.set_client_visible>` * :py:meth:`set_html_text() <cerebro.events.BeforeEventMessage.set_html_text>` * :py:meth:`set_new_task_status() <cerebro.events.BeforeEventMessage.set_new_task_status>` * :py:meth:`set_work_time() <cerebro.events.BeforeEventMessage.set_work_time>` * :py:class:`методы базового класса cerebro.aclasses.AbstractMessage <cerebro.aclasses.AbstractMessage>` * :py:class:`методы базового класса cerebro.events.Event <cerebro.events.Event>` .. seealso:: :py:class:`AfterEventMessage <cerebro.events.AfterEventMessage>`. """ def __init__(self, event_type, event_id): Event.__init__(self, event_type, event_id) cerebro.aclasses.AbstractMessage.__init__(self, event_id, -2)
[документация] def resources(self): """ :returns: список материальных ресурсов, за которых производится отчет. :rtype: list(tuple,) - [(resource_id, resource_name),] - список кортежей из двух полей: идентификатор материального ресурса, имя ресурса. Ресутсы могут быть только у сообщений :py:const:`типа "Отчет за ресурс" <cerebro.aclasses.AbstractMessage.TYPE_RESOURCE_REPORT>`. Если :py:const:`тип сообщения <cerebro.aclasses.AbstractMessage.TYPE_>` не "Отчет за ресурс", возвращается None. :: if event.type() == event.TYPE_RESOURCE_REPORT: print('resources()', event.resources()) """ return py_cerebro_classes.message_resources(self._Event__event.id)
[документация] def new_attachments(self): """ :returns: список новых вложений в сообщение. :rtype: list(:py:class:`cerebro.aclasses.NewAttachment`,) """ attachs = list() ids = py_cerebro_classes.message_attach_ids(self._Event__event.id, self._AbstractMessage__message_id) if ids != None: for id in ids: attachs.append(cerebro.aclasses.NewAttachment(self._Event__event.id, self._AbstractMessage__message_id, id)) return attachs
[документация] def add_attachment(self, file_path, comment = '', name= '', hashtags = None): """ :param string file_path: путь до файла. :param string comment: текстовый комментарий. :param string name: имя вложения. Если имя не задано, в качестве имени вложения берется имя файла. :param hashtags: хэштег или массив хэштегов (каждый хэштег должен быть одним словом без пробелов). :type 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') .. seealso:: :py:meth:`add_attachment_as_link() <cerebro.events.BeforeEventMessage.add_attachment_as_link>`. """ py_cerebro_classes.message_add_attach(self._Event__event.id, False, file_path, name, comment)
[документация] def set_html_text(self, text): """ :param string text: текст в формате html. Текст может быть и без форматирования. Устанавливает новый текст сообщения. """ py_cerebro_classes.message_set_html_text(self._Event__event.id, text)
[документация] def set_client_visible(self, is_visible): """ :param bool is_visible: Если равен True, сообщение устанавливается как видимое для клиентов, иначе - невидимое. Устанавливает видимость сообщения для клиентов. :: def before_event(event): evtype = event.event_type() if evtype == event.EVENT_CREATION_OF_MESSAGE: event.set_client_visible(True) """ py_cerebro_classes.message_set_client_visible(self._Event__event.id, is_visible)
[документация] def set_work_time(self, minutes): """ :param float minutes: время в минутах. Устанавливает рабочее время сообщения для клиентов. Если тип сообщения :py:const:`"Отчет" <cerebro.aclasses.AbstractMessage.TYPE_REPORT>` или :py:const:`"Отчет за ресурс" <cerebro.aclasses.AbstractMessage.TYPE_RESOURCE_REPORT>`, рабочее время означает заявленное время работы. Если тип сообщения :py:const:`"Рецензия" <cerebro.aclasses.AbstractMessage.TYPE_REVIEW>`, рабочее время означает принятое время работы за предыдущий отчет. Для остальных типов задавать рабочее время не имеет смысла. :: 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 минут) """ py_cerebro_classes.message_set_work_time(self._Event__event.id, minutes)
[документация] def set_approved(self, is_approved): """ :param bool is_approved: Если равен True, отчету устанавливается состояние 'принято', иначе состояние 'принято' сбрасывается. Устанавливает отчету статус 'принято'. Состояние 'принято' означает, что рабочее время отчета становится принятым и в графическом интерфейсе в сообщении появляется зеленая галочка. Этот статус имеет смысл устанавливать только для сообщений :py:const:`типа "Отчет" <cerebro.aclasses.AbstractMessage.TYPE_REPORT>` или :py:const:`типа "Отчет за ресурс" <cerebro.aclasses.AbstractMessage.TYPE_RESOURCE_REPORT>`. :: if event.type() == event.TYPE_REPORT: event.set_approved(True) """ py_cerebro_classes.message_set_approved(self._Event__event.id, is_approved)
[документация] def new_task_status(self): """ :returns: новый статус задачи, который задает пользователь при создании/редактировании сообщения. '(0, '')' означает, что пользователь переводит статус задачи в 'Нет статуса'. :rtype: tuple(status_id, status_name) - список кортежей из двух полей: идентификатор статуса, имя статуса. В графическом интерфейсе создания/редактирования сообщения есть возможность выбрать статус, в который перейдет задача после отправки сообщения. Если пользователь не меняет статус, то новый статус равен :py:meth:'текущему статусу задачи <cerebro.aclasses.Task.status>'. .. seealso:: :py:meth:`set_new_task_status() <cerebro.events.BeforeEventMessage.set_new_task_status>`. """ mdata = py_cerebro_classes.message_data(self._AbstractMessage__event_id, self._AbstractMessage__message_id) return (mdata[cerebro.aclasses.AbstractMessage.DATA_STATUS_ID], mdata[cerebro.aclasses.AbstractMessage.DATA_STATUS_NAME])
[документация] def set_new_task_status(self, status_id): """ :param int status_id: идентификатор статуса. Устанавливает новый статус, в который перейдет задача после отправки сообщения. '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 .. seealso:: :py:meth:`new_task_status() <cerebro.events.BeforeEventMessage.new_task_status>`. """ return py_cerebro_classes.message_set_new_status(self._Event__event.id, status_id)
[документация]class AfterEventMessage(Event, cerebro.aclasses.Message): """ Базовый класс для события создания и изменения сообщения. Предоставляет доступ к данным созданного/измененного сообщения после записи в базу данных. .. rubric:: Методы * :py:meth:`new_attachments() <cerebro.events.AfterEventMessage.new_attachments>` * :py:meth:`resources() <cerebro.events.AfterEventMessage.resources>` * :py:class:`методы базового класса cerebro.aclasses.Message <cerebro.aclasses.Message>` * :py:class:`методы базового класса cerebro.events.Event <cerebro.events.Event>` .. seealso:: :py:class:`BeforeEventMessage <cerebro.events.BeforeEventMessage>`. """ def __init__(self, event_type, event_id): Event.__init__(self, event_type, event_id) cerebro.aclasses.Message.__init__(self, py_cerebro_classes.event_message_id(event_id))
[документация] def resources(self): """ :returns: список материальных ресурсов, за которых был создан отчет. :rtype: list(tuple,) - [(resource_id, resource_name),] - список кортежей из двух полей: идентификатор материального ресурса, имя ресурса. Ресурсы могут быть только у сообщений :py:const:`типа "Отчет за ресурс" <cerebro.aclasses.AbstractMessage.TYPE_RESOURCE_REPORT>`. Если :py:const:`тип сообщения <cerebro.aclasses.AbstractMessage.TYPE_>` не "Отчет за ресурс", возвращается None. :: if event.type() == event.TYPE_RESOURCE_REPORT: print('resources()', event.resources()) """ return py_cerebro_classes.message_resources(self._Event__event.id)
[документация] def new_attachments(self): """ :returns: список новых вложений в сообщение. :rtype: list(:py:class:`cerebro.aclasses.AbstractAttachment`,) """ attachs = list() ids = py_cerebro_classes.message_attach_ids(self._Event__event.id, -2) if ids != None: for id in ids: attachs.append(cerebro.aclasses.AbstractAttachment(self._Event__event.id, -2, id)) return attachs
[документация]class BeforeEventCreationOfMessage(BeforeEventMessage): """ Класс для события создания сообщения. Предоставляет доступ к данным нового сообщения перед записью в базу данных. .. rubric:: Методы * :py:meth:`add_hashtags() <cerebro.events.BeforeEventMessage.add_hashtags>` * :py:meth:`remove_hashtags() <cerebro.events.BeforeEventMessage.remove_hashtags>` * :py:class:`методы базового класса cerebro.events.BeforeEventMessage <cerebro.events.BeforeEventMessage>` Объект класса передается в функции :py:func:`before_event <event.before_event>` и :py:func:`error_event <event.error_event>` (в случаи возникновения ошибки) модуля :ref:`event <capi-event>`. :: def before_event(event): if event.event_type() == event.EVENT_CREATION_OF_MESSAGE: ... .. seealso:: :py:class:`AfterEventCreationOfMessage <cerebro.events.AfterEventCreationOfMessage>`. """ def __init__(self, event_type, event_id): BeforeEventMessage.__init__(self, event_type, event_id)
[документация] def add_hashtags(self, hashtags): """ :param hashtags: хэштег или массив хэштегов (каждый хэштег должен быть одним словом без пробелов). :type hashtags: string, set(string, ) или list(string, ) Добавляет хэштеги к сообщению. .. seealso:: :py:meth:`remove_hashtags() <cerebro.events.BeforeEventCreationOfMessage.remove_hashtags>`. """ pass
[документация] def remove_hashtags(self, hashtags): """ :param hashtags: хэштег или массив хэштегов (каждый хэштег должен быть одним словом без пробелов). :type hashtags: string, set(string, ) или list(string, ) Удаляет хэштеги из сообщения. .. seealso:: :py:meth:`add_hashtags() <cerebro.events.BeforeEventCreationOfMessage.add_hashtags>`. """ pass
[документация]class AfterEventCreationOfMessage(AfterEventMessage): """ Класс для события создания сообщения. Предоставляет доступ к данным нового сообщения после записи в базу данных. .. rubric:: Методы * :py:class:`методы базового класса cerebro.events.AfterEventMessage <cerebro.events.AfterEventMessage>` Объект класса передается в функцию :py:func:`after_event <event.after_event>` модуля :ref:`event <capi-event>`. :: def after_event(event): if event.event_type() == event.EVENT_CREATION_OF_MESSAGE: ... .. seealso:: :py:class:`BeforeEventCreationOfMessage <cerebro.events.BeforeEventCreationOfMessage>`. """ def __init__(self, event_type, event_id): AfterEventMessage.__init__(self, event_type, event_id)
[документация]class BeforeEventChangingOfMessage(BeforeEventMessage): """ Класс для события редактирования сообщения. Предоставляет доступ к данным редактируемого сообщения перед записью в базу данных. .. rubric:: Методы * :py:meth:`existing_attachments() <cerebro.events.BeforeEventChangingOfMessage.existing_attachments>` * :py:meth:`original_message() <cerebro.events.BeforeEventChangingOfMessage.original_message>` * :py:class:`методы базового класса cerebro.events.BeforeEventMessage <cerebro.events.BeforeEventMessage>` Объект класса передается в функции :py:func:`before_event <event.before_event>` и :py:func:`error_event <event.error_event>` (в случаи возникновения ошибки) модуля :ref:`event <capi-event>`. :: def before_event(event): if event.event_type() == event.EVENT_CHANGING_OF_MESSAGE: ... .. seealso:: :py:class:`AfterEventChangingOfMessage <cerebro.events.AfterEventChangingOfMessage>`. """ def __init__(self, event_type, event_id): BeforeEventMessage.__init__(self, event_type, event_id)
[документация] def existing_attachments(self): """ :returns: список существующих вложений, которые были добавлены к сообщению раннее. :rtype: list(:py:class:`cerebro.aclasses.AbstractAttachment`,) """ attachs = list() ids = py_cerebro_classes.existing_attach_ids(self._Event__event.id) if ids != None: for id in ids: attachs.append(cerebro.aclasses.AbstractAttachment(self._Event__event.id, -2, id)) return attachs
[документация] def original_message(self): """ :returns: сообщение в состоянии до начала редактирования пользователем. :rtype: :py:class:`cerebro.aclasses.Message` :: def before_event(event): if event.event_type() == event.EVENT_CHANGING_OF_MESSAGE: orig_message = event.original_message() # Cравниваем текущее рабочее время сообщения и время до редактирования if event.work_time() != orig_message.work_time(): raise Exception('Рабочее время менять нельзя!') """ return cerebro.aclasses.Message(py_cerebro_classes.event_message_id(self._Event__event.id))
[документация]class AfterEventChangingOfMessage(AfterEventMessage): """ Класс для события редактирования сообщения. Предоставляет доступ к данным измененного сообщения после записи в базу данных. .. rubric:: Методы * :py:class:`методы базового класса cerebro.events.AfterEventMessage <cerebro.events.AfterEventMessage>` Объект класса передается в функцию :py:func:`after_event <event.after_event>` модуля :ref:`event <capi-event>`. :: def after_event(event): if event.event_type() == event.EVENT_CHANGING_OF_MESSAGE: ... .. seealso:: :py:class:`BeforeEventChangingOfMessage <cerebro.events.BeforeEventChangingOfMessage>`. """ def __init__(self, event_type, event_id): AfterEventMessage.__init__(self, event_type, event_id)
[документация]class BeforeEventCreationOfTask(Event, cerebro.aclasses.Task): """ Класс для события создания задачи. Предоставляет доступ к данным новой задачи перед записью в базу данных. .. rubric:: Методы * :py:meth:`definition() <cerebro.events.BeforeEventCreationOfTask.definition>` * :py:class:`методы базового класса cerebro.aclasses.Task <cerebro.aclasses.Task>` * :py:class:`методы базового класса cerebro.events.Event <cerebro.events.Event>` Объект класса передается в функции :py:func:`before_event <event.before_event>` и :py:func:`error_event <event.error_event>` (в случаи возникновения ошибки) модуля :ref:`event <capi-event>`. :: def before_event(event): if event.event_type() == event.EVENT_CREATION_OF_TASK: ... .. seealso:: :py:class:`AfterEventCreationOfTask <cerebro.events.AfterEventCreationOfTask>`. """ def __init__(self, event_type, event_id): Event.__init__(self, event_type, event_id) uids = py_cerebro_classes.event_task_ids(event_id); cerebro.aclasses.Task.__init__(self, uids[0]) self.__event_message = BeforeEventCreationOfMessage(event_type, event_id)
[документация] def definition(self): """ :returns: новое сообщение :py:const:`типа "Постановка задачи" <cerebro.aclasses.AbstractMessage.TYPE_DEFINITION>`. :rtype: :py:class:`cerebro.events.BeforeEventCreationOfMessage` При создании новой задачи, создается новое сообщение типа "Постановка задачи", поэтому в событии создания задачи обрабатывается и создание этого сообщения. :: if event.event_type() == event.EVENT_CREATION_OF_TASK: message = event.definition() ... """ return self.__event_message
[документация]class AfterEventCreationOfTask(Event, cerebro.aclasses.Task): """ Класс для события создания задачи. Предоставляет доступ к данным новой задачи после записи в базу данных. .. rubric:: Методы * :py:meth:`definition() <cerebro.events.BeforeEventCreationOfTask.definition>` * :py:class:`методы базового класса cerebro.aclasses.Task <cerebro.aclasses.Task>` * :py:class:`методы базового класса cerebro.events.Event <cerebro.events.Event>` Объект класса передается в функцию :py:func:`after_event <event.after_event>` модуля :ref:`event <capi-event>`. :: def after_event(event): if event.event_type() == event.EVENT_CREATION_OF_TASK: ... .. seealso:: :py:class:`BeforeEventCreationOfTask <cerebro.events.BeforeEventCreationOfTask>`. """ def __init__(self, event_type, event_id): Event.__init__(self, event_type, event_id) uids = py_cerebro_classes.event_task_ids(event_id); cerebro.aclasses.Task.__init__(self, uids[0]) self.__event_message = AfterEventCreationOfMessage(event_type, event_id)
[документация] def definition(self): """ :returns: новое сообщение :py:const:`типа "Постановка задачи" <cerebro.aclasses.AbstractMessage.TYPE_DEFINITION>`. :rtype: :py:class:`cerebro.events.AfterEventCreationOfMessage` При создании новой задачи, создается новое сообщение типа "Постановка задачи", поэтому в событии создания задачи обрабатывается и создание этого сообщения. :: if event.event_type() == event.EVENT_CREATION_OF_TASK: message = event.definition() ... """ return self.__event_message
class EventManageOfTasks(Event): def __init__(self, event_type, event_id): Event.__init__(self, event_type, event_id) def tasks(self): tasks = list() ids = py_cerebro_classes.event_task_ids(self._Event__event.id); if ids != None: for id in ids: tasks.append(cerebro.core.task(id)) return tasks def destination(self): tasks = list() ids = py_cerebro_classes.event_to_task_ids(self._Event__event.id); if ids != None: for id in ids: tasks.append(cerebro.core.task(id)) return tasks
[документация]class EventChangingOfTasks(Event): """ Базовый класс для события изменения какого-либо свойства у одной или сразу нескольких задач. Предоставляет доступ к данным редактируемых задач перед записью в базу данных. .. note:: Изменение может происходить сразу у нескольких задач и для всех однотипных изменений генерируется одно событие. .. rubric:: Методы * :py:meth:`tasks() <cerebro.events.EventChangingOfTasks.tasks>` * :py:class:`методы базового класса cerebro.events.Event <cerebro.events.Event>` """ def __init__(self, event_type, event_id): Event.__init__(self, event_type, event_id)
[документация] def tasks(self): """ :returns: список редактируемых пользователем задач. :rtype: list(:py:class:`cerebro.aclasses.Task`,) """ tasks = list() ids = py_cerebro_classes.event_task_ids(self._Event__event.id); if ids != None: for id in ids: tasks.append(cerebro.core.task(id)) return tasks
[документация]class EventChangingOfMessages(Event): """ Базовый класс для события изменения какого-либо свойства у одной или сразу нескольких сообщений. Предоставляет доступ к данным редактируемых сообщений перед записью в базу данных. .. note:: Изменение может происходить сразу у нескольких сообщений и для всех однотипных изменений генерируется одно событие. .. rubric:: Методы * :py:meth:`messages() <cerebro.events.EventChangingOfMessages.messages>` * :py:class:`методы базового класса cerebro.events.Event <cerebro.events.Event>` """ def __init__(self, event_type, event_id): Event.__init__(self, event_type, event_id)
[документация] def messages(self): """ :returns: список редактируемых пользователем сообщений. :rtype: list(:py:class:`cerebro.aclasses.Message`,) """ pass
[документация]class EventChangingOfAttachments(Event): """ Базовый класс для события изменения какого-либо свойства у одного или сразу нескольких вложений. Предоставляет доступ к данным редактируемых вложений перед записью в базу данных. .. note:: Изменение может происходить сразу у нескольких вложений и для всех однотипных изменений генерируется одно событие. .. rubric:: Методы * :py:meth:`attachments() <cerebro.events.EventChangingOfAttachments.attachments>` * :py:class:`методы базового класса cerebro.events.Event <cerebro.events.Event>` """ def __init__(self, event_type, event_id): Event.__init__(self, event_type, event_id)
[документация] def attachments(self): """ :returns: список редактируемых пользователем вложений. :rtype: list((attach_id, :py:class:`cerebro.aclasses.Message`),) """ pass
[документация]class BeforeEventChangingOfTasks(EventChangingOfTasks): """ Класс для события изменения свойства у одной или сразу нескольких задач. Предоставляет доступ к данным редактируемых задач перед записью в базу данных. .. rubric:: Методы * :py:meth:`new_value() <cerebro.events.BeforeEventChangingOfTasks.new_value>` * :py:meth:`set_new_value() <cerebro.events.BeforeEventChangingOfTasks.set_new_value>` * :py:class:`методы базового класса cerebro.events.EventChangingOfTasks <cerebro.events.EventChangingOfTasks>` .. warning:: Этот класс используется при редактировании большинства свойств, но есть и исключения. При редактировании некоторых свойств, например тегов задачи, используются другие классы. :py:mod:`Смотрите весь список классов событий <cerebro.events>`. Объект класса передается в функции :py:func:`before_event <event.before_event>` и :py:func:`error_event <event.error_event>` (в случаи возникновения ошибки) модуля :ref:`event <capi-event>`. :: def before_event(event): if event.event_type() == event.EVENT_CHANGING_OF_TASKS_PROGRESS: ... .. seealso:: :py:class:`AfterEventChangingOfTasks <cerebro.events.AfterEventChangingOfTasks>`. """ def __init__(self, event_type, event_id): EventChangingOfTasks.__init__(self, event_type, event_id)
[документация] def new_value(self): """ :returns: новое значение редактируемого свойства. Тип возвращаемого значения зависит от редактирумого свойства. Для определения нужного типа смотрите методы класса :py:class:`cerebro.aclasses.Task` по получению значений аналогичных свойств. .. note:: Чтобы узнать текущие значения, возпользуйтесь :py:class:`соответствующими методами <cerebro.aclasses.Task>` редактируемых задач :py:meth:`tasks() <cerebro.events.EventChangingOfTasks.tasks>`. :: def before_event(event): if event.event_type() == event.EVENT_CHANGING_OF_TASKS_ACTIVITY: # изменяется вид деятельности tasks = event.tasks() for task in tasks: print('Имя задачи', task.name()) print('<Бывший вид деятельности', task.activity()) print('Новый вид деятельности', event.new_value()) """ return py_cerebro_classes.task_new_value(self._Event__event.id)
[документация] def set_new_value(self, val): """ :param val: значение свойства. Устанавливает новое значение редактируемого свойства. Тип нового значения зависит от редактируемого свойства. Для определения нужного типа смотрите методы класса :py:class:`cerebro.aclasses.Task` по установке значений аналогичных свойств. :: if event.type() == event.EVENT_CHANGING_OF_TASKS_NAME: task_name = event.new_value() if task_name.isupper() == False: new_name = task_name.upper() # переводим буквы в верхний регистр event.set_new_value(new_name) # подменяем введенноё пользователем значение на новое """ py_cerebro_classes.task_set_new_value(self._Event__event.id, val)
[документация]class AfterEventChangingOfTasks(EventChangingOfTasks): """ Класс для события изменения свойства у одной или сразу нескольких задач. Предоставляет доступ к данным измененных задач после записи в базу данных. .. warning:: Этот класс используется при редактировании большинства свойств, но есть и исключения. При редактировании некоторых свойств, например тегов задачи, используются другие классы. :py:mod:`Смотрите весь список классов событий <cerebro.events>`. .. rubric:: Методы * :py:class:`методы базового класса cerebro.events.EventChangingOfTasks <cerebro.events.EventChangingOfTasks>` Объект класса передается в функцию :py:func:`after_event <event.after_event>` модуля :ref:`event <capi-event>`. :: def after_event(event): if event.event_type() == event.EVENT_CHANGING_OF_TASKS_PROGRESS: ... .. seealso:: :py:class:`BeforeEventChangingOfTasks <cerebro.events.BeforeEventChangingOfTasks>`. """ def __init__(self, event_type, event_id): EventChangingOfTasks.__init__(self, event_type, event_id)
[документация]class BeforeEventChangingOfMessages(EventChangingOfMessages): """ Класс для события изменения какого-либо свойства у одной или сразу нескольких сообщений. Предоставляет доступ к данным редактируемых сообщений перед записью в базу данных. .. note:: Изменение может происходить сразу у нескольких сообщений и для всех однотипных изменений генерируется одно событие. .. rubric:: Методы * :py:meth:`new_value() <cerebro.events.BeforeEventChangingOfMessages.new_value>` * :py:meth:`set_new_value() <cerebro.events.BeforeEventChangingOfMessages.set_new_value>` * :py:class:`методы базового класса cerebro.events.EventChangingOfMessages <cerebro.events.EventChangingOfMessages>` .. warning:: Этот класс используется при редактировании большинства свойств, но есть и исключения. При редактировании некоторых свойств, например тегов задачи, используются другие классы. :py:mod:`Смотрите весь список классов событий <cerebro.events>`. Объект класса передается в функции :py:func:`before_event <event.before_event>` и :py:func:`error_event <event.error_event>` (в случаи возникновения ошибки) модуля :ref:`event <capi-event>`. :: def before_event(event): if event.event_type() == event.EVENT_CHANGING_OF_MESSAGE_APPROVED: ... .. seealso:: :py:class:`AfterEventChangingOfMessages <cerebro.events.AfterEventChangingOfMessages>`. """ def __init__(self, event_type, event_id): EventChangingOfMessages.__init__(self, event_type, event_id)
[документация] def new_value(self): """ :returns: новое значение редактируемого свойства. Тип возвращаемого значения зависит от редактирумого свойства. Для определения нужного типа смотрите методы класса :py:class:`cerebro.aclasses.Message` по получению значений аналогичных свойств. .. note:: Чтобы узнать текущие значения, возпользуйтесь :py:class:`соответствующими методами <cerebro.aclasses.Message>` редактируемых задач :py:meth:`tasks() <cerebro.events.EventChangingOfMessages.messages>`. :: def before_event(event): if event.event_type() == event.EVENT_CHANGING_OF_MESSAGE_HASHTAGS: # хэштеги будут изменены messages = event.messages() for message in messages: print('Имя сообщения', message.name()) print('Предыдущие хэштеги', message.hashtags()) print('Новые хэштеги', event.new_value()) """ return py_cerebro_classes.message_new_value(self._Event__event.id)
[документация] def set_new_value(self, val): """ :param val: значение свойства. Устанавливает новое значение редактируемого свойства. Тип нового значения зависит от редактируемого свойства. Для определения нужного типа смотрите методы класса :py:class:`cerebro.aclasses.Message` по установке значений аналогичных свойств. :: if event.type() == event.EVENT_CHANGING_OF_MESSAGE_HASHTAGS: hashtags = event.new_value() if len(hashtags) > 1: event.set_new_value(hashtags[0]) # устанавливаем только первый хэштег """ py_cerebro_classes.message_set_new_value(self._Event__event.id, val)
[документация]class AfterEventChangingOfMessages(EventChangingOfMessages): """ Класс для события изменения свойства у одного или сразу нескольких сообщений. Предоставляет доступ к данным измененных сообщений после записи в базу данных. .. warning:: Этот класс используется при редактировании большинства свойств, но есть и исключения. При редактировании некоторых свойств, например тегов задачи, используются другие классы. :py:mod:`Смотрите весь список классов событий <cerebro.events>`. .. rubric:: Методы * :py:class:`методы базового класса cerebro.events.EventChangingOfMessages <cerebro.events.EventChangingOfMessages>` Объект класса передается в функцию :py:func:`after_event <event.after_event>` модуля :ref:`event <capi-event>`. :: def after_event(event): if event.event_type() == event.EVENT_CHANGING_OF_MESSAGE_FLAGS: ... .. seealso:: :py:class:`BeforeEventChangingOfMessages <cerebro.events.BeforeEventChangingOfMessages>`. """ def __init__(self, event_type, event_id): EventChangingOfMessages.__init__(self, event_type, event_id)
[документация]class AfterEventChangingOfAttachments(EventChangingOfAttachments): """ Класс для события изменения свойства у одного или сразу нескольких вложений. Предоставляет доступ к данным измененных вложений после записи в базу данных. .. warning:: Этот класс используется при редактировании большинства свойств, но есть и исключения. При редактировании некоторых свойств, например тегов задачи, используются другие классы. :py:mod:`Смотрите весь список классов событий <cerebro.events>`. .. rubric:: Методы * :py:class:`методы базового класса cerebro.events.EventChangingOfAttachments <cerebro.events.EventChangingOfAttachments>` Объект класса передается в функцию :py:func:`after_event <event.after_event>` модуля :ref:`event <capi-event>`. :: def after_event(event): if event.event_type() == event.EVENT_CHANGING_OF_ATTACHMENT_HASHTAGS: ... .. seealso:: :py:class:`BeforeEventChangingOfAttachments <cerebro.events.BeforeEventChangingOfAttachments>`. """ def __init__(self, event_type, event_id): EventChangingOfMessages.__init__(self, event_type, event_id)
[документация]class BeforeEventChangingOfTasksAllocated(BeforeEventChangingOfTasks): """ Класс для события добавления/удаления пользователей и материальных ресурсов на одну или сразу несколько задач. Предоставляет доступ к данным редактируемых задач перед записью в базу данных. .. rubric:: Методы * :py:meth:`is_added() <cerebro.events.BeforeEventChangingOfTasksAllocated.is_added>` * :py:class:`методы базового класса cerebro.events.BeforeEventChangingOfTasks <cerebro.events.BeforeEventChangingOfTasks>` Объект класса передается в функции :py:func:`before_event <event.before_event>` и :py:func:`error_event <event.error_event>` (в случаи возникновения ошибки) модуля :ref:`event <capi-event>`. :: def before_event(event): if event.event_type() == event.EVENT_CHANGING_OF_TASKS_ALLOCATED: ... .. seealso:: :py:class:`AfterEventChangingOfTasks <cerebro.events.AfterEventChangingOfTasks>`. """ def __init__(self, event_type, event_id): BeforeEventChangingOfTasks.__init__(self, event_type, event_id)
[документация] def is_added(self): """ :returns: True, если пользователи или материальные ресурсы добавляются на задачи. False, если убираются. :rtype: bool В случаи добавления пользователей метод :py:meth:`new_value() <cerebro.events.BeforeEventChangingOfTasks.new_value>` вернет список добавляемых пользователей. Иначе, список убираемых пользователей. Для изменения списка добавляемых или убираемых пользователей воспользуйтесь методом :py:meth:`set_new_value() <cerebro.events.BeforeEventChangingOfTasks.set_new_value>`. Тип входного аргумента для этого метода - list(user_id,), список идентификаторов пользователей и материальных ресурсов :: def before_event(event): if event.event_type() == event.EVENT_CHANGING_OF_TASKS_ALLOCATED: # изменяется назначение if event.is_added() == False: # пользователи убираются с задач # переспрашиваем пользователя, действительно ли он хочет это сделать q = 'Вы уверены, что хотите убрать пользователей с задачи?' if cerebro.gui.question_box('Изменение списка исполнителей', q) == False: # если пользователь неуверен raise Exception('') # Пользователи останутся на задаче """ return py_cerebro_classes.task_event_flag(self._Event__event.id)!=0
[документация]class BeforeEventChangingOfTasksTag(BeforeEventChangingOfTasks): """ Класс для события изменения значения тега у одной или сразу нескольких задач. Предоставляет доступ к данным редактируемых задач перед записью в базу данных. .. note:: Теги используются в Cerebro, как дополнительные свойства задач. При назначении тега на проект, он автоматически становится свойством задачи. В процесссе работы с задачами теги заполняются значениями. .. rubric:: Методы * :py:meth:`is_added_elements() <cerebro.events.BeforeEventChangingOfTasksTag.is_added_elements>` * :py:meth:`tag() <cerebro.events.BeforeEventChangingOfTasksTag.tag>` * :py:class:`методы базового класса cerebro.events.BeforeEventChangingOfTasks <cerebro.events.BeforeEventChangingOfTasks>` Объект класса передается в функции :py:func:`before_event <event.before_event>` и :py:func:`error_event <event.error_event>` (в случаи возникновения ошибки) модуля :ref:`event <capi-event>`. :: def before_event(event): if event.event_type() == event.EVENT_CHANGING_OF_TASKS_TAG: ... .. seealso:: :py:class:`AfterEventChangingOfTasksTag <cerebro.events.AfterEventChangingOfTasksTag>`. """ def __init__(self, event_type, event_id): BeforeEventChangingOfTasks.__init__(self, event_type, event_id)
[документация] def is_added_elements(self): """ :returns: True, если тип тега :py:const:`"множественное перечисление" <cerebro.aclasses.AbstractTag.TYPE_MULTI_ENUM>` и элементы добавляются к значению тега. Иначе False. :rtype: bool В случаи добавления элементов к значению тега метод :py:meth:`new_value() <cerebro.events.BeforeEventChangingOfTasks.new_value>` вернет список добавляемых элементов. Иначе, список убираемых элементов. Для изменения списка добавляемых или убираемых элементов воспользуйтесь методом :py:meth:`set_new_value() <cerebro.events.BeforeEventChangingOfTasks.set_new_value>`. Тип входного аргумента для этого метода - list(tag_element_id,), список идентификаторов элементов тега. :: def before_event(event): if event.event_type() == event.EVENT_CHANGING_OF_TASKS_TAG: # изменяется вид деятельности if event.tag().type() == event.tag().TYPE_MULTI_ENUM and event.is_added_elements(): print('Добавляемые элементы тега', event.new_value()) """ return py_cerebro_classes.task_event_flag(self._Event__event.id)!=0
[документация] def tag(self): """ :returns: редактирумый тег. :rtype: :py:class:`cerebro.aclasses.AbstractTag` """ return cerebro.aclasses.AbstractTag(py_cerebro_classes.task_event_tag(self._Event__event.id))
[документация]class AfterEventChangingOfTasksTag(AfterEventChangingOfTasks): """ Класс для события изменения значения тега у одной или сразу нескольких задач. Предоставляет доступ к данным измененных задач после записи в базу данных. .. rubric:: Методы * :py:meth:`tag() <cerebro.events.AfterEventChangingOfTasksTag.tag>` * :py:class:`методы базового класса cerebro.events.AfterEventChangingOfTasks <cerebro.events.AfterEventChangingOfTasks>` Объект класса передается в функцию :py:func:`after_event <event.after_event>` модуля :ref:`event <capi-event>`. :: def after_event(event): if event.event_type() == event.EVENT_CHANGING_OF_TASKS_TAG: ... .. seealso:: :py:class:`BeforeEventChangingOfTasksTag <cerebro.events.BeforeEventChangingOfTasksTag>`. """ def __init__(self, event_type, event_id): AfterEventChangingOfTasks.__init__(self, event_type, event_id)
[документация] def tag(self): """ :returns: измененный тег. :rtype: :py:class:`cerebro.aclasses.AbstractTag` """ return cerebro.aclasses.AbstractTag(py_cerebro_classes.task_event_tag(self._Event__event.id))
[документация]class BeforeEventChangingOfMessagesHashtags(EventChangingOfMessages): """ Класс для события изменения значения хэштегов у сообщения. Предоставляет доступ к данным редактируемых сообщений перед записью в базу данных. .. rubric:: Методы * :py:meth:`is_added() <cerebro.events.BeforeEventChangingOfMessagesHashtags.is_added>` * :py:class:`methods of the base class cerebro.events.Event <cerebro.events.Event>` Объект класса передается в функции :py:func:`before_event <event.before_event>` и :py:func:`error_event <event.error_event>` (в случаи возникновения ошибки) модуля :ref:`event <capi-event>`. :: def before_event(event): if event.event_type() == event.EVENT_CHANGING_OF_MESSAGE_HASHTAGS: ... """ def __init__(self, event_type, event_id): pass
[документация] def is_added(self): """ :returns: True, если хэштеги добавляются к сообщению. False, если убираются. :rtype: bool В случаи добавления хэштегов метод :py:meth:`new_hashtags() <cerebro.events.BeforeEventChangingOfMessageHashtags.new_hashtags>` вернет список добавляемых хэштегов. Иначе, список убираемых хэштегов. Для изменения списка добавляемых или убираемых хэштегов воспользуйтесь методом :py:meth:`set_new_hashtags() <cerebro.events.BeforeEventChangingOfMessageHashtags.set_new_hashtags>`. Тип входного аргумента для этого метода - list(string,), список хэштегов. :: def before_event(event): if event.event_type() == event.EVENT_CHANGING_OF_MESSAGE_HASHTAGS: # изменяются хэштеги if event.is_added() == False: # хэштеги удаляются из сообщения # переспрашиваем пользователя, действительно ли он хочет это сделать q = 'Вы уверены, что хотите убрать хэштеги из сообщения?' if cerebro.gui.question_box('Изменение списка хэштегов', q) == False: # если пользователь неуверен raise Exception('') # Хэштеги остануться в сообщении """ pass
[документация]class BeforeEventChangingOfTasksHashtags(BeforeEventChangingOfTasks): """ Класс для события изменения значения хэштегов задач. Предоставляет доступ к данным редактируемых задач перед записью в базу данных. .. rubric:: Методы * :py:meth:`is_added() <cerebro.events.BeforeEventChangingOfTasksHashtags.is_added>` * :py:class:`methods of the base class cerebro.events.Event <cerebro.events.Event>` Объект класса передается в функции :py:func:`before_event <event.before_event>` и :py:func:`error_event <event.error_event>` (в случаи возникновения ошибки) модуля :ref:`event <capi-event>`. :: def before_event(event): if event.event_type() == event.EVENT_CHANGING_OF_TASKS_HASHTAGS: ... .. seealso:: :py:class:`AfterEventChangingOfTasksHashtags <cerebro.events.AfterEventChangingOfTasksHashtags>`. """ def __init__(self, event_type, event_id): pass
[документация] def is_added(self): """ :returns: True, если хэштеги добавляются к задаче. False, если убираются. :rtype: bool В случаи добавления хэштегов метод :py:meth:`new_hashtags() <cerebro.events.BeforeEventChangingOfTasksHashtags.new_hashtags>` вернет список добавляемых хэштегов. Иначе, список убираемых хэштегов. Для изменения списка добавляемых или убираемых хэштегов воспользуйтесь методом :py:meth:`set_new_value() <cerebro.events.BeforeEventChangingOfTasks.set_new_value>`. Тип входного аргумента для этого метода - list(string,), список хэштегов. :: def before_event(event): if event.event_type() == event.EVENT_CHANGING_OF_TASKS_HASHTAGS: # изменяются хэштеги if event.is_added() == False: # хэштеги удаляются из задачи # переспрашиваем пользователя, действительно ли он хочет это сделать q = 'Вы уверены, что хотите убрать хэштеги из задачи?' if cerebro.gui.question_box('Изменение списка хэштегов', q) == False: # если пользователь неуверен raise Exception('') # Хэштеги остануться в задаче """ pass
[документация]class BeforeEventChangingOfAttachments(EventChangingOfAttachments): """ Класс для события изменения какого-либо свойства у одной или сразу нескольких вложений. Предоставляет доступ к данным редактируемых вложений перед записью в базу данных. .. note:: Изменение может происходить сразу у нескольких сообщений и для всех однотипных изменений генерируется одно событие. .. rubric:: Методы * :py:meth:`new_value() <cerebro.events.BeforeEventChangingOfAttachments.new_value>` * :py:meth:`set_new_value() <cerebro.events.BeforeEventChangingOfAttachments.set_new_value>` * :py:class:`методы базового класса cerebro.events.EventChangingOfAttachments <cerebro.events.EventChangingOfAttachments>` .. warning:: Этот класс используется при редактировании большинства свойств, но есть и исключения. При редактировании некоторых свойств, например тегов задачи, используются другие классы. :py:mod:`Смотрите весь список классов событий <cerebro.events>`. Объект класса передается в функции :py:func:`before_event <event.before_event>` и :py:func:`error_event <event.error_event>` (в случаи возникновения ошибки) модуля :ref:`event <capi-event>`. :: def before_event(event): if event.event_type() == event.EVENT_CHANGING_OF_MESSAGE_APPROVED: ... .. seealso:: :py:class:`AfterEventChangingOfAttachments <cerebro.events.AfterEventChangingOfAttachments>`. """ def __init__(self, event_type, event_id): EventChangingOfAttachments.__init__(self, event_type, event_id)
[документация] def new_value(self): """ :returns: новое значение редактируемого свойства. Тип возвращаемого значения зависит от редактирумого свойства. Для определения нужного типа смотрите методы класса :py:class:`cerebro.aclasses.Attachment` по получению значений аналогичных свойств. .. note:: Чтобы узнать текущие значения, возпользуйтесь :py:class:`соответствующими методами <cerebro.aclasses.Attachment>` редактируемых задач :py:meth:`tasks() <cerebro.events.EventChangingOfAttachments.attachments>`. :: def before_event(event): if event.event_type() == event.EVENT_CHANGING_OF_MESSAGE_HASHTAGS: # activity type is being changed messages = event.messages() for message in messages: print('Message name', message.name()) print('<Previous activity type', message.activity()) print('New activity type', event.new_value()) """ return py_cerebro_classes.attach_new_value(self._Event__event.id)
[документация] def set_new_value(self, val): """ :param val: значение свойства. Устанавливает новое значение редактируемого свойства. Тип нового значения зависит от редактируемого свойства. Для определения нужного типа смотрите методы класса :py:class:`cerebro.aclasses.Attachment` по установке значений аналогичных свойств. :: if event.type() == event.EVENT_CHANGING_OF_MESSAGE_HASHTAGS: message_name = event.new_value() if task_name.isupper() == False: new_name = task_name.upper() # changing the symbols to the upper register event.set_new_value(new_name) # substituting the value entered by user for the new one """ py_cerebro_classes.attach_set_new_value(self._Event__event.id, val)
[документация]class BeforeEventChangingOfAttachmentsHashtags(EventChangingOfAttachments): """ Класс для события изменения значения хэштегов вложений. Предоставляет доступ к данным редактируемых вложений перед записью в базу данных. .. rubric:: Методы * :py:meth:`is_added() <cerebro.events.BeforeEventChangingOfAttachmentsHashtags.is_added>` * :py:class:`methods of the base class cerebro.events.Event <cerebro.events.Event>` Объект класса передается в функции :py:func:`before_event <event.before_event>` и :py:func:`error_event <event.error_event>` (в случаи возникновения ошибки) модуля :ref:`event <capi-event>`. :: def before_event(event): if event.event_type() == event.EVENT_CHANGING_OF_ATTACHMENT_HASHTAGS: ... """ def __init__(self, event_type, event_id): pass
[документация] def is_added(self): """ :returns: True, если хэштеги добавляются к вложению. False, если убираются. :rtype: bool :: def before_event(event): if event.event_type() == event.EVENT_CHANGING_OF_ATTACHMENT_HASHTAGS: # изменяются хэштеги if event.is_added() == False: # хэштеги удаляются из вложения # переспрашиваем пользователя, действительно ли он хочет это сделать q = 'Вы уверены, что хотите убрать хэштеги из вложения?' if cerebro.gui.question_box(Изменение списка хэштегов', q) == False: # если пользователь неуверен raise Exception('') # Хэштеги остануться во вложении """ pass