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