src/pyams_content/component/theme/__init__.py
changeset 1240 921ff38f1aae
parent 1163 b15d210297bc
child 1389 1485db1e2b5e
equal deleted inserted replaced
1239:b6d9396beffd 1240:921ff38f1aae
    12 
    12 
    13 __docformat__ = 'restructuredtext'
    13 __docformat__ = 'restructuredtext'
    14 
    14 
    15 from persistent import Persistent
    15 from persistent import Persistent
    16 from zope.container.contained import Contained
    16 from zope.container.contained import Contained
    17 from zope.interface import implementer
       
    18 from zope.schema.fieldproperty import FieldProperty
    17 from zope.schema.fieldproperty import FieldProperty
    19 
    18 
    20 from pyams_content.component.theme.interfaces import IThemesManagerTarget, IThemesManager, THEMES_MANAGER_KEY, \
    19 from pyams_content.component.theme.interfaces import IThemesManagerTarget, IThemesManager, THEMES_MANAGER_KEY, \
    21     IThemesTarget, IThemesInfo, THEMES_INFO_KEY, ITagsManager, ITagsManagerTarget, TAGS_MANAGER_KEY, ITagsInfo, \
    20     IThemesTarget, IThemesInfo, THEMES_INFO_KEY, ITagsManager, ITagsManagerTarget, TAGS_MANAGER_KEY, ITagsInfo, \
    22     ITagsTarget, TAGS_INFO_KEY, ICollectionsManager, ICollectionsManagerTarget, COLLECTIONS_MANAGER_KEY, \
    21     ITagsTarget, TAGS_INFO_KEY, ICollectionsManager, ICollectionsManagerTarget, COLLECTIONS_MANAGER_KEY, \
    23     ICollectionsInfo, ICollectionsTarget, COLLECTIONS_INFO_KEY
    22     ICollectionsInfo, ICollectionsTarget, COLLECTIONS_INFO_KEY
    24 from pyams_content.features.checker import BaseContentChecker
    23 from pyams_content.features.checker import BaseContentChecker
    25 from pyams_content.features.checker.interfaces import IContentChecker, ERROR_VALUE
    24 from pyams_content.features.checker.interfaces import IContentChecker, ERROR_VALUE
    26 from pyams_utils.adapter import adapter_config, get_annotation_adapter
    25 from pyams_utils.adapter import adapter_config, get_annotation_adapter
       
    26 from pyams_utils.factory import factory_config
    27 
    27 
    28 from pyams_content import _
    28 from pyams_content import _
    29 
    29 
    30 
    30 
    31 #
    31 #
    32 # Tags management
    32 # Tags management
    33 #
    33 #
    34 
    34 
    35 @implementer(ITagsManager)
    35 @factory_config(ITagsManager)
    36 class TagsManager(Persistent, Contained):
    36 class TagsManager(Persistent, Contained):
    37     """Tags manager persistent class"""
    37     """Tags manager persistent class"""
    38 
    38 
    39     thesaurus_name = FieldProperty(ITagsManager['thesaurus_name'])
    39     thesaurus_name = FieldProperty(ITagsManager['thesaurus_name'])
    40     extract_name = FieldProperty(ITagsManager['extract_name'])
    40     extract_name = FieldProperty(ITagsManager['extract_name'])
    47 
    47 
    48 
    48 
    49 @adapter_config(context=ITagsManagerTarget, provides=ITagsManager)
    49 @adapter_config(context=ITagsManagerTarget, provides=ITagsManager)
    50 def tags_manager_factory(target):
    50 def tags_manager_factory(target):
    51     """Tags manager factory"""
    51     """Tags manager factory"""
    52     return get_annotation_adapter(target, TAGS_MANAGER_KEY, TagsManager, name='++tags-manager++')
    52     return get_annotation_adapter(target, TAGS_MANAGER_KEY, ITagsManager,
       
    53                                   name='++tags-manager++')
    53 
    54 
    54 
    55 
    55 @implementer(ITagsInfo)
    56 @factory_config(ITagsInfo)
    56 class TagsInfo(Persistent, Contained):
    57 class TagsInfo(Persistent, Contained):
    57     """Tags info persistent class"""
    58     """Tags info persistent class"""
    58 
    59 
    59     tags = FieldProperty(ITagsInfo['tags'])
    60     tags = FieldProperty(ITagsInfo['tags'])
    60 
    61 
    61 
    62 
    62 @adapter_config(context=ITagsTarget, provides=ITagsInfo)
    63 @adapter_config(context=ITagsTarget, provides=ITagsInfo)
    63 def tags_info_factory(target):
    64 def tags_info_factory(target):
    64     """Tags info factory"""
    65     """Tags info factory"""
    65     return get_annotation_adapter(target, TAGS_INFO_KEY, TagsInfo, name='++tags++')
    66     return get_annotation_adapter(target, TAGS_INFO_KEY, ITagsInfo,
       
    67                                   name='++tags++')
    66 
    68 
    67 
    69 
    68 @adapter_config(name='tags', context=ITagsTarget, provides=IContentChecker)
    70 @adapter_config(name='tags', context=ITagsTarget, provides=IContentChecker)
    69 class TagsContentChecker(BaseContentChecker):
    71 class TagsContentChecker(BaseContentChecker):
    70     """Tags info content checker"""
    72     """Tags info content checker"""
    84 
    86 
    85 #
    87 #
    86 # Themes management
    88 # Themes management
    87 #
    89 #
    88 
    90 
    89 @implementer(IThemesManager)
    91 @factory_config(IThemesManager)
    90 class ThemesManager(Persistent, Contained):
    92 class ThemesManager(Persistent, Contained):
    91     """Themes manager persistent class"""
    93     """Themes manager persistent class"""
    92 
    94 
    93     thesaurus_name = FieldProperty(IThemesManager['thesaurus_name'])
    95     thesaurus_name = FieldProperty(IThemesManager['thesaurus_name'])
    94     extract_name = FieldProperty(IThemesManager['extract_name'])
    96     extract_name = FieldProperty(IThemesManager['extract_name'])
    95 
    97 
    96 
    98 
    97 @adapter_config(context=IThemesManagerTarget, provides=IThemesManager)
    99 @adapter_config(context=IThemesManagerTarget, provides=IThemesManager)
    98 def themes_manager_factory(target):
   100 def themes_manager_factory(target):
    99     """Themes manager factory"""
   101     """Themes manager factory"""
   100     return get_annotation_adapter(target, THEMES_MANAGER_KEY, ThemesManager, name='++themes-manager++')
   102     return get_annotation_adapter(target, THEMES_MANAGER_KEY, IThemesManager,
       
   103                                   name='++themes-manager++')
   101 
   104 
   102 
   105 
   103 @implementer(IThemesInfo)
   106 @factory_config(IThemesInfo)
   104 class ThemesInfo(Persistent, Contained):
   107 class ThemesInfo(Persistent, Contained):
   105     """Themes info persistent class"""
   108     """Themes info persistent class"""
   106 
   109 
   107     themes = FieldProperty(IThemesInfo['themes'])
   110     themes = FieldProperty(IThemesInfo['themes'])
   108 
   111 
   109 
   112 
   110 @adapter_config(context=IThemesTarget, provides=IThemesInfo)
   113 @adapter_config(context=IThemesTarget, provides=IThemesInfo)
   111 def themes_info_factory(target):
   114 def themes_info_factory(target):
   112     """Themes info factory"""
   115     """Themes info factory"""
   113     return get_annotation_adapter(target, THEMES_INFO_KEY, ThemesInfo, name='++themes++')
   116     return get_annotation_adapter(target, THEMES_INFO_KEY, IThemesInfo,
       
   117                                   name='++themes++')
   114 
   118 
   115 
   119 
   116 @adapter_config(name='themes', context=IThemesTarget, provides=IContentChecker)
   120 @adapter_config(name='themes', context=IThemesTarget, provides=IContentChecker)
   117 class ThemesContentChecker(BaseContentChecker):
   121 class ThemesContentChecker(BaseContentChecker):
   118     """Themes info content checker"""
   122     """Themes info content checker"""
   132 
   136 
   133 #
   137 #
   134 # Collections management
   138 # Collections management
   135 #
   139 #
   136 
   140 
   137 @implementer(ICollectionsManager)
   141 @factory_config(ICollectionsManager)
   138 class CollectionsManager(Persistent, Contained):
   142 class CollectionsManager(Persistent, Contained):
   139     """Collections manager persistent class"""
   143     """Collections manager persistent class"""
   140 
   144 
   141     thesaurus_name = FieldProperty(ICollectionsManager['thesaurus_name'])
   145     thesaurus_name = FieldProperty(ICollectionsManager['thesaurus_name'])
   142     extract_name = FieldProperty(ICollectionsManager['extract_name'])
   146     extract_name = FieldProperty(ICollectionsManager['extract_name'])
   143 
   147 
   144 
   148 
   145 @adapter_config(context=ICollectionsManagerTarget, provides=ICollectionsManager)
   149 @adapter_config(context=ICollectionsManagerTarget, provides=ICollectionsManager)
   146 def collections_manager_factory(target):
   150 def collections_manager_factory(target):
   147     """Collections manager factory"""
   151     """Collections manager factory"""
   148     return get_annotation_adapter(target, COLLECTIONS_MANAGER_KEY, CollectionsManager, name='++collections-manager++')
   152     return get_annotation_adapter(target, COLLECTIONS_MANAGER_KEY, ICollectionsManager,
       
   153                                   name='++collections-manager++')
   149 
   154 
   150 
   155 
   151 @implementer(ICollectionsInfo)
   156 @factory_config(ICollectionsInfo)
   152 class CollectionsInfo(Persistent, Contained):
   157 class CollectionsInfo(Persistent, Contained):
   153     """Collections info persistent class"""
   158     """Collections info persistent class"""
   154 
   159 
   155     collections = FieldProperty(ICollectionsInfo['collections'])
   160     collections = FieldProperty(ICollectionsInfo['collections'])
   156 
   161 
   157 
   162 
   158 @adapter_config(context=ICollectionsTarget, provides=ICollectionsInfo)
   163 @adapter_config(context=ICollectionsTarget, provides=ICollectionsInfo)
   159 def collections_info_factory(target):
   164 def collections_info_factory(target):
   160     """Collections info factory"""
   165     """Collections info factory"""
   161     return get_annotation_adapter(target, COLLECTIONS_INFO_KEY, CollectionsInfo, name='++collections++')
   166     return get_annotation_adapter(target, COLLECTIONS_INFO_KEY, ICollectionsInfo,
       
   167                                   name='++collections++')
   162 
   168 
   163 
   169 
   164 @adapter_config(name='collections', context=ICollectionsTarget, provides=IContentChecker)
   170 @adapter_config(name='collections', context=ICollectionsTarget, provides=IContentChecker)
   165 class CollectionsContentChecker(BaseContentChecker):
   171 class CollectionsContentChecker(BaseContentChecker):
   166     """Collections info content checker"""
   172     """Collections info content checker"""