From f2e844cbeb6b0b31a74fc968b77ebd362eddd5d6 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Wed, 31 Aug 2011 15:01:48 +0200 Subject: [PATCH] when a new version is created: set states to the same values as for the previous version --- versioning/versionable.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/versioning/versionable.py b/versioning/versionable.py index cc194a7..421bc4d 100644 --- a/versioning/versionable.py +++ b/versioning/versionable.py @@ -23,6 +23,7 @@ $Id$ """ from BTrees.OOBTree import OOBTree +from zope import component from zope.component import adapts from zope.interface import implements, Attribute from zope.cachedescriptors.property import Lazy @@ -30,6 +31,7 @@ from zope.schema.interfaces import IField from zope.traversing.api import getName, getParent from cybertools.meta.interfaces import IOptions +from cybertools.stateful.interfaces import IStateful from cybertools.text.mimetypes import extensions from cybertools.typology.interfaces import IType from loops.common import adapted, baseObject @@ -172,7 +174,7 @@ class VersionableResource(object): adaptedObj.externalAddress = newExtAddr adaptedObj.data = adaptedContext.data adaptedObj.externalAddress = newExtAddr # trigger post-processing - #print '***', adaptedObj.externalAddress, obj.__name__ + self.setStates(obj) return obj def createVersion(self, level=1, comment=u''): @@ -205,6 +207,14 @@ class VersionableResource(object): ext = '.' + ext return name + '_' + versionId + ext + def setStates(self, obj): + options = IOptions(self.master.getLoopsRoot()).organize.stateful.resource + if options: + for name in options: + stf = component.getAdapter(self.context, IStateful, name=name) + stfn = component.getAdapter(obj, IStateful, name=name) + stfn.state = stf.state + def cleanupVersions(context, event): """ Called upon deletion of a resource.