Commit 6a67376b authored by 's avatar

- fixed handling of unicode ids

- related cleanup
parent 301616ab
...@@ -501,34 +501,36 @@ class ObjectManager(CopyContainer, ...@@ -501,34 +501,36 @@ class ObjectManager(CopyContainer,
The objects specified in 'ids' get deleted. The objects specified in 'ids' get deleted.
""" """
if type(ids) is type(''): ids=[ids] if isinstance(ids, basestring):
ids = [ids]
if not ids: if not ids:
return MessageDialog(title='No items specified', return MessageDialog(title='No items specified',
message='No items were specified!', message='No items were specified!',
action ='./manage_main',) action='./manage_main',)
try: p=self._reserved_names try:
except: p=() p = self._reserved_names
except:
p = ()
for n in ids: for n in ids:
if n in p: if n in p:
return MessageDialog(title='Not Deletable', return MessageDialog(title='Not Deletable',
message='<EM>%s</EM> cannot be deleted.' % escape(n), message='<EM>%s</EM> cannot be deleted.' % escape(n),
action ='./manage_main',) action='./manage_main',)
while ids: while ids:
id=ids[-1] id = ids[-1]
v=self._getOb(id, self) v = self._getOb(id, self)
if v.wl_isLocked(): if v.wl_isLocked():
raise ResourceLockedError, ( raise ResourceLockedError(
'Object "%s" is locked via WebDAV' % v.getId()) 'Object "%s" is locked via WebDAV' % v.getId())
if v is self: 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) self._delObject(id)
del ids[-1] del ids[-1]
if REQUEST is not None: if REQUEST is not None:
return self.manage_main(self, REQUEST, update_menu=1) return self.manage_main(self, REQUEST, update_menu=1)
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=[]
......
...@@ -6,7 +6,6 @@ from AccessControl.SecurityManagement import noSecurityManager ...@@ -6,7 +6,6 @@ from AccessControl.SecurityManagement import noSecurityManager
from AccessControl.SecurityManager import setSecurityPolicy from AccessControl.SecurityManager import setSecurityPolicy
from AccessControl.SpecialUsers import emergency_user, nobody, system from AccessControl.SpecialUsers import emergency_user, nobody, system
from AccessControl.User import User # before SpecialUsers from AccessControl.User import User # before SpecialUsers
from Acquisition import aq_base
from Acquisition import Implicit from Acquisition import Implicit
from App.config import getConfiguration from App.config import getConfiguration
from logging import getLogger from logging import getLogger
...@@ -303,6 +302,21 @@ class ObjectManagerTests(PlacelessSetup, unittest.TestCase): ...@@ -303,6 +302,21 @@ class ObjectManagerTests(PlacelessSetup, unittest.TestCase):
finally: finally:
logger.disabled = 0 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): def test_hasObject(self):
om = self._makeOne() om = self._makeOne()
self.assertFalse(om.hasObject('_properties')) self.assertFalse(om.hasObject('_properties'))
......
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