src/pyams_content/component/paragraph/pictogram.py
changeset 558 d9c6b1d7fefa
parent 555 8e8a14452567
child 586 28445044f6e3
equal deleted inserted replaced
557:a78ade534b97 558:d9c6b1d7fefa
    24     PICTOGRAM_PARAGRAPH_RENDERERS
    24     PICTOGRAM_PARAGRAPH_RENDERERS
    25 from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE, ERROR_VALUE
    25 from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE, ERROR_VALUE
    26 from pyams_content.reference.pictograms.interfaces import IPictogramTable
    26 from pyams_content.reference.pictograms.interfaces import IPictogramTable
    27 from pyams_form.interfaces.form import IFormContextPermissionChecker
    27 from pyams_form.interfaces.form import IFormContextPermissionChecker
    28 from pyams_i18n.interfaces import II18n, II18nManager, INegotiator
    28 from pyams_i18n.interfaces import II18n, II18nManager, INegotiator
    29 from zope.annotation import IAnnotations
       
    30 from zope.lifecycleevent import IObjectAddedEvent, ObjectModifiedEvent, ObjectCreatedEvent
    29 from zope.lifecycleevent import IObjectAddedEvent, ObjectModifiedEvent, ObjectCreatedEvent
    31 from zope.location.interfaces import ISublocations
    30 from zope.location.interfaces import ISublocations
    32 from zope.traversing.interfaces import ITraversable
    31 from zope.traversing.interfaces import ITraversable
    33 
    32 
    34 # import packages
    33 # import packages
    35 from pyams_catalog.utils import index_object
    34 from pyams_catalog.utils import index_object
    36 from pyams_content.component.paragraph import BaseParagraph, BaseParagraphFactory, BaseParagraphContentChecker
    35 from pyams_content.component.paragraph import BaseParagraph, BaseParagraphFactory, BaseParagraphContentChecker
    37 from pyams_content.features.checker import BaseContentChecker
    36 from pyams_content.features.checker import BaseContentChecker
    38 from pyams_content.features.renderer import RenderersVocabulary
    37 from pyams_content.features.renderer import RenderersVocabulary
    39 from pyams_utils.adapter import adapter_config, ContextAdapter
    38 from pyams_utils.adapter import adapter_config, ContextAdapter, get_annotation_adapter
    40 from pyams_utils.factory import factory_config
    39 from pyams_utils.factory import factory_config
    41 from pyams_utils.registry import query_utility, get_current_registry, get_utility, utility_config
    40 from pyams_utils.registry import query_utility, get_current_registry, get_utility, utility_config
    42 from pyams_utils.request import check_request
    41 from pyams_utils.request import check_request
    43 from pyams_utils.traversing import get_parent
    42 from pyams_utils.traversing import get_parent
    44 from pyams_utils.vocabulary import vocabulary_config
    43 from pyams_utils.vocabulary import vocabulary_config
   162 
   161 
   163 
   162 
   164 @adapter_config(context=IPictogramContainerTarget, provides=IPictogramContainer)
   163 @adapter_config(context=IPictogramContainerTarget, provides=IPictogramContainer)
   165 def pictogram_container_factory(target):
   164 def pictogram_container_factory(target):
   166     """Pictogram container factory"""
   165     """Pictogram container factory"""
   167     annotations = IAnnotations(target)
   166     return get_annotation_adapter(target, PICTOGRAM_CONTAINER_KEY, PictogramContainer, name='++pictos++')
   168     container = annotations.get(PICTOGRAM_CONTAINER_KEY)
       
   169     if container is None:
       
   170         container = annotations[PICTOGRAM_CONTAINER_KEY] = PictogramContainer()
       
   171         get_current_registry().notify(ObjectCreatedEvent(container))
       
   172         locate(container, target, '++pictos++')
       
   173     return container
       
   174 
   167 
   175 
   168 
   176 @adapter_config(name='pictos', context=IPictogramContainerTarget, provides=ITraversable)
   169 @adapter_config(name='pictos', context=IPictogramContainerTarget, provides=ITraversable)
   177 class PictogramContainerNamespace(ContextAdapter):
   170 class PictogramContainerNamespace(ContextAdapter):
   178     """Pictogram container ++pictos++ namespace"""
   171     """Pictogram container ++pictos++ namespace"""