[Users]'
% (self._refid, self.id,
self.id,
))
def __bobo_traverse__(self, REQUEST, name):
if name[-9:]=='__draft__': return getattr(self, name)
try: db=self._p_jar.db()
except:
# BoboPOS 2
jar = Globals.VersionBase[self._version].jar
else:
# ZODB 3
jar = db.open(self._version)
cleanup = Cleanup(jar)
REQUEST[Cleanup]=cleanup
dself=getdraft(self, jar)
ref=getattr(dself.aq_parent.aq_base,dself._refid).aq_base.__of__(dself)
if hasattr(ref, name): return dself, ref, getattr(ref, name)
return getattr(self, name)
def nonempty(self):
try: db=self._p_jar.db()
except:
# BoboPOS 2
return Globals.VersionBase[self._version].nonempty()
else:
# ZODB 3
return not db.versionEmpty(self._version)
security.declareProtected('Approve draft changes',
'manage_approve__draft__')
manage_approve__draft__=Globals.HTMLFile('dtml/draftApprove', globals())
security.declareProtected('Approve draft changes',
'manage_Save__draft__')
def manage_Save__draft__(self, remark, REQUEST=None):
"""Make version changes permanent"""
try: db=self._p_jar.db()
except:
# BoboPOS 2
Globals.VersionBase[self._version].commit(remark)
else:
# ZODB 3
s=self._version
d=self._p_jar.getVersion()
if d==s: d=''
db.commitVersion(s, d)
if REQUEST:
REQUEST['RESPONSE'].redirect(REQUEST['URL2']+'/manage_main')
security.declareProtected('Approve draft changes',
'manage_Discard__draft__')
def manage_Discard__draft__(self, REQUEST=None):
'Discard changes made during the version'
try: db=self._p_jar.db()
except:
# BoboPOS 2
Globals.VersionBase[self._version].abort()
else:
# ZODB 3
db.abortVersion(self._version)
if REQUEST:
REQUEST['RESPONSE'].redirect(REQUEST['URL2']+'/manage_main')
def manage_afterClone(self, item):
self._version=''
def manage_afterAdd(self, item, container):
if not self._version:
self._version=self.absolute_url(1)
def manage_beforeDelete(self, item, container):
if self.nonempty():
raise ValueError, (
'Attempt to %sdelete a non-empty version.'
((self is not item) and 'indirectly ' or ''))
InitializeClass(Draft)
def getdraft(ob, jar):
if hasattr(ob,'aq_parent'):
return getdraft(ob.aq_self, jar).__of__(getdraft(ob.aq_parent, jar))
if hasattr(ob,'_p_oid'): ob=jar[ob._p_oid]
return ob
class Cleanup:
def __init__(self, jar):
self._jar = jar
def __del__(self):
self._jar.close()