src/pyams_content/component/theme/__init__.py
changeset 1423 31c1bc24a308
parent 1389 1485db1e2b5e
--- 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
 #