Zope3 продукты ng.content.profile ng.base.form

ng.base.itemsfilter

Степан Ломов  2009-08-13 11:06

Продукт ng.base.itemsfilter предоставляет основу для создания фильтров и отбора с их помощью элеметов контейнера, удовлетворяющих условиям, заданным фильтром.

Продукт

Название:
ng.base.itemsfilter
Репозиторий
Краткое описание пакета ng.base.itemsfilter

Краткое описание пакета ng.base.itemsfilter

Пакет предоставляет основу для создания фильтров, позволяющих отобрать содержимое контейнера по некоторому условию.

Использование

Использование пакета включает в себя создание фильтра и его последующее использование. Фильтр наследуюется от класса ItemsFilterCondition и регистрируется как адаптер к интерфейсу IItemsFilterCondition с указанием имени. Зарегистрированный фильтр в последствии может вызываться по имени, указанному при регистрации.

Фильтр, отбирающий объекты, для которых установлен флаг isselected интерфейса ISomeSelection, определяется следующим образом:

from ng.base.itemsfilter.itemsfiltercondition import ItemsFilterCondition
from interfaces import ISomeSelection

class SomeSelectionFilter(ItemsFilterCondition) :

    def __call__(self) :
        try :
            return ISomeSelection(self.context).is_selected
        except TypeErrror :
            return False

Фильтр нужно зарегистрировать в configure.zcml как именованный адаптер:

<zope:adapter
  for="zope.app.container.interfaces.IContained"
  factory = ".someselectionfilter.SomeSelection"
  name="someselection"
  />

Для отбора элементов контейнера при помощи фильтра someselection контейнейнер приводится к интерфейсу IItemsFilter. Этот интерфейс позволяет обращаться ко всем зарегистрированным фильтрам по имени, как к элементам словаря:

from ng.base.itemsfilter.interfaces import IItemsFilter

    def selected(context) :
        return IItemsFilter(context)["someselection"].values()

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

Вложено:

README.txt 2009-08-13 11:09  

...

Новое в ng.base.itemsfilter 2009-08-13 11:09  
Эпицентр Zope3 Учат тут Нейросети Репозиторий Статистика Редакторам Проекты
Подписаться на RSS Feed Официальный сайт Zope3 Московская группа изучения реактивного движения The Dream Bot Site noooxml