--- 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