Кеши (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¶ Кеш объектов модели актуальных на начальную дату
-