src/pyams_gis/configuration.py
changeset 41 5d273277716b
parent 35 39f7e00f9e51
child 65 cc7c2b11ab27
equal deleted inserted replaced
40:56701baa79ee 41:5d273277716b
    15 
    15 
    16 # import standard library
    16 # import standard library
    17 
    17 
    18 # import interfaces
    18 # import interfaces
    19 from pyams_gis.interfaces.configuration import IMapConfiguration, IMapConfigurationTarget
    19 from pyams_gis.interfaces.configuration import IMapConfiguration, IMapConfigurationTarget
    20 from zope.annotation.interfaces import IAnnotations
       
    21 
    20 
    22 # import packages
    21 # import packages
    23 from persistent import Persistent
    22 from persistent import Persistent
    24 from pyams_utils.adapter import adapter_config
    23 from pyams_utils.adapter import adapter_config, get_annotation_adapter
    25 from pyramid.threadlocal import get_current_registry
       
    26 from zope.container.contained import Contained
    24 from zope.container.contained import Contained
    27 from zope.interface import implementer
    25 from zope.interface import implementer
    28 from zope.lifecycleevent import ObjectCreatedEvent
       
    29 from zope.location import locate
       
    30 from zope.schema.fieldproperty import FieldProperty
    26 from zope.schema.fieldproperty import FieldProperty
    31 
    27 
    32 
    28 
    33 @implementer(IMapConfiguration)
    29 @implementer(IMapConfiguration)
    34 class MapConfiguration(Persistent, Contained):
    30 class MapConfiguration(Persistent, Contained):
    84 
    80 
    85 
    81 
    86 @adapter_config(context=IMapConfigurationTarget, provides=IMapConfiguration)
    82 @adapter_config(context=IMapConfigurationTarget, provides=IMapConfiguration)
    87 def map_configuration_factory(context):
    83 def map_configuration_factory(context):
    88     """Map configuration factory"""
    84     """Map configuration factory"""
    89     annotations = IAnnotations(context)
    85     return get_annotation_adapter(context, MAP_CONFIGURATION_KEY, MapConfiguration)
    90     configuration = annotations.get(MAP_CONFIGURATION_KEY)
       
    91     if configuration is None:
       
    92         configuration = annotations[MAP_CONFIGURATION_KEY] = MapConfiguration()
       
    93         get_current_registry().notify(ObjectCreatedEvent(configuration))
       
    94         locate(configuration, context)
       
    95     return configuration