Skip to content

Commit

Permalink
- fixed handling of unicode ids
Browse files Browse the repository at this point in the history
- related cleanup
  • Loading branch information
Unknown committed Jul 20, 2012
1 parent 301616a commit 6a67376
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 12 deletions.
22 changes: 12 additions & 10 deletions src/OFS/ObjectManager.py
Original file line number Diff line number Diff line change
Expand Up @@ -501,34 +501,36 @@ def manage_delObjects(self, ids=[], REQUEST=None):
The objects specified in 'ids' get deleted.
"""
if type(ids) is type(''): ids=[ids]
if isinstance(ids, basestring):
ids = [ids]
if not ids:
return MessageDialog(title='No items specified',
message='No items were specified!',
action ='./manage_main',)
try: p=self._reserved_names
except: p=()
action='./manage_main',)
try:
p = self._reserved_names
except:
p = ()
for n in ids:
if n in p:
return MessageDialog(title='Not Deletable',
message='<EM>%s</EM> cannot be deleted.' % escape(n),
action ='./manage_main',)
action='./manage_main',)
while ids:
id=ids[-1]
v=self._getOb(id, self)
id = ids[-1]
v = self._getOb(id, self)

if v.wl_isLocked():
raise ResourceLockedError, (
raise ResourceLockedError(
'Object "%s" is locked via WebDAV' % v.getId())

if v is self:
raise BadRequest, '%s does not exist' % escape(ids[-1])
raise BadRequest('%s does not exist' % escape(ids[-1]))
self._delObject(id)
del ids[-1]
if REQUEST is not None:
return self.manage_main(self, REQUEST, update_menu=1)


def tpValues(self):
# Return a list of subobjects, used by tree tag.
r=[]
Expand Down
18 changes: 16 additions & 2 deletions src/OFS/tests/testObjectManager.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
from AccessControl.SecurityManager import setSecurityPolicy
from AccessControl.SpecialUsers import emergency_user, nobody, system
from AccessControl.User import User # before SpecialUsers
from Acquisition import aq_base
from Acquisition import Implicit
from App.config import getConfiguration
from logging import getLogger
Expand Down Expand Up @@ -258,7 +257,7 @@ def test_delObject_exception(self):
om._delObject(ob.getId())
finally:
logger.disabled = 0

def test_delObject_exception_debug_manager(self):
# Test exception behavior in manage_beforeDelete in debug mode
# Manager user
Expand Down Expand Up @@ -303,6 +302,21 @@ def test_delObject_exception_debug_deep(self):
finally:
logger.disabled = 0

def test_manage_delObjects(self):
om = self._makeOne()
ob = ItemForDeletion()
om._setObject('stuff', ob)
om.manage_delObjects('stuff')
self.assertFalse('stuff' in om)

om._setObject('stuff', ob)
om.manage_delObjects(['stuff'])
self.assertFalse('stuff' in om)

om._setObject('stuff', ob)
om.manage_delObjects(u'stuff')
self.assertFalse('stuff' in om)

def test_hasObject(self):
om = self._makeOne()
self.assertFalse(om.hasObject('_properties'))
Expand Down

0 comments on commit 6a67376

Please sign in to comment.