Source code for opennode.oms.model.model.byname

from __future__ import absolute_import

from grokcore.component import Subscription, baseclass
from zope.interface import implements

from .base import IContainerExtender, ReadonlyContainer, IDisplayName
from .symlink import Symlink, follow_symlinks


[docs]class ByNameContainer(ReadonlyContainer): """Implements a dynamic view creating a symlink for each parent's object which provides a `display_name()` value. """ __name__ = 'by-name' def __init__(self, parent): self.__parent__ = parent
[docs] def content(self): items = {} for item in self.__parent__.listcontent(): real_item = follow_symlinks(item) # TODO: check why queryAdapter cannot be used here if IDisplayName.providedBy(real_item): named = IDisplayName(real_item) if named: display_name = named.display_name() items[display_name] = Symlink(display_name, item) return items
[docs]class ByNameContainerExtension(Subscription): implements(IContainerExtender) baseclass()
[docs] def extend(self): return {'by-name': ByNameContainer(self.context)}

This Page