X-Git-Url: https://svn.cri.mines-paristech.fr/git/Plinn.git/blobdiff_plain/b3b52f5b0ad754fd9036f816d0ab8e98a5373f40..2d7deb0c7becf0cb7d78801fd2bcaa3edd5de7c3:/Folder.py

diff --git a/Folder.py b/Folder.py
index 9b3b155..0d395be 100644
--- a/Folder.py
+++ b/Folder.py
@@ -19,8 +19,8 @@
 #######################################################################################
 """ Plinn portal folder implementation
 
-$Id: Folder.py 1539 2009-10-30 13:48:34Z pin $
-$URL: http://svn.cri.ensmp.fr/svn/Plinn/branches/CMF-2.1/Folder.py $
+
+
 """
 
 from OFS.CopySupport import CopyError, eNoData, _cb_decode, eInvalid, eNotFound,\
@@ -35,8 +35,13 @@ from ZODB.POSException import ConflictError
 import OFS.subscribers
 from zope.event import notify
 from zope.lifecycleevent import ObjectCopiedEvent
-from zope.app.container.contained import ObjectMovedEvent
-from zope.app.container.contained import notifyContainerModified
+try :
+	from zope.app.container.contained import notifyContainerModified
+	from zope.app.container.contained import ObjectMovedEvent
+except ImportError :
+	## Zope-2.13 compat
+	from zope.container.contained import notifyContainerModified
+	from zope.container.contained import ObjectMovedEvent
 from OFS.event import ObjectClonedEvent
 from OFS.event import ObjectWillBeMovedEvent
 from zope.component.factory import Factory
@@ -277,164 +282,164 @@ class PlinnFolder(CMFCatalogAware, PortalFolder, DefaultDublinCoreImpl) :
 				self, REQUEST, portal_status_message="Folder added")
 
 	
-	## overload to maintain ownership if authenticated user has 'Manage portal' permission
-	def manage_pasteObjects(self, cb_copy_data=None, REQUEST=None):
-		"""Paste previously copied objects into the current object.
-
-		If calling manage_pasteObjects from python code, pass the result of a
-		previous call to manage_cutObjects or manage_copyObjects as the first
-		argument.
-
-		Also sends IObjectCopiedEvent and IObjectClonedEvent
-		or IObjectWillBeMovedEvent and IObjectMovedEvent.
-		"""
-		if cb_copy_data is not None:
-			cp = cb_copy_data
-		elif REQUEST is not None and REQUEST.has_key('__cp'):
-			cp = REQUEST['__cp']
-		else:
-			cp = None
-		if cp is None:
-			raise CopyError, eNoData
-
-		try:
-			op, mdatas = _cb_decode(cp)
-		except:
-			raise CopyError, eInvalid
-
-		oblist = []
-		app = self.getPhysicalRoot()
-		for mdata in mdatas:
-			m = Moniker.loadMoniker(mdata)
-			try:
-				ob = m.bind(app)
-			except ConflictError:
-				raise
-			except:
-				raise CopyError, eNotFound
-			self._verifyObjectPaste(ob, validate_src=op+1)
-			oblist.append(ob)
-
-		result = []
-		if op == 0:
-			# Copy operation
-			mtool = getToolByName(self, 'portal_membership')
-			utool = getToolByName(self, 'portal_url')
-			portal = utool.getPortalObject()
-			userIsPortalManager = mtool.checkPermission(ManagePortal, portal)
-
-			for ob in oblist:
-				orig_id = ob.getId()
-				if not ob.cb_isCopyable():
-					raise CopyError, eNotSupported % escape(orig_id)
-
-				try:
-					ob._notifyOfCopyTo(self, op=0)
-				except ConflictError:
-					raise
-				except:
-					raise CopyError, MessageDialog(
-						title="Copy Error",
-						message=sys.exc_info()[1],
-						action='manage_main')
-
-				id = self._get_id(orig_id)
-				result.append({'id': orig_id, 'new_id': id})
-
-				orig_ob = ob
-				ob = ob._getCopy(self)
-				ob._setId(id)
-				notify(ObjectCopiedEvent(ob, orig_ob))
-				
-				if not userIsPortalManager :
-					self._setObject(id, ob, suppress_events=True)
-				else :
-					self._setObject(id, ob, suppress_events=True, set_owner=0)
-				ob = self._getOb(id)
-				ob.wl_clearLocks()
-
-				ob._postCopy(self, op=0)
-
-				OFS.subscribers.compatibilityCall('manage_afterClone', ob, ob)
-
-				notify(ObjectClonedEvent(ob))
-
-			if REQUEST is not None:
-				return self.manage_main(self, REQUEST, update_menu=1,
-										cb_dataValid=1)
-
-		elif op == 1:
-			# Move operation
-			for ob in oblist:
-				orig_id = ob.getId()
-				if not ob.cb_isMoveable():
-					raise CopyError, eNotSupported % escape(orig_id)
-
-				try:
-					ob._notifyOfCopyTo(self, op=1)
-				except ConflictError:
-					raise
-				except:
-					raise CopyError, MessageDialog(
-						title="Move Error",
-						message=sys.exc_info()[1],
-						action='manage_main')
-
-				if not sanity_check(self, ob):
-					raise CopyError, "This object cannot be pasted into itself"
-
-				orig_container = aq_parent(aq_inner(ob))
-				if aq_base(orig_container) is aq_base(self):
-					id = orig_id
-				else:
-					id = self._get_id(orig_id)
-				result.append({'id': orig_id, 'new_id': id})
-
-				notify(ObjectWillBeMovedEvent(ob, orig_container, orig_id,
-											  self, id))
-
-				# try to make ownership explicit so that it gets carried
-				# along to the new location if needed.
-				ob.manage_changeOwnershipType(explicit=1)
-
-				try:
-					orig_container._delObject(orig_id, suppress_events=True)
-				except TypeError:
-					orig_container._delObject(orig_id)
-					warnings.warn(
-						"%s._delObject without suppress_events is discouraged."
-						% orig_container.__class__.__name__,
-						DeprecationWarning)
-				ob = aq_base(ob)
-				ob._setId(id)
-
-				try:
-					self._setObject(id, ob, set_owner=0, suppress_events=True)
-				except TypeError:
-					self._setObject(id, ob, set_owner=0)
-					warnings.warn(
-						"%s._setObject without suppress_events is discouraged."
-						% self.__class__.__name__, DeprecationWarning)
-				ob = self._getOb(id)
-
-				notify(ObjectMovedEvent(ob, orig_container, orig_id, self, id))
-				notifyContainerModified(orig_container)
-				if aq_base(orig_container) is not aq_base(self):
-					notifyContainerModified(self)
-
-				ob._postCopy(self, op=1)
-				# try to make ownership implicit if possible
-				ob.manage_changeOwnershipType(explicit=0)
-
-			if REQUEST is not None:
-				REQUEST['RESPONSE'].setCookie('__cp', 'deleted',
-									path='%s' % cookie_path(REQUEST),
-									expires='Wed, 31-Dec-97 23:59:59 GMT')
-				REQUEST['__cp'] = None
-				return self.manage_main(self, REQUEST, update_menu=1,
-										cb_dataValid=0)
-
-		return result
+#   ## overload to maintain ownership if authenticated user has 'Manage portal' permission
+#   def manage_pasteObjects(self, cb_copy_data=None, REQUEST=None):
+#   	"""Paste previously copied objects into the current object.
+#
+#   	If calling manage_pasteObjects from python code, pass the result of a
+#   	previous call to manage_cutObjects or manage_copyObjects as the first
+#   	argument.
+#
+#   	Also sends IObjectCopiedEvent and IObjectClonedEvent
+#   	or IObjectWillBeMovedEvent and IObjectMovedEvent.
+#   	"""
+#   	if cb_copy_data is not None:
+#   		cp = cb_copy_data
+#   	elif REQUEST is not None and REQUEST.has_key('__cp'):
+#   		cp = REQUEST['__cp']
+#   	else:
+#   		cp = None
+#   	if cp is None:
+#   		raise CopyError, eNoData
+#
+#   	try:
+#   		op, mdatas = _cb_decode(cp)
+#   	except:
+#   		raise CopyError, eInvalid
+#
+#   	oblist = []
+#   	app = self.getPhysicalRoot()
+#   	for mdata in mdatas:
+#   		m = Moniker.loadMoniker(mdata)
+#   		try:
+#   			ob = m.bind(app)
+#   		except ConflictError:
+#   			raise
+#   		except:
+#   			raise CopyError, eNotFound
+#   		self._verifyObjectPaste(ob, validate_src=op+1)
+#   		oblist.append(ob)
+#
+#   	result = []
+#   	if op == 0:
+#   		# Copy operation
+#   		mtool = getToolByName(self, 'portal_membership')
+#   		utool = getToolByName(self, 'portal_url')
+#   		portal = utool.getPortalObject()
+#   		userIsPortalManager = mtool.checkPermission(ManagePortal, portal)
+#
+#   		for ob in oblist:
+#   			orig_id = ob.getId()
+#   			if not ob.cb_isCopyable():
+#   				raise CopyError, eNotSupported % escape(orig_id)
+#
+#   			try:
+#   				ob._notifyOfCopyTo(self, op=0)
+#   			except ConflictError:
+#   				raise
+#   			except:
+#   				raise CopyError, MessageDialog(
+#   					title="Copy Error",
+#   					message=sys.exc_info()[1],
+#   					action='manage_main')
+#
+#   			id = self._get_id(orig_id)
+#   			result.append({'id': orig_id, 'new_id': id})
+#
+#   			orig_ob = ob
+#   			ob = ob._getCopy(self)
+#   			ob._setId(id)
+#   			notify(ObjectCopiedEvent(ob, orig_ob))
+#   			
+#   			if not userIsPortalManager :
+#   				self._setObject(id, ob, suppress_events=True)
+#   			else :
+#   				self._setObject(id, ob, suppress_events=True, set_owner=0)
+#   			ob = self._getOb(id)
+#   			ob.wl_clearLocks()
+#
+#   			ob._postCopy(self, op=0)
+#
+#   			OFS.subscribers.compatibilityCall('manage_afterClone', ob, ob)
+#
+#   			notify(ObjectClonedEvent(ob))
+#
+#   		if REQUEST is not None:
+#   			return self.manage_main(self, REQUEST, update_menu=1,
+#   									cb_dataValid=1)
+#
+#   	elif op == 1:
+#   		# Move operation
+#   		for ob in oblist:
+#   			orig_id = ob.getId()
+#   			if not ob.cb_isMoveable():
+#   				raise CopyError, eNotSupported % escape(orig_id)
+#
+#   			try:
+#   				ob._notifyOfCopyTo(self, op=1)
+#   			except ConflictError:
+#   				raise
+#   			except:
+#   				raise CopyError, MessageDialog(
+#   					title="Move Error",
+#   					message=sys.exc_info()[1],
+#   					action='manage_main')
+#
+#   			if not sanity_check(self, ob):
+#   				raise CopyError, "This object cannot be pasted into itself"
+#
+#   			orig_container = aq_parent(aq_inner(ob))
+#   			if aq_base(orig_container) is aq_base(self):
+#   				id = orig_id
+#   			else:
+#   				id = self._get_id(orig_id)
+#   			result.append({'id': orig_id, 'new_id': id})
+#
+#   			notify(ObjectWillBeMovedEvent(ob, orig_container, orig_id,
+#   										  self, id))
+#
+#   			# try to make ownership explicit so that it gets carried
+#   			# along to the new location if needed.
+#   			ob.manage_changeOwnershipType(explicit=1)
+#
+#   			try:
+#   				orig_container._delObject(orig_id, suppress_events=True)
+#   			except TypeError:
+#   				orig_container._delObject(orig_id)
+#   				warnings.warn(
+#   					"%s._delObject without suppress_events is discouraged."
+#   					% orig_container.__class__.__name__,
+#   					DeprecationWarning)
+#   			ob = aq_base(ob)
+#   			ob._setId(id)
+#
+#   			try:
+#   				self._setObject(id, ob, set_owner=0, suppress_events=True)
+#   			except TypeError:
+#   				self._setObject(id, ob, set_owner=0)
+#   				warnings.warn(
+#   					"%s._setObject without suppress_events is discouraged."
+#   					% self.__class__.__name__, DeprecationWarning)
+#   			ob = self._getOb(id)
+#
+#   			notify(ObjectMovedEvent(ob, orig_container, orig_id, self, id))
+#   			notifyContainerModified(orig_container)
+#   			if aq_base(orig_container) is not aq_base(self):
+#   				notifyContainerModified(self)
+#
+#   			ob._postCopy(self, op=1)
+#   			# try to make ownership implicit if possible
+#   			ob.manage_changeOwnershipType(explicit=0)
+#
+#   		if REQUEST is not None:
+#   			REQUEST['RESPONSE'].setCookie('__cp', 'deleted',
+#   								path='%s' % cookie_path(REQUEST),
+#   								expires='Wed, 31-Dec-97 23:59:59 GMT')
+#   			REQUEST['__cp'] = None
+#   			return self.manage_main(self, REQUEST, update_menu=1,
+#   									cb_dataValid=0)
+#
+#   	return result
 
 		
 InitializeClass(PlinnFolder)