src/pyams_content/component/association/container.py
changeset 633 7ebe8a011c16
parent 548 43048fb84b87
child 841 d50743e69693
equal deleted inserted replaced
632:aa2352c824ca 633:7ebe8a011c16
    14 
    14 
    15 
    15 
    16 # import standard library
    16 # import standard library
    17 
    17 
    18 # import interfaces
    18 # import interfaces
    19 from pyams_content.component.association.interfaces import IAssociationContainer, IAssociationTarget, \
    19 from pyams_content.component.association.interfaces import IAssociationContainer, IAssociationContainerTarget, \
    20     ASSOCIATION_CONTAINER_KEY, IAssociationItem, IAssociationInfo
    20     ASSOCIATION_CONTAINER_KEY, IAssociationItem, IAssociationInfo
    21 from pyams_content.features.checker.interfaces import IContentChecker
    21 from pyams_content.features.checker.interfaces import IContentChecker
    22 from zope.location.interfaces import ISublocations
    22 from zope.location.interfaces import ISublocations
    23 from zope.traversing.interfaces import ITraversable
    23 from zope.traversing.interfaces import ITraversable
    24 
    24 
    56 
    56 
    57     def get_visible_items(self):
    57     def get_visible_items(self):
    58         return filter(lambda x: IAssociationItem(x).visible, self.values())
    58         return filter(lambda x: IAssociationItem(x).visible, self.values())
    59 
    59 
    60 
    60 
    61 @adapter_config(context=IAssociationTarget, provides=IAssociationContainer)
    61 @adapter_config(context=IAssociationContainerTarget, provides=IAssociationContainer)
    62 def association_container_factory(target):
    62 def association_container_factory(target):
    63     """Associations container factory"""
    63     """Associations container factory"""
    64     return get_annotation_adapter(target, ASSOCIATION_CONTAINER_KEY, AssociationContainer, name='++ass++')
    64     return get_annotation_adapter(target, ASSOCIATION_CONTAINER_KEY, AssociationContainer, name='++ass++')
    65 
    65 
    66 
    66 
    67 @adapter_config(name='ass', context=IAssociationTarget, provides=ITraversable)
    67 @adapter_config(name='ass', context=IAssociationContainerTarget, provides=ITraversable)
    68 class AssociationContainerNamespace(ContextAdapter):
    68 class AssociationContainerNamespace(ContextAdapter):
    69     """Associations container ++ass++ namespace"""
    69     """Associations container ++ass++ namespace"""
    70 
    70 
    71     def traverse(self, name, furtherpath=None):
    71     def traverse(self, name, furtherpath=None):
    72         registry = get_current_registry()
    72         registry = get_current_registry()
    73         return registry.queryAdapter(self.context, IAssociationContainer, name=name or '')
    73         return registry.queryAdapter(self.context, IAssociationContainer, name=name or '')
    74 
    74 
    75 
    75 
    76 @adapter_config(name='associations', context=IAssociationTarget, provides=ISublocations)
    76 @adapter_config(name='associations', context=IAssociationContainerTarget, provides=ISublocations)
    77 class AssociationContainerSublocations(ContextAdapter):
    77 class AssociationContainerSublocations(ContextAdapter):
    78     """Associations container sub-locations adapter"""
    78     """Associations container sub-locations adapter"""
    79 
    79 
    80     def sublocations(self):
    80     def sublocations(self):
    81         return IAssociationContainer(self.context).values()
    81         return IAssociationContainer(self.context).values()
    82 
    82 
    83 
    83 
    84 @adapter_config(name='associations', context=IAssociationTarget, provides=IContentChecker)
    84 @adapter_config(name='associations', context=IAssociationContainerTarget, provides=IContentChecker)
    85 class AssociationsContentChecker(BaseContentChecker):
    85 class AssociationsContentChecker(BaseContentChecker):
    86     """Associations content checker"""
    86     """Associations content checker"""
    87 
    87 
    88     label = _("Associations")
    88     label = _("Associations")
    89     sep = '\n'
    89     sep = '\n'
   108 class ContentAssociationsVocabulary(SimpleVocabulary):
   108 class ContentAssociationsVocabulary(SimpleVocabulary):
   109     """Content associations vocabulary"""
   109     """Content associations vocabulary"""
   110 
   110 
   111     def __init__(self, context=None):
   111     def __init__(self, context=None):
   112         terms = []
   112         terms = []
   113         target = get_parent(context, IAssociationTarget)
   113         target = get_parent(context, IAssociationContainerTarget)
   114         if target is not None:
   114         if target is not None:
   115             terms = [SimpleTerm(link.__name__, title=IAssociationInfo(link).inner_title)
   115             terms = [SimpleTerm(link.__name__, title=IAssociationInfo(link).inner_title)
   116                      for link in IAssociationContainer(target).values()]
   116                      for link in IAssociationContainer(target).values()]
   117         super(ContentAssociationsVocabulary, self).__init__(terms)
   117         super(ContentAssociationsVocabulary, self).__init__(terms)