src/pyams_content/component/theme/__init__.py
changeset 829 f933926ed0a1
parent 800 2b5460ecb254
child 947 b5eeec049869
equal deleted inserted replaced
828:bf12603398b2 829:f933926ed0a1
    16 # import standard library
    16 # import standard library
    17 
    17 
    18 # import interfaces
    18 # import interfaces
    19 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, \
    20     IThemesTarget, IThemesInfo, THEMES_INFO_KEY, ITagsManager, ITagsManagerTarget, TAGS_MANAGER_KEY, ITagsInfo, \
    20     IThemesTarget, IThemesInfo, THEMES_INFO_KEY, ITagsManager, ITagsManagerTarget, TAGS_MANAGER_KEY, ITagsInfo, \
    21     ITagsTarget, TAGS_INFO_KEY
    21     ITagsTarget, TAGS_INFO_KEY, ICollectionsManager, ICollectionsManagerTarget, COLLECTIONS_MANAGER_KEY, \
       
    22     ICollectionsInfo, ICollectionsTarget, COLLECTIONS_INFO_KEY
    22 from pyams_content.features.checker.interfaces import IContentChecker, ERROR_VALUE
    23 from pyams_content.features.checker.interfaces import IContentChecker, ERROR_VALUE
    23 
    24 
    24 # import packages
    25 # import packages
    25 from persistent import Persistent
    26 from persistent import Persistent
    26 from pyams_content.features.checker import BaseContentChecker
    27 from pyams_content.features.checker import BaseContentChecker
   114 @adapter_config(name='themes', context=IThemesTarget, provides=IContentChecker)
   115 @adapter_config(name='themes', context=IThemesTarget, provides=IContentChecker)
   115 class ThemesContentChecker(BaseContentChecker):
   116 class ThemesContentChecker(BaseContentChecker):
   116     """Themes info content checker"""
   117     """Themes info content checker"""
   117 
   118 
   118     label = _("Themes")
   119     label = _("Themes")
   119     weight = 200
   120     weight = 210
   120 
   121 
   121     def inner_check(self, request):
   122     def inner_check(self, request):
   122         output = []
   123         output = []
   123         translate = request.localizer.translate
   124         translate = request.localizer.translate
   124         themes = IThemesInfo(self.context)
   125         themes = IThemesInfo(self.context)
   125         if not themes.themes:
   126         if not themes.themes:
   126             output.append(translate(ERROR_VALUE).format(field=translate(IThemesInfo['themes'].title),
   127             output.append(translate(ERROR_VALUE).format(field=translate(IThemesInfo['themes'].title),
   127                                                         message=translate(_("no defined theme"))))
   128                                                         message=translate(_("no defined theme"))))
   128         return output
   129         return output
       
   130 
       
   131 
       
   132 #
       
   133 # Collections management
       
   134 #
       
   135 
       
   136 @implementer(ICollectionsManager)
       
   137 class CollectionsManager(Persistent, Contained):
       
   138     """Collections manager persistent class"""
       
   139 
       
   140     thesaurus_name = FieldProperty(ICollectionsManager['thesaurus_name'])
       
   141     extract_name = FieldProperty(ICollectionsManager['extract_name'])
       
   142 
       
   143 
       
   144 @adapter_config(context=ICollectionsManagerTarget, provides=ICollectionsManager)
       
   145 def collections_manager_factory(target):
       
   146     """Collections manager factory"""
       
   147     return get_annotation_adapter(target, COLLECTIONS_MANAGER_KEY, CollectionsManager, name='++collections-manager++')
       
   148 
       
   149 
       
   150 @implementer(ICollectionsInfo)
       
   151 class CollectionsInfo(Persistent, Contained):
       
   152     """Collections info persistent class"""
       
   153 
       
   154     collections = FieldProperty(ICollectionsInfo['collections'])
       
   155 
       
   156 
       
   157 @adapter_config(context=ICollectionsTarget, provides=ICollectionsInfo)
       
   158 def collections_info_factory(target):
       
   159     """Collections info factory"""
       
   160     return get_annotation_adapter(target, COLLECTIONS_INFO_KEY, CollectionsInfo, name='++collections++')
       
   161 
       
   162 
       
   163 @adapter_config(name='collections', context=ICollectionsTarget, provides=IContentChecker)
       
   164 class CollectionsContentChecker(BaseContentChecker):
       
   165     """Collections info content checker"""
       
   166 
       
   167     label = _("Collections")
       
   168     weight = 215
       
   169 
       
   170     def inner_check(self, request):
       
   171         output = []
       
   172         translate = request.localizer.translate
       
   173         collections = ICollectionsInfo(self.context)
       
   174         if not collections.collections:
       
   175             output.append(translate(ERROR_VALUE).format(field=translate(ICollectionsInfo['collections'].title),
       
   176                                                         message=translate(_("no defined collection"))))
       
   177         return output