src/pyams_content/component/paragraph/container.py
changeset 914 76f637363cfd
parent 913 5481b19fd47c
child 928 de7b111fee8a
equal deleted inserted replaced
913:5481b19fd47c 914:76f637363cfd
    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.paragraph.interfaces import IParagraphContainer, IParagraphContainerTarget, \
    19 from pyams_content.component.paragraph.interfaces import IParagraphFactory, IParagraphContainer, \
    20     PARAGRAPH_CONTAINER_KEY
    20     IParagraphContainerTarget, PARAGRAPH_CONTAINER_KEY
    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 
    25 # import packages
    25 # import packages
    26 from pyams_content.features.checker import BaseContentChecker
    26 from pyams_content.features.checker import BaseContentChecker
    27 from pyams_utils.adapter import adapter_config, ContextAdapter, get_annotation_adapter
    27 from pyams_utils.adapter import adapter_config, ContextAdapter, get_annotation_adapter
    28 from pyams_utils.container import BTreeOrderedContainer
    28 from pyams_utils.container import BTreeOrderedContainer
       
    29 from pyams_utils.registry import get_global_registry
    29 from zope.interface import implementer
    30 from zope.interface import implementer
    30 
    31 
    31 from pyams_content import _
    32 from pyams_content import _
    32 
    33 
    33 
    34 
    47             if not paragraph.visible:
    48             if not paragraph.visible:
    48                 continue
    49                 continue
    49             if anchors_only and not paragraph.anchor:
    50             if anchors_only and not paragraph.anchor:
    50                 continue
    51                 continue
    51             if factories:
    52             if factories:
    52                 has_factory = tuple(filter(lambda x: x.content_type == paragraph.__class__))
    53                 registry = get_global_registry()
       
    54                 has_factory = False
       
    55                 for factory_name in factories:
       
    56                     factory = registry.queryUtility(IParagraphFactory, name=factory_name)
       
    57                     has_factory = (factory is not None) and (factory.content_type == paragraph.__class__)
    53                 if not has_factory:
    58                 if not has_factory:
    54                     continue
    59                     continue
    55             yield paragraph
    60             yield paragraph
    56 
    61 
    57 
    62