Краткое описание пакета 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()

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





