18 |
18 |
19 # import interfaces |
19 # import interfaces |
20 from pyams_i18n.interfaces import II18n |
20 from pyams_i18n.interfaces import II18n |
21 from pyams_content.reference.pictograms.interfaces import IPictogramTable, IPictogramManager, IPictogramManagerTarget, \ |
21 from pyams_content.reference.pictograms.interfaces import IPictogramTable, IPictogramManager, IPictogramManagerTarget, \ |
22 PICTOGRAM_MANAGER_KEY, SELECTED_PICTOGRAM_VOCABULARY |
22 PICTOGRAM_MANAGER_KEY, SELECTED_PICTOGRAM_VOCABULARY |
23 from zope.annotation import IAnnotations |
|
24 |
23 |
25 # import packages |
24 # import packages |
26 from pyams_utils.adapter import adapter_config |
25 from pyams_utils.adapter import adapter_config, get_annotation_adapter |
27 from pyams_utils.registry import get_current_registry, query_utility |
26 from pyams_utils.registry import query_utility |
28 from pyams_utils.request import check_request |
27 from pyams_utils.request import check_request |
29 from pyams_utils.traversing import get_parent |
28 from pyams_utils.traversing import get_parent |
30 from pyams_utils.vocabulary import vocabulary_config |
29 from pyams_utils.vocabulary import vocabulary_config |
31 from zope.container.contained import Contained |
30 from zope.container.contained import Contained |
32 from zope.interface import implementer |
31 from zope.interface import implementer |
33 from zope.lifecycleevent import ObjectCreatedEvent |
|
34 from zope.location import locate |
|
35 from zope.schema.fieldproperty import FieldProperty |
32 from zope.schema.fieldproperty import FieldProperty |
36 from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm |
33 from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm |
37 |
34 |
38 |
35 |
39 @implementer(IPictogramManager) |
36 @implementer(IPictogramManager) |
44 |
41 |
45 |
42 |
46 @adapter_config(context=IPictogramManagerTarget, provides=IPictogramManager) |
43 @adapter_config(context=IPictogramManagerTarget, provides=IPictogramManager) |
47 def pictogram_manager_factory(target): |
44 def pictogram_manager_factory(target): |
48 """Pictogram manager factory""" |
45 """Pictogram manager factory""" |
49 annotations = IAnnotations(target) |
46 return get_annotation_adapter(target, PICTOGRAM_MANAGER_KEY, PictogramManager) |
50 manager = annotations.get(PICTOGRAM_MANAGER_KEY) |
|
51 if manager is None: |
|
52 manager = annotations[PICTOGRAM_MANAGER_KEY] = PictogramManager() |
|
53 get_current_registry().notify(ObjectCreatedEvent(manager)) |
|
54 locate(manager, target) |
|
55 return manager |
|
56 |
47 |
57 |
48 |
58 @vocabulary_config(name=SELECTED_PICTOGRAM_VOCABULARY) |
49 @vocabulary_config(name=SELECTED_PICTOGRAM_VOCABULARY) |
59 class SelectedPictogramsVocabulary(SimpleVocabulary): |
50 class SelectedPictogramsVocabulary(SimpleVocabulary): |
60 """Selected pictograms vocabulary""" |
51 """Selected pictograms vocabulary""" |