Кеши (Cache)

class function_tools.caches.ActualEntityCache(actual_date, *args, **kwargs)
Базовые классы: function_tools.caches.EntityCache

Базовый класс кеша актуальных записей сущности

_after_prepare()

Точка расширения после подготовки кеша

_before_prepare()

Точка расширения перед подготовкой кеша

_check_is_iterable(object_)

Проверяет, является ли передаваемый объект итерабельным

_prepare()

Метод подготовки кеша

_prepare_actual_entities_queryset() → Dict[str, datetime.date]

Метод получения фильтра актуализации по дате.

_prepare_entities()

Получение выборки объектов модели по указанными параметрам

_prepare_entities_hash_table()

Отвечает за построение хеш таблицы для дальнейшего поиска. В качестве ключа можно задавать строку - наименование поля или кортеж наименований полей.

Если требуется доступ через внешний ключ, то необходимо использовать точку в качестве разделителей. Например, searching_key = tuple(„account_id“, „supplier.code“)

entities

Возвращает список объектов либо QuerySet в зависимости от подхода к получению объектов

filter(only_first: bool = False, **kwargs)

Метод фильтрации объектов кеша по заданным параметрам.

Пример использования:

some_objects_list = cache.filter(code=“12345“, only_first=True)

Можно получать первое попавшееся значение с указанием only_first=True

first()

Получение первого элемента из кеша

flat_values_list(field_name: str)

Получение плоского списка значений объектов указанного свойства без пустых значений.

: param field_name: наименование поля

get_by_key(key: Union[Any, Tuple[Any]], strict_mode=True)

Метод получения значения из кеша по ключу поиска.

В общем случае передаваемый ключ должен совпадать с _searching_key. Если отключить строгий режим поиска - strict_mode=False, то можно получить промежуточный результат по части ключа следующего с начала.

values_list(fields: Tuple[str, ...]) → Optional[List[Tuple]]

Получение списка кортежей состоящих из значений полей объектов согласно заданным параметрам

Параметры:fields – кортеж наименований полей
class function_tools.caches.BaseCache
Базовые классы: object

Кеш-заглушка

class function_tools.caches.CacheStorage
Базовые классы: function_tools.caches.BaseCache

Хранилище кешей.

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

class function_tools.caches.EntityCache(model: Type[django.db.models.base.Model], *args, select_related_fields: Optional[Tuple[str, ...]] = None, only_fields: Optional[Tuple[str, ...]] = None, additional_filter_params: Optional[Dict[str, Any]] = None, searching_key: Union[str, Tuple[str, ...]] = ('pk',), **kwargs)
Базовые классы: function_tools.caches.BaseCache

Базовый класс кеша объектов сущности

_after_prepare()

Точка расширения после подготовки кеша

_before_prepare()

Точка расширения перед подготовкой кеша

_check_is_iterable(object_)

Проверяет, является ли передаваемый объект итерабельным

_prepare()

Метод подготовки кеша

_prepare_actual_entities_queryset()

Подготовка менеджена с указанием идентификатора учреждения и состояния, если такие имеются у модели

_prepare_entities()

Получение выборки объектов модели по указанными параметрам

_prepare_entities_hash_table()

Отвечает за построение хеш таблицы для дальнейшего поиска. В качестве ключа можно задавать строку - наименование поля или кортеж наименований полей.

Если требуется доступ через внешний ключ, то необходимо использовать точку в качестве разделителей. Например, searching_key = tuple(„account_id“, „supplier.code“)

entities

Возвращает список объектов либо QuerySet в зависимости от подхода к получению объектов

filter(only_first: bool = False, **kwargs)

Метод фильтрации объектов кеша по заданным параметрам.

Пример использования:

some_objects_list = cache.filter(code=“12345“, only_first=True)

Можно получать первое попавшееся значение с указанием only_first=True

first()

Получение первого элемента из кеша

flat_values_list(field_name: str)

Получение плоского списка значений объектов указанного свойства без пустых значений.

: param field_name: наименование поля

get_by_key(key: Union[Any, Tuple[Any]], strict_mode=True)

Метод получения значения из кеша по ключу поиска.

В общем случае передаваемый ключ должен совпадать с _searching_key. Если отключить строгий режим поиска - strict_mode=False, то можно получить промежуточный результат по части ключа следующего с начала.

values_list(fields: Tuple[str, ...]) → Optional[List[Tuple]]

Получение списка кортежей состоящих из значений полей объектов согласно заданным параметрам

Параметры:fields – кортеж наименований полей
class function_tools.caches.PeriodicalEntityCache(date_from: datetime.date, date_to: datetime.date, model: Type[django.db.models.base.Model], *args, select_related_fields: Optional[Tuple[str, ...]] = None, only_fields: Optional[Tuple[str, ...]] = None, additional_filter_params: Optional[Dict[str, Any]] = None, searching_key: Union[str, Tuple[str, ...]] = ('pk',), **kwargs)
Базовые классы: function_tools.caches.BaseCache

Базовый класс периодического кеша.

Кеш создается для определенной модели с указанием двух дат, на которые должны быть собраны кеши актуальных объектов модели.

Для примера, может использоваться при переносах остатков на очередной год с 31 декабря на 1 января нового года.

_after_prepare()

Точка расширения после формирования кеша

_before_prepare()

Точка расширения перед формированием кеша

_get_actuality_filter(period_type: str) → Dict[str, datetime.date]

Метод получения фильтра актуализации по дате.

При получении счетов или аналитик при переносе остатков необходимо учитывать период действия следуя следующей логике: – старые - begin < date_from && end >= date_from – новые - begin <= date_to && end > date_to

Параметры:period_type (dict) – словарь с параметрами для актуализации по дате
Результат:
_prepare()

Формирование кешей на начальную и конечную даты

_prepare_additional_filter_params(period_type: str)

Подготовка словаря с дополнительными параметрами для дальнейшей фильтрации объектов при формировании кеша

_prepare_entities_cache(additional_filter_params: Optional[Dict[str, Any]])

Создание кеша объектов модели на указанную дату по указанным параметром с ключом поиска для построения хеш-таблицы

_prepare_new_additional_filter_params()

Подготовка дополнительных параметров фильтрации на конечную дату

_prepare_new_entities_cache()

Формирование кеша объектов модели на конечную дату

_prepare_old_additional_filter_params()

Подготовка дополнительных параметров фильтрации на начальную дату

_prepare_old_entities_cache()

Формирование кеша объектов модели на начальную дату

entity_cache_class

псевдоним класса EntityCache

new

Кеш объектов модели актуальный на конечную дату

old

Кеш объектов модели актуальных на начальную дату