src/pyams_content/component/theme/__init__.py
changeset 240 0eca05146080
parent 0 7c0001cacf8e
child 501 3407e6940f6a
equal deleted inserted replaced
239:b3b7d4bf63f7 240:0eca05146080
    14 
    14 
    15 
    15 
    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, IThemesInfo, \
    19 from pyams_content.component.theme.interfaces import IThemesManagerTarget, IThemesManager, THEMES_MANAGER_KEY, \
    20     IThemesTarget, THEMES_INFO_KEY
    20     IThemesTarget, IThemesInfo, THEMES_INFO_KEY
       
    21 from pyams_content.features.checker.interfaces import IContentChecker, ERROR_VALUE
    21 from zope.annotation.interfaces import IAnnotations
    22 from zope.annotation.interfaces import IAnnotations
    22 
    23 
    23 # import packages
    24 # import packages
    24 from persistent import Persistent
    25 from persistent import Persistent
       
    26 from pyams_content.features.checker import BaseContentChecker
    25 from pyams_utils.adapter import adapter_config
    27 from pyams_utils.adapter import adapter_config
    26 from pyramid.threadlocal import get_current_registry
    28 from pyramid.threadlocal import get_current_registry
    27 from zope.container.contained import Contained
    29 from zope.container.contained import Contained
    28 from zope.interface import implementer
    30 from zope.interface import implementer
    29 from zope.lifecycleevent import ObjectCreatedEvent
    31 from zope.lifecycleevent import ObjectCreatedEvent
    30 from zope.location import locate
    32 from zope.location import locate
    31 from zope.schema.fieldproperty import FieldProperty
    33 from zope.schema.fieldproperty import FieldProperty
       
    34 
       
    35 from pyams_content import _
    32 
    36 
    33 
    37 
    34 @implementer(IThemesManager)
    38 @implementer(IThemesManager)
    35 class ThemesManager(Persistent, Contained):
    39 class ThemesManager(Persistent, Contained):
    36     """Themes manager persistent class"""
    40     """Themes manager persistent class"""
    66     if info is None:
    70     if info is None:
    67         info = annotations[THEMES_INFO_KEY] = ThemesInfo()
    71         info = annotations[THEMES_INFO_KEY] = ThemesInfo()
    68         get_current_registry().notify(ObjectCreatedEvent(info))
    72         get_current_registry().notify(ObjectCreatedEvent(info))
    69         locate(info, target, '++themes++')
    73         locate(info, target, '++themes++')
    70     return info
    74     return info
       
    75 
       
    76 
       
    77 @adapter_config(name='themes', context=IThemesTarget, provides=IContentChecker)
       
    78 class ThemesContentChecker(BaseContentChecker):
       
    79     """Themes info content checker"""
       
    80 
       
    81     label = _("Themes")
       
    82     weight = 200
       
    83 
       
    84     def inner_check(self, request):
       
    85         output = []
       
    86         translate = request.localizer.translate
       
    87         themes = IThemesInfo(self.context)
       
    88         if not themes.themes:
       
    89             output.append(translate(ERROR_VALUE).format(field=translate(IThemesInfo['themes'].title),
       
    90                                                         message=translate(_("no defined theme"))))
       
    91         return output