10.4. Модуль core

Модуль cerebro.core для доступа к данным в приложении и к управляющим функциям.

Функции

cerebro.core.activities()[исходный код]
Результат:виды деятельности.
Тип результата:cerebro.aclasses.Activities
cerebro.core.application_dir()[исходный код]
Результат:путь до директории приложения Cerebro.
Тип результата:string

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

Под операционной системой Mac OS X директорией приложения считается директория расположенная внутри пакета приложения - «Cerebro.app/Contents/MacOs/»

См.также

python_api_dir().

cerebro.core.current_attachment()[исходный код]
Результат:вложение на котором активирован пользовательский пункт меню.
Тип результата:cerebro.aclasses.Attachment
def example_attachment_menu():
        # Скачивание вложения
        attach = cerebro.core.current_attachment() # получаем текущее вложение, на котором было вызвано контекстное меню
        file_name = cerebro.cargador.file_name_form_hash(attach.file_hash()) # пробуем получить имя файла по хешу
        if file_name == '' or file_name == None: # если файла нет, пробуем его скачать
                cerebro.cargador.download_file(attach.file_hash())

См.также

selected_attachments().

cerebro.core.current_message()[исходный код]
Результат:сообщение на котором активирован пользовательский пункт меню.
Тип результата:cerebro.aclasses.Message

Текущее сообщение может быть равно None, если пользователь активировал пункт меню не на конкретном сообщении. Однако, при этом могут быть выделенные пользователем сообщения, которые возвращаются в функции selected_messages().

def example_message_menu():
        print('Вызов example_message_menu по клику пункта меню "Мой пункт меню в форуме"')      
        
        # Получаем текущее сообщение
        message = cerebro.core.current_message()
        if message:
                print('Текущее сообщение',  message.text_as_plain())                    

См.также

selected_messages().

cerebro.core.current_task()[исходный код]
Результат:текущая задача в графическом интерфейсе Cerebro.
Тип результата:cerebro.aclasses.Task
def example_task_menu():
        print('Вызов example_task_menu по клику пункта меню "Мой пункт меню"')  
        
        # Получаем текущую задачу
        task = cerebro.core.current_task()
        print('Текущая задача',  task.name())

См.также

selected_tasks().

cerebro.core.has_flag(flags, flag)[исходный код]
Параметры:
  • flags (int) – значение флагов.
  • flag (int) – флаг.
Результат:

наличие выставленного флага flag в значении flags.

Тип результата:

bool

Проверяет, выставлен ли флаг flag в передаваемом значении флагов flags.

res = cerebro.core.has_flag(task.flags(),  task.FLAG_HAS_CHILD)
print('Наличие подзадач у задачи task',  res)
cerebro.core.has_perm_global(perm_type)[исходный код]
Параметры:perm_type (int) – тип глобального действия, требующей разрешения.
Результат:True, если текущий пользователь имеет разрешение на глобальную операцию.
Тип результата:bool

Функция позволяет проверить имеет ли право пользователь выполнять те или иные глобальные действия, например, создавать пользователей.

cerebro.core.has_perm_message(message_id, perm_type)[исходный код]
Параметры:
Результат:

True, если текущий пользователь имеет разрешение на операцию с сообщением.

Тип результата:

bool

Функция позволяет проверить имеет ли право пользователь выполнять те или иные действия с сообщением, например, переключить видимость для клиента.

cerebro.core.has_perm_task(task_id, perm_type)[исходный код]
Параметры:
Результат:

True, если текущий пользователь имеет разрешение на операцию с задачей.

Тип результата:

bool

Функция позволяет проверить имеет ли право пользователь выполнять те или иные действия с задачей, например, редактировать теги ли создавать к этой задаче подзадачи.

task = cerebro.core.current_task()
if cerebro.core.has_perm_task(task.id(), cerebro.aclasses.Perm.PERM_TASK_BUDGET):
        task.set_budget(100)
cerebro.core.is_logon()[исходный код]
Результат:True, если Cerebro в онлайне.
cerebro.core.message(message_id)[исходный код]
Параметры:message_id (int) – идентификатор сообщения.
Результат:сообщение по его идентификатору.
Тип результата:cerebro.aclasses.Message
cerebro.core.notify_user(message, task_id=None, is_show_box=True)[исходный код]
Параметры:
  • message (string) – сообщение уведомления.
  • task_id (int) – идентификатор задачи.
  • is_show_box (bool) – показать окно с сообщением.

Уведомляет пользователя приложения. Если is_show_box = True, при активации пользователем уведомления будет показано окно с сообщением уведомления. Если задан идентификатор задачи, то при активации пользователем уведомления произойдет переход на неё.

cerebro.core.notify_user('Эта задача начнется через 5 минут', task.id())
cerebro.core.print_debug(level, text)[исходный код]
Параметры:level (int) – уровень отладочной информации.

Печатает отладочную информацию в консоль Cerebro.

Отладочная информация не выводится в консоль Cerebro, если level больше, чем настроен в Cerebro (Главное меню/Cerebro Serpens/Настройки).

cerebro.core.print_error(text)[исходный код]

Печатает ошибку в консоль Cerebro.

cerebro.core.print_info(text)[исходный код]

Печатает информацию в консоль Cerebro.

cerebro.core.print_warning(text)[исходный код]

Печатает предупреждение в консоль Cerebro.

cerebro.core.python_api_dir()[исходный код]
Результат:путь до директории py-frontend, в которой лежат модули программного интерфейса.
Тип результата:string

См.также

application_dir().

cerebro.core.refresh_all()[исходный код]

Обновляет все данные в Cerebro.

Если вы производите масштабные изменения данных, не забывайте вызывать эту функцию для обновления всех закешированных данных в приложении Cerebro.

См.также

refresh_tasks().

cerebro.core.refresh_tasks()[исходный код]

Обновляет дерево задач в Cerebro.

Если вы производите добавление задач или изменение их свойств, добавление/изменение сообщений, не забывайте вызывать эту функцию для обновления дерева задач в интерфейсе. Исключением являются функции обработки событий. Изменения, которые были произведены в этих функцях, обновляются автоматически.

tasks = cerebro.core.selected_tasks()
for task in tasks:
        task.set_progress(100) 

cerebro.core.refresh_tasks()

См.также

refresh_all().

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

См.также

task_children().

cerebro.core.selected_attachments()[исходный код]
Результат:список выделенных вложений в окнах вложений (Поиск, Форум), на которых вызван пользовательский пункт меню.
Тип результата:list(cerebro.aclasses.Attachment,)

См.также

current_attachment().

cerebro.core.selected_messages()[исходный код]
Результат:выделенные пользователем сообщения при активации a user’s menu item is activated.
Тип результата:list(cerebro.aclasses.Message,)

Список выделенных сообщений включает текущее сообщение.

def example_message_menu():
        print('Calling example_message_menu by click on "My Forum menu item"')  
        
        # Получаем выделенные сообщения
        messages = cerebro.core.selected_messages()
        if messages:
                for message in messages:
                        print('Current message:',  message.text_as_plain())     

См.также

current_message().

cerebro.core.selected_tasks()[исходный код]
Результат:список выбранных(выделенных) задач в графическом интерфейсе Cerebro.
Тип результата:list(cerebro.aclasses.Task,)
def example_task_menu():
        print('Вызов example_task_menu по клику пункта меню "Мой пункт меню"')          
        
        # Получаем выделенные задачи
        tasks = cerebro.core.selected_tasks()
        print('Выделенные задачи',  len(tasks)) 

См.также

current_task().

cerebro.core.set_current_task(task_id)[исходный код]
Параметры:task_id (int) – идентификатор задачи.

Устанавливает в графическом интерфейсе Cerebro текущую задачу по её идентификатору.

current_task = cerebro.core.current_task()
tasks = cerebro.core.task_children(current_task.id())
if len(tasks) > 0:
        cerebro.core.set_current_task(tasks[0].id()) # устанавливаем новой текущей задачей первую подзадачу текущей задачи

См.также

current_task().

cerebro.core.start_timer(function, interval)[исходный код]

Запускает таймер, который каждый раз по прошествии интервала времени будет запускать функцию function.

Параметры:
  • function (string) – функция, которая будет вызываться таймером каждый раз по прошествии интервала времени.
  • interval (int) – интервал времени в милисекундах.

Формат аргумента function:

'имя_модуля.имя_функции'

Если ваш модуль лежит в пакете, то формат будет:

'имя_пакета.имя_модуля.имя_функции'

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

sys.path должен содержать путь поиска вашего модуля/пакета.

# файл logon.py         
# модуль logon

import cerebro
import examples         
        
# Функция, в которой происходит обработка входа в Cerebro
def logon():                    
        examples.logon.logon()   # вызываем пример обработки входа      
# файл examples/logon.py
# пакет examples
# модуль logon

import cerebro

def logon():    
        # Запуск таймера на вызов функции       example_timer
        cerebro.core.start_timer('examples.logon.example_timer', 1000) # запуск таймера каждую секунду

def example_timer():
        print('Вызов example_timer по таймеру')         

Для остановки таймера вызовите cerebro.core.stop_timer().

См.также

stop_timer().

cerebro.core.statuses()[исходный код]
Результат:статусы.
Тип результата:cerebro.aclasses.Statuses
cerebro.core.stop_timer(function)[исходный код]

Останавливает таймер, который запускает функцию function.

Параметры:function (string) – функция, которая была передана в cerebro.core.start_timer() при запуске таймера.
# файл logoff.py                
# модуль logoff

import cerebro
import examples         
        
# Функция, в которой происходит обработка завершения сеанса Cerebro
def logoff():                   
        examples.logoff.logoff()         # вызываем пример обработки завершения сеанса Cerebro
        return True
# файл examples/logoff.py
# пакет examples
# модуль logoff

import cerebro

def logoff():   
        # Останавливаем таймер на вызов функции example_timer, запущенный при входе в Cerebro
        cerebro.core.stop_timer('examples.logon.example_timer') 
        print('Таймер на вызов example_timer остановлен')                               

См.также

start_timer().

cerebro.core.task(task_id)[исходный код]
Параметры:task_id (int) – идентификатор задачи.
Результат:задача по её идентификатору.
Тип результата:cerebro.aclasses.Task
cerebro.core.task_children(task_id, with_references=False)[исходный код]
Параметры:
  • task_id (int) – идентификатор задачи.
  • with_references (bool) – возвращать с ссылками на задачи, если они есть.
Результат:

список подзадач задачи с идентификатором task_id.

Тип результата:

list(cerebro.aclasses.Task,)

Если with_references = True, то возвратится список вместе с ссылками на задачи, иначе без них. Если подзадач нет, возвратится None.

if cerebro.core.has_flag(task.flags(), task.FLAG_HAS_CHILD): # проверка на наличие подзадач
        children = cerebro.core.task_children(task.id())        

См.также

root_tasks().

cerebro.core.to_do_task_list(user_id, with_done_task)[исходный код]
Параметры:
  • user_id (int) – идентификатор пользователя.
  • with_done_task (bool) – возвращать с выполнеными задачами.
Результат:

список задач на которых пользователь назначен исполнителем.

Тип результата:

list(cerebro.aclasses.Task,)

Если with_done_task = True, то возвратится список вместе с выполненными(у которых прогресс 100%) задачами, иначе без них.

# Получаем все невыполненные задачи текущего пользователя
current_user = cerebro.core.user_profile()
tasks = cerebro.core.to_do_task_list(current_user[cerebro.aclasses.Users.DATA_ID], False)
cerebro.core.user_profile()[исходный код]
Результат:профиль пользователя.
Тип результата:tuple. Данные кортежа описаны в классе cerebro.aclasses.Users.
profile = cerebro.core.user_profile()
print('e-mail пользователя', profile[cerebro.aclasses.Users.DATA_EMAIL])
cerebro.core.users()[исходный код]
Результат:пользователи.
Тип результата:cerebro.aclasses.Users
cerebro.core.version_app()[исходный код]
Результат:версии сборки приложения.
Тип результата:string
cerebro.core.version_python_api()[исходный код]
Результат:версия программного интерфейса.
Тип результата:string