def connect_db(user, password): """ Функция для соединения с базой данных. user - имя пользователя cerebro. password - пароль пользователя cerebro. """ # Создаем объект базы данных db = database.Database(host, port) # Соединяемся с базой данных db.connect(user, password) return db
def main(): db = database.Database(host, port) if (db.connect_from_cerebro_client() == 0): res = db.execute('select mtm, name from "listUsers"(false)') for r in res: dt = str(r[0].day) + '-' + str(r[0].month) + '-' + str( r[0].year) + ' ' + str(r[0].hour) + ':' + str( r[0].minute) + ':' + str(r[0].second) print('User: '******' Last login: '******'Can not connect to database. Host: ' + host + ' or port: ' + str(port) + ' is not correct, or Cerebro client is not running!') pass
def add_report_to_task(task_url, db_user, db_password, text, work_time, file, file_as_link): """ Функция по добавлению нового сообщения. Параметр task_url - тектовый локатор(путь) до задачи. Формат локатора: '/Проект/Задача 1/Задача 2', то есть по сути путь до задачи. Примечание: Имена задач регистрозависимы! Параметры db_user и db_password - логин и пароль пользователя Cerebro, который создает отчет. Параметр text - текс сообщения Параметр work_time - затраченные часы Параметр file - путь до файла, который должен быть приложен Параметр file_as_link - способ добавления файла к сообщению: True - файл добавляется как ссылка; False - файл добавляется как вложение, то есть импортируется в файловое хранилище(Cargador). Пример вызова функции: :: import report report.add_report_to_task('/Проект/Задача 1/Задача 2', 'user', 'password', 'Example report', 1.5, 'с:/temp/Test.file', False) :: """ try: db = database.Database(database_host, database_port) # Устанавливаем соединение с базой данных if db.connect_from_cerebro_client() != 0: # пробуем установить соединение с помощью запущенного клиента Cerebro. # Если не выходит, устанавливаем с помощью логина и пароля db.connect(db_user, db_password) # Получение идентификатора задачи и сообщения типа "Постановка задачи" по локатору задачи task = db.task_by_url(task_url) # Получили ID задач if len(task) == 0 or task[0] == None: # Проверяем существуют ли задачи с таким локатором raise Exception('Задача не найдена') messages = db.task_definition(task[0]) # Получили сообщения задачи if len(messages) == 0: # Проверяем есть ли у задачи сообщения raise Exception('Сообщение отсутствует') parent_message = messages[dbtypes.MESSAGE_DATA_ID] # Получили ID сообщения if parent_message == None or parent_message == 0: raise Exception('Сообщение отсутствует') """ Параметры task и parent_message - это идентификаторы задачи и сообщения к которому добавляется новое сообщение. """ # Создание сообщения типа "Отчет" new_message_id = db.add_report(task[0], parent_message, text, int(work_time*60)) """ Выполняем запрос на добавление нового соообщения. Последний параметр, затраченное время, задается в минутах Результатом запроса является идентификатор нового сообщения """ # Приложение файла к отчету if file != None and len(file) != 0 and os.path.exists(file): # проверяем, задан ли файл, который нужно приложить к отчету # генерация эскизов для файла file thumbnails = make_thumnails(file) """ Если файл является изображением или видео, то можно добавить для него уменшенные эскизы. Можно добавить до 3-х эскизов (первый, средний, последний кадры). Для генерации эскизов в этом примере мы будем использовать программу Mirada. Она постовляется вместе с дистрибутивом Cerebro. Можно использовать и другие программы для генерации, например, ffmpeg. Смотрите подробнее об этом в описании функции make_thumnails. """ # Создаем объект для добавления файла и/или эскизов в файловое хранилище (Cargador) carga = cargador.Cargador(cargador_host, cargador_xmlrpc_port, cargador_http_port) """ Если файл прикладывается как ссылка, то сам файл не будет """ # Добовляем к отчету постановки задач файлы и, заодно, экспортируем их в хранилище db.add_attachment(new_message_id, carga, file, thumbnails, '', file_as_link) """ Если файл прикладывается как ссылка, то сам файл не будет экспортироваться в хранилище, но будут экспортированы эскизы. Пустая строка - это комментарий к вложению. Можете его задать по желанию. """ except Exception as err: print(err)