# -*- coding: utf-8 -*-
"""
Модуль cerebro.cargador предоставляет доступ к файловому хранилищу Cargador.
.. rubric:: Функции
* :py:func:`download_file() <cerebro.cargador.download_file>`
* :py:func:`download_thumbnail() <cerebro.cargador.download_thumbnail>`
* :py:func:`file_name_form_hash() <cerebro.cargador.file_name_form_hash>`
* :py:func:`is_connected() <cerebro.cargador.is_connected>`
* :py:func:`is_local() <cerebro.cargador.is_local>`
* :py:func:`storage_host() <cerebro.cargador.storage_host>`
* :py:func:`storage_path() <cerebro.cargador.storage_path>`
"""
import py_cerebro_carga
[документация]def download_file(hash, project_id):
"""
:param string hash: хеш файла.
:param int project_id: идентификатор проекта.
Ставит файл на закачку из удаленного файлового хранилища.
::
# Скачивание файла
attach = cerebro.core.current_attachment() # получаем текущее вложение
task = cerebro.core.current_task() # получаем текущую задачу, чтобы узнать идентификатор проекта
if attach.is_link() != True: # проверяем, что вложение не является линком
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(), task.project_id())
.. note:: Таким же образом можно скачать рецензию на файл. Для этого нужно у вложения вместо хеша файла
получить хеш рецензии - :py:meth:`attach.review_hash() <cerebro.aclasses.Attachment.review_hash>`.
Для скачивания эскизов файла(уменшенных изображений) воспользуйтесь функцией :py:func:`cerebro.cargador.download_thumbnail`.
.. seealso:: :py:func:`download_thumbnail() <cerebro.cargador.download_thumbnail>`
"""
py_cerebro_carga.download_file(hash, project_id)
[документация]def download_thumbnail(hash, project_id):
"""
:param string hash: хеш эскиза файла(уменщенного изобращения).
:param int project_id: идентификатор проекта.
Ставит эскиз файла на закачку из удаленного файлового хранилища.
.. note:: Скачивание при помощи функции download_thumbnail, производится в специальную папку для эскизов,
чтобы они не захламляли каталоги с основными файлами.
::
# Скачивание эскизов вложения
attach = cerebro.core.current_attachment() # получаем текущее вложение
task = cerebro.core.current_task() # получаем текущую задачу, чтобы узнать идентификатор проекта
hashs = attach.thumbnail_hashs() # получаем список хешей эскизов файла
for hash in hashs: # перебираем эскизы
if hash != '' and hash != None: # если эскиз у файла существует
file_name = cerebro.cargador.file_name_form_hash(hash) # пробуем получить имя эскиза файла по хешу
if file_name == '' or file_name == None: # если эскиза нет, пробуем его скачать
cerebro.cargador.download_thumbnail(hash, project_id)
.. seealso:: :py:func:`download_file() <cerebro.cargador.download_file>`
"""
py_cerebro_carga.download_thumbnail(hash, project_id)
[документация]def is_local():
"""
:returns: True, если соединение установлено с локальным сервисом Cargador. False, если с сетевым.
:rtype: bool
"""
return py_cerebro_carga.carga_is_local() != 0
[документация]def is_connected():
"""
:returns: True, если соединение c сервисом Cargador установлено.
:rtype: bool
"""
return py_cerebro_carga.carga_is_connected() != 0
[документация]def storage_path():
"""
:returns: Путь до хранилища файлов.
:rtype: string
"""
return py_cerebro_carga.carga_path()
[документация]def storage_host():
"""
:returns: Адрес хоста на котором расположен подключенный сервис Cargador.
:rtype: string
Если соединиение установлено с локальным сервисом Cargador, то вернется 'localhost'.
"""
return py_cerebro_carga.carga_host()