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""" |