Программные утилиты¶
Примечание
Этот материал находится в состоянии наполнения информацией.
Соглашение о реализации утилит¶
Программные утилиты - это вспомогательные функции, реализованные для работы с определенными данными (получение, создание, преобразование, проверка данных). Если определенные одинаковые действия над данными совершаются в различных частях программы, то для упрощения кода эти действия следует оформить в виде функции и вынести в отдельный модуль, доступный при надобности во всех частях программы.
- Во избежание путаницы договоримся о расположении подобных функций/модулей - пусть реализации функций-утилит будут находится по пути:
siriuso/utils
Данная директория представляет собой стандартный модуль Python.
- Утилиты, работающие с одним типом данных (например: картинки, файлы, преобразование текста ит.п.) лучше оформлять в виде отдельного модуля Python в указанной директории.
- Если функция утилита одна в своём роде и выделять её в отдельный модуль нет смысла, то её можно поместить в модуль по пути:
siriuso/utils/modules.py
Содержимое данного файла питом целиком импортируется в файл siriuso/utils/__init__.py, это позволяет получить доступ к функциям пр помощи импорта только модуля utils:
from siriuso.utils import get_enhavo, set_enhavo
Существующие наборы утилит.¶
На текущий момент модуль утилит имеет следующее содержание:
siriuso/utils
├── hash.py
├── __init__.py
├── modules.py
└── thumbnailer.py
- В модуле hash расположена реализция функций получения хэша загруженных на сервер файлов, на текущий момент доступны следующие функции:
# MD5
get_md5(uploaded_file)
# SHA1
get_sha1(uploaded_file)
# SHA224
get_sha224(uploaded_file)
# SHA256
get_sha256(uploaded_file)
# SHA384
get_sha384(uploaded_file)
# SHA512
get_sha512(uploaded_file)
- В модуле thumbnailer расположены функции на базе PIL для работы с загружаемыми на сервер изображениями. Как будет время, нужно переделать их для работы через Pillow.
- В модуле modules расположены различные функции, нас сейчас интересуют 2 наиболее необходимые при программировании приложений для Siriuso:
# Возвращает кортеж c текстовым контентом в первой позиции и кодом локали во втором .. code-block:: bash
def get_enhavo(enhavo_kampo, lingvo=None, empty_values=False)
# Изменяет мультиязычное JSON поле, возвращает True или False .. code-block:: bash
set_enhavo(enhavo_kampo, teksto=None, lingvo=None)
Обе функции принимают в качестве первого аргумента JSON поле объекта модели (ORM Django). Причем поле должно иметь предустановленное значение в виде Python словаря:
{
'enhavo': [],
'lingvo': {},
'chefa_varianto': None
}