diff -r 2ab5b80afa3f -r 7ad85ca36f04 src/pyams_skin/skin.py --- 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