--- a/src/pyams_content/component/theme/__init__.py Tue Sep 08 12:23:21 2020 +0200
+++ b/src/pyams_content/component/theme/__init__.py Fri Nov 13 13:01:02 2020 +0100
@@ -11,7 +11,10 @@
#
from persistent import Persistent
+from pyramid.events import subscriber
from zope.container.contained import Contained
+from zope.interface import alsoProvides
+from zope.lifecycleevent import IObjectAddedEvent
from zope.schema.fieldproperty import FieldProperty
from pyams_content.component.theme.interfaces import COLLECTIONS_INFO_KEY, \
@@ -21,8 +24,10 @@
THEMES_INFO_KEY, THEMES_MANAGER_KEY
from pyams_content.features.checker import BaseContentChecker
from pyams_content.features.checker.interfaces import ERROR_VALUE, IContentChecker
+from pyams_content.shared.site.interfaces import ISiteFolder
from pyams_utils.adapter import adapter_config, get_annotation_adapter
from pyams_utils.factory import factory_config
+from pyams_utils.inherit import BaseInheritInfo, InheritedFieldProperty
__docformat__ = 'restructuredtext'
@@ -104,10 +109,14 @@
@factory_config(IThemesInfo)
-class ThemesInfo(Persistent, Contained):
+class ThemesInfo(BaseInheritInfo, Persistent, Contained):
"""Themes info persistent class"""
- themes = FieldProperty(IThemesInfo['themes'])
+ adapted_interface = IThemesInfo
+ target_interface = IThemesTarget
+
+ _themes = FieldProperty(IThemesInfo['themes'])
+ themes = InheritedFieldProperty(IThemesInfo['themes'])
@adapter_config(context=IThemesTarget, provides=IThemesInfo)
@@ -135,6 +144,12 @@
return output
+@subscriber(IObjectAddedEvent, context_selector=ISiteFolder, parent_selector=IThemesTarget)
+def handle_added_site_folder(event):
+ """Handle site folder when added to a themes target"""
+ alsoProvides(event.object, IThemesTarget)
+
+
#
# Collections management
#