예제 #1
0
def connect_db(user, password):
    """
	Функция для соединения с базой данных.

	user - имя пользователя cerebro.
	password - пароль пользователя cerebro.
	"""
    # Создаем объект базы данных
    db = database.Database(host, port)
    # Соединяемся с базой данных
    db.connect(user, password)

    return db
예제 #2
0
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
예제 #3
0
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)