src/pyams_content/reference/pictograms/manager.py
changeset 558 d9c6b1d7fefa
parent 501 3407e6940f6a
child 625 abd143a83a07
equal deleted inserted replaced
557:a78ade534b97 558:d9c6b1d7fefa
    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"""