Commit d8a09793 authored by 's avatar

Merged fix for recursive calls to acquired manage_after* methods from 2.2

branch
parent 855c1281
...@@ -84,9 +84,9 @@ ...@@ -84,9 +84,9 @@
############################################################################## ##############################################################################
__doc__="""Object Manager __doc__="""Object Manager
$Id: ObjectManager.py,v 1.104 2000/08/07 18:45:56 shane Exp $""" $Id: ObjectManager.py,v 1.105 2000/08/07 19:22:41 brian Exp $"""
__version__='$Revision: 1.104 $'[11:-2] __version__='$Revision: 1.105 $'[11:-2]
import App.Management, Acquisition, Globals, CopySupport, Products import App.Management, Acquisition, Globals, CopySupport, Products
import os, App.FactoryDispatcher, ts_regex, Products import os, App.FactoryDispatcher, ts_regex, Products
...@@ -94,6 +94,7 @@ from Globals import HTMLFile, HTMLFile, Persistent ...@@ -94,6 +94,7 @@ from Globals import HTMLFile, HTMLFile, Persistent
from Globals import MessageDialog, default__class_init__ from Globals import MessageDialog, default__class_init__
from webdav.NullResource import NullResource from webdav.NullResource import NullResource
from webdav.Collection import Collection from webdav.Collection import Collection
from Acquisition import aq_base
from urllib import quote from urllib import quote
from cStringIO import StringIO from cStringIO import StringIO
import marshal import marshal
...@@ -230,8 +231,7 @@ class ObjectManager( ...@@ -230,8 +231,7 @@ class ObjectManager(
if flag == UNIQUE: if flag == UNIQUE:
raise 'Bad Request', \ raise 'Bad Request', \
('The id "%s" is reserved by another object.' % id) ('The id "%s" is reserved by another object.' % id)
base = getattr(self, 'aq_base', self) if hasattr(aq_base(self), id):
if hasattr(base, id):
# The object is located in this ObjectManager. # The object is located in this ObjectManager.
if flag != REPLACEABLE: if flag != REPLACEABLE:
raise 'Bad Request', ('The id "%s" is invalid - ' \ raise 'Bad Request', ('The id "%s" is invalid - ' \
...@@ -246,10 +246,7 @@ class ObjectManager( ...@@ -246,10 +246,7 @@ class ObjectManager(
def _setOb(self, id, object): setattr(self, id, object) def _setOb(self, id, object): setattr(self, id, object)
def _delOb(self, id): delattr(self, id) def _delOb(self, id): delattr(self, id)
def _getOb(self, id, default=_marker): def _getOb(self, id, default=_marker):
if hasattr(self, 'aq_base'): if not hasattr(aq_base(self), id):
base=self.aq_base
else: base=self
if not hasattr(base, id):
if default is _marker: if default is _marker:
raise AttributeError, id raise AttributeError, id
return default return default
...@@ -292,6 +289,7 @@ class ObjectManager( ...@@ -292,6 +289,7 @@ class ObjectManager(
for object in self.objectValues(): for object in self.objectValues():
try: s=object._p_changed try: s=object._p_changed
except: s=0 except: s=0
if hasattr(aq_base(object), 'manage_afterAdd'):
object.manage_afterAdd(item, container) object.manage_afterAdd(item, container)
if s is None: object._p_deactivate() if s is None: object._p_deactivate()
...@@ -299,6 +297,7 @@ class ObjectManager( ...@@ -299,6 +297,7 @@ class ObjectManager(
for object in self.objectValues(): for object in self.objectValues():
try: s=object._p_changed try: s=object._p_changed
except: s=0 except: s=0
if hasattr(aq_base(object), 'manage_afterClone'):
object.manage_afterClone(item) object.manage_afterClone(item)
if s is None: object._p_deactivate() if s is None: object._p_deactivate()
...@@ -307,6 +306,7 @@ class ObjectManager( ...@@ -307,6 +306,7 @@ class ObjectManager(
try: s=object._p_changed try: s=object._p_changed
except: s=0 except: s=0
try: try:
if hasattr(aq_base(object), 'manage_beforeDelete'):
object.manage_beforeDelete(item, container) object.manage_beforeDelete(item, container)
except BeforeDeleteException, ob: except BeforeDeleteException, ob:
raise raise
...@@ -461,9 +461,10 @@ class ObjectManager( ...@@ -461,9 +461,10 @@ class ObjectManager(
def tpValues(self): def tpValues(self):
# Return a list of subobjects, used by tree tag. # Return a list of subobjects, used by tree tag.
r=[] r=[]
if hasattr(self.aq_base,'tree_ids'): if hasattr(aq_base(self), 'tree_ids'):
for id in self.aq_base.tree_ids: for id in self.tree_ids:
if hasattr(self, id): r.append(self._getOb(id)) if hasattr(self, id):
r.append(self._getOb(id))
else: else:
for id in self._objects: for id in self._objects:
o=self._getOb(id['id']) o=self._getOb(id['id'])
...@@ -498,7 +499,6 @@ class ObjectManager( ...@@ -498,7 +499,6 @@ class ObjectManager(
XMLExportImport.exportXML(ob._p_jar, ob._p_oid, f) XMLExportImport.exportXML(ob._p_jar, ob._p_oid, f)
else: else:
ob._p_jar.exportFile(ob._p_oid, f) ob._p_jar.exportFile(ob._p_oid, f)
if RESPONSE is not None: if RESPONSE is not None:
return MessageDialog( return MessageDialog(
title="Object exported", title="Object exported",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment