src/pyams_content/shared/common/types.py
changeset 558 d9c6b1d7fefa
parent 501 3407e6940f6a
child 826 eb16b1127e06
equal deleted inserted replaced
557:a78ade534b97 558:d9c6b1d7fefa
    28 
    28 
    29 # import packages
    29 # import packages
    30 from persistent import Persistent
    30 from persistent import Persistent
    31 from pyams_content.shared.common.manager import SharedTool
    31 from pyams_content.shared.common.manager import SharedTool
    32 from pyams_i18n.property import I18nFileProperty
    32 from pyams_i18n.property import I18nFileProperty
    33 from pyams_utils.adapter import adapter_config, ContextAdapter
    33 from pyams_utils.adapter import adapter_config, ContextAdapter, get_annotation_adapter
    34 from pyams_utils.registry import get_global_registry
       
    35 from pyams_utils.request import check_request
    34 from pyams_utils.request import check_request
    36 from pyams_utils.traversing import get_parent
    35 from pyams_utils.traversing import get_parent
    37 from pyams_utils.vocabulary import vocabulary_config
    36 from pyams_utils.vocabulary import vocabulary_config
    38 from zope.annotation.interfaces import IAnnotations
       
    39 from zope.container.contained import Contained
    37 from zope.container.contained import Contained
    40 from zope.container.ordered import OrderedContainer
    38 from zope.container.ordered import OrderedContainer
    41 from zope.interface import implementer
    39 from zope.interface import implementer
    42 from zope.lifecycleevent import ObjectCreatedEvent
       
    43 from zope.location import locate
       
    44 from zope.schema import getFieldsInOrder
    40 from zope.schema import getFieldsInOrder
    45 from zope.schema.fieldproperty import FieldProperty
    41 from zope.schema.fieldproperty import FieldProperty
    46 from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm
    42 from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm
    47 
    43 
    48 
    44 
    91 
    87 
    92 
    88 
    93 @adapter_config(context=ITypedSharedTool, provides=ITypedDataManager)
    89 @adapter_config(context=ITypedSharedTool, provides=ITypedDataManager)
    94 def typed_shared_tool_data_manager_factory(context):
    90 def typed_shared_tool_data_manager_factory(context):
    95     """Types shared tool data manager factory"""
    91     """Types shared tool data manager factory"""
    96     annotations = IAnnotations(context)
    92     return get_annotation_adapter(context, DATA_MANAGER_ANNOTATION_KEY, TypedDataManager, name='++types++')
    97     manager = annotations.get(DATA_MANAGER_ANNOTATION_KEY)
       
    98     if manager is None:
       
    99         manager = annotations[DATA_MANAGER_ANNOTATION_KEY] = TypedDataManager()
       
   100         registry = get_global_registry()
       
   101         registry.notify(ObjectCreatedEvent(manager))
       
   102         locate(manager, context, '++types++')
       
   103     return manager
       
   104 
    93 
   105 
    94 
   106 @adapter_config(name='types', context=ITypedSharedTool, provides=ITraversable)
    95 @adapter_config(name='types', context=ITypedSharedTool, provides=ITraversable)
   107 class TypedSharedToolTypesNamespace(ContextAdapter):
    96 class TypedSharedToolTypesNamespace(ContextAdapter):
   108     """Typed shared tool ++types++ namespace"""
    97     """Typed shared tool ++types++ namespace"""