src/pyams_content/features/share/container.py
changeset 1239 b6d9396beffd
parent 1138 6de2ab88b4fe
child 1247 2b1abe98ff47
equal deleted inserted replaced
1238:6c23614804f2 1239:b6d9396beffd
    10 # FOR A PARTICULAR PURPOSE.
    10 # FOR A PARTICULAR PURPOSE.
    11 #
    11 #
    12 
    12 
    13 __docformat__ = 'restructuredtext'
    13 __docformat__ = 'restructuredtext'
    14 
    14 
       
    15 from persistent import Persistent
       
    16 from zope.container.contained import Contained
    15 from zope.container.ordered import OrderedContainer
    17 from zope.container.ordered import OrderedContainer
    16 from zope.interface import implementer
       
    17 from zope.location import locate
    18 from zope.location import locate
    18 from zope.location.interfaces import ISublocations
    19 from zope.location.interfaces import ISublocations
       
    20 from zope.schema.fieldproperty import FieldProperty
    19 from zope.traversing.interfaces import ITraversable
    21 from zope.traversing.interfaces import ITraversable
    20 
    22 
    21 from pyams_catalog.utils import index_object
    23 from pyams_catalog.utils import index_object
    22 from pyams_content.features.share import ISocialShareItem
    24 from pyams_content.features.share import ISocialShareItem
    23 from pyams_content.features.share.interfaces import ISocialShareManager, ISocialShareManagerTarget, \
    25 from pyams_content.features.share.interfaces import ISocialShareInfo, ISocialShareManager, ISocialShareManagerTarget, \
    24     SOCIAL_SHARE_MANAGER_KEY
    26     SOCIAL_SHARE_INFO_KEY, SOCIAL_SHARE_MANAGER_KEY
    25 from pyams_utils.adapter import ContextAdapter, adapter_config, get_annotation_adapter
    27 from pyams_utils.adapter import ContextAdapter, adapter_config, get_annotation_adapter
       
    28 from pyams_utils.factory import factory_config
    26 
    29 
    27 
    30 
    28 @implementer(ISocialShareManager)
    31 @factory_config(ISocialShareInfo)
       
    32 class SocialShareInfo(Persistent, Contained):
       
    33     """Social network share general info"""
       
    34 
       
    35     twitter_account = FieldProperty(ISocialShareInfo['twitter_account'])
       
    36     twitter_creator_account = FieldProperty(ISocialShareInfo['twitter_creator_account'])
       
    37 
       
    38 
       
    39 @adapter_config(context=ISocialShareManagerTarget, provides=ISocialShareInfo)
       
    40 def social_share_info_factory(context):
       
    41     """Social network general info factory"""
       
    42     return get_annotation_adapter(context, SOCIAL_SHARE_INFO_KEY, ISocialShareInfo)
       
    43 
       
    44 
       
    45 @factory_config(ISocialShareManager)
    29 class SocialShareManager(OrderedContainer):
    46 class SocialShareManager(OrderedContainer):
    30     """Social network share manager"""
    47     """Social network share links manager"""
    31 
    48 
    32     last_id = 1
    49     last_id = 1
    33 
    50 
    34     def append(self, value, notify=True):
    51     def append(self, value, notify=True):
    35         key = str(self.last_id)
    52         key = str(self.last_id)
    47 
    64 
    48 
    65 
    49 @adapter_config(context=ISocialShareManagerTarget, provides=ISocialShareManager)
    66 @adapter_config(context=ISocialShareManagerTarget, provides=ISocialShareManager)
    50 def social_share_manager_factory(context):
    67 def social_share_manager_factory(context):
    51     """Social network share manager factory"""
    68     """Social network share manager factory"""
    52     return get_annotation_adapter(context, SOCIAL_SHARE_MANAGER_KEY, SocialShareManager, name='++social-share++')
    69     return get_annotation_adapter(context, SOCIAL_SHARE_MANAGER_KEY, ISocialShareManager,
       
    70                                   name='++social-share++')
    53 
    71 
    54 
    72 
    55 @adapter_config(name='social-share', context=ISocialShareManagerTarget, provides=ITraversable)
    73 @adapter_config(name='social-share', context=ISocialShareManagerTarget, provides=ITraversable)
    56 class SocialShareManagerNamespace(ContextAdapter):
    74 class SocialShareManagerNamespace(ContextAdapter):
    57     """Social network share manager ++social-share++ namespace"""
    75     """Social network share manager ++social-share++ namespace"""