tools
Module¶
Created on 23.07.2012 @author: pirogov
-
class
objectpack.tools.
ModelCache
(model, object_fabric=None)¶ - Базовые классы:
object
Кэш get-ов объектов одной модели. В качестве ключа кэша - набор параметров для get-а Если в конструкторе указана фабрика объектов, то отсутствующие объекты создаются передачей аргументов фабрике.
-
forget_last
()¶
-
get
(**kwargs)¶
-
-
class
objectpack.tools.
QuerySplitter
(query, start, limit=0)¶ - Базовые классы:
object
Порционный загрузчик выборки в итеративном контексте
>>> from django.test.client import RequestFactory >>> rf = RequestFactory() >>> request = rf.post('', {'start': 5, 'limit': 10}) >>> QuerySplitter.make_rows( ... query=range(50), ... validator=lambda x: x % 2, ... request=request) [5, 7, 9, 11, 13, 15, 17, 19, 21, 23]
-
classmethod
make_rows
(query, row_fabric=<function <lambda>>, validator=<function <lambda>>, request=None, start=0, limit=25)¶ Формирует список элементов для грида из выборки. Параметры листания берутся из
request
, или из параметровstart
/limit
. Элементы перед попаданием прогоняются черезrow_fabric
. В результирующий список попадают только те элементы, вызовvalidator
для которых возвращает TrueПараметры: - query (django.db.models.query.QuerySet) – Кварисет
- row_fabric (types.FunctionType) –
- validator (types.FunctionType) – Функция валидатор
- request (django.http.HttpRequest) – Реквест
- start (int) – С какой записи начинать
- limit (int) – Сколько записей взять
-
next
()¶
-
skip_last
()¶ Команда “не учитывать прошлое значение”
-
classmethod
-
class
objectpack.tools.
TransactionCM
(using=None, catcher=None)¶ - Базовые классы:
object
Транизакция в виде ContextManager
-
objectpack.tools.
cached_to
(attr_name)¶ Оборачивает простые методы (без аргументов) и property getters, с целью закэшировать первый полученный результат
Параметры: attr_name (str) – Куда кэшировать
-
objectpack.tools.
collect_overlaps
(obj, queryset, attr_begin='begin', attr_end='end')¶ Возвращает список объектов из указанной выборки, которые пересекаются с указанным объектом по указанным полям начала и конца интервала
Параметры: - obj – Объект
- queryset (django.db.models.query.QuerySet) – Выборка
- attr_begin (str) – Атрибут модели с датой начала
- attr_end (str) – Атрибут модели с датой конца
-
objectpack.tools.
extract_date
(request, key, as_date=False)¶ Извлечение даты из request`а в формате DD.MM.YYYY (в таком виде приходит от ExtDateField) и приведение к Django-формату (YYYY-MM-DD)
-
objectpack.tools.
extract_int
(request, key)¶ Нормальный извлекатель числа
>>> from django.test.client import RequestFactory >>> rf = RequestFactory() >>> request = rf.post('', {}) >>> extract_int(request, 'NaN')
>>> request = rf.post('', {'int':1}) >>> extract_int(request, 'int') 1
-
objectpack.tools.
extract_int_list
(request, key)¶ Нормальный извлекатель списка чисел
>>> from django.test.client import RequestFactory >>> rf = RequestFactory() >>> request = rf.post('', {}) >>> extract_int_list(request, 'list') []
>>> request = rf.post('', {'list':'1,2,3,4'}) >>> extract_int_list(request, 'list') [1, 2, 3, 4]
-
objectpack.tools.
find_element_by_type
(container, cls)¶ Поиск экземпляров элементов во всех вложенных контейнерах
Параметры: - container (m3_ext.ui.containers.containers.ExtContainer) – Контейнер
- cls (types.ClassType) – Класс
-
objectpack.tools.
int_list
(s)¶ >>> int_list('10,20, 30') [10, 20, 30]
-
objectpack.tools.
int_or_none
(s)¶ >>> int_or_none('') None >>> int_or_none('10') 10
-
objectpack.tools.
int_or_zero
(s)¶ >>> int_or_zero('') 0 >>> int_or_zero('10') 10
-
objectpack.tools.
istraversable
(x)¶ возвращает True, если объект
x
позволяет обход себя в цикле for
-
objectpack.tools.
modifier
(**kwargs)¶ Принимает атрибуты со значениями (в виде kwargs) Возвращает модификатор - функцию, модифицирующую передаваемый ей объект указанными атрибутами
>>> w10 = modifier(width=10) >>> controls = map(w10, controls) >>> class Object(object): pass >>> w10 = modifier(width=10) >>> cls = w10(Object()) >>> cls.width 10
-
objectpack.tools.
modify
(obj, **kwargs)¶ Массовое дополнение атрибутов для объекта с его (объекта) возвратом
>>> class Object(object): pass >>> cls = Object() >>> cls.param1 = 0 >>> cls = modify(cls, **{'param1':1, }) >>> cls.param1 1
-
objectpack.tools.
str_to_date
(s)¶ Извлечение даты из строки
>>> str_to_date('31.12.2012') == str_to_date('2012-12-31, Happy New Year') True