src/pyams_skin/skin.py
changeset 319 7ad85ca36f04
parent 288 735cb26095e8
child 331 a473eb11ed15
--- a/src/pyams_skin/skin.py	Thu May 03 12:39:11 2018 +0200
+++ b/src/pyams_skin/skin.py	Fri May 04 09:56:55 2018 +0200
@@ -25,6 +25,7 @@
 # import packages
 from pyams_utils.registry import utility_config
 from pyams_utils.traversing import get_parent
+from pyams_utils.zodb import volatile_property
 from pyramid.events import subscriber
 from pyramid.threadlocal import get_current_request
 from pyramid_zope_request import PyramidPublisherRequest
@@ -51,17 +52,31 @@
 
     @inherit_skin.setter
     def inherit_skin(self, value):
-        self._inherit_skin = value if self.can_inherit_skin else False
+        if self.can_inherit_skin:
+            self._inherit_skin = value
+        del self.skin_parent
+
+    @property
+    def no_inherit_skin(self):
+        return not bool(self.inherit_skin)
+
+    @no_inherit_skin.setter
+    def no_inherit_skin(self, value):
+        self.inherit_skin = not bool(value)
 
     @property
     def skin(self):
-        return self._skin
+        if not self.inherit_skin:
+            return self._skin
+        else:
+            return self.skin_parent.skin
 
     @skin.setter
     def skin(self, value):
-        self._skin = None if self.inherit_skin else value
+        if not self.inherit_skin:
+            self._skin = value
 
-    @property
+    @volatile_property
     def skin_parent(self):
         if (not self._inherit_skin) and self.skin:
             return self