[Zope] manage_pasteObjects in manage_afterAdd raises AttributeError for getPhysicalRoot

Andy McKay andy@agmweb.ca
Tue, 24 Sep 2002 10:15:50 -0700


>   index_obj.addToCollection(container._getOb(self.getId()))

>   self.manage_pasteObjects(context.manage_copyObjects(id)) # raises ERROR
below

Looks like you are calling manage_pasteObjects on self, which is the
index_html object, rather than on the container. You should really be doing
container.addToCollection(..).
--
  Andy McKay
  www.agmweb.ca

----- Original Message -----
From: "Grégoire Weber" <gregoire.weber@switzerland.org>
To: <zope@zope.org>
Sent: Tuesday, September 24, 2002 8:07 AM
Subject: [Zope] manage_pasteObjects in manage_afterAdd raises AttributeError
for getPhysicalRoot


Hi,

below an issue I don't have any idea where the problem lies. Are there some
experts around that could give me some advice? Thanks! The code is for the
redesign of the swiss community site http://www.zope.ch hopefully working
in two weeks. So please, help!

Are there any known issues copy&pasting a freshly added object A to another
folderish object I in the A's manage_afterAdd hook?

Doing Copy&Paste by hand (by GUI) after the object A was added works.

Have a look at the simplified code snippet (Python Product):

def manage_afterAdd(self, item, container):
   """ simplified code called after instanation of object A
       (self) in folder P (container)
   """
   index_obj = getattr(container.aq_base, 'index_html', None)
   if (index_obj is not None) and (index_obj.meta_type == self.meta_type):
       # P has an object I (index_obj) of the same type as A is
       index_obj.addToCollection(container._getOb(self.getId()))

def addToCollection(self, obj):
   """ simplified code in the same class called on index_html object
   """
   container = obj.getParentNode()
   id = obj.getId()

   # this copies object A (obj, just instanated before manage_afterAdd!!!)
   # to object I (self, same as index_obj above)
   self.manage_pasteObjects(context.manage_copyObjects(id)) # raises ERROR
below

Greg

-------------------------------------------------------------------------
Error Type: AttributeError
Error Value: getPhysicalRoot

Traceback (innermost last):
  File D:\prog\ZOPE_T~1\lib\python\ZPublisher\Publish.py, line 150, in
publish_module
  File D:\prog\ZOPE_T~1\lib\python\ZPublisher\Publish.py, line 114, in
publish
  File D:\prog\ZOPE_T~1\lib\python\Zope\__init__.py, line 159, in
zpublisher_exception_hook
    (Object: gregweb)
  File D:\prog\ZOPE_T~1\lib\python\ZPublisher\Publish.py, line 98, in
publish
  File D:\prog\ZOPE_T~1\lib\python\ZPublisher\mapply.py, line 88, in mapply
    (Object: createObject)
  File D:\prog\ZOPE_T~1\lib\python\ZPublisher\Publish.py, line 39, in
call_object
    (Object: createObject)
  File E:\user\greg\data\zope_test\Products\CMFCore\FSPythonScript.py, line
90, in __call__
    (Object: createObject)
  File D:\prog\ZOPE_T~1\lib\python\Shared\DC\Scripts\Bindings.py, line 252,
in __call__
    (Object: createObject)
  File D:\prog\ZOPE_T~1\lib\python\Shared\DC\Scripts\Bindings.py, line 283,
in _bindAndExec
    (Object: createObject)
  File E:\user\greg\data\zope_test\Products\CMFCore\FSPythonScript.py, line
124, in _exec
    (Object: createObject)
    (Info: ({'script': <FSPythonScript instance at 018E4DD0>, 'context':
<PloneFolder instance at 0227A820>, 'container': <CMFSite instance at
0227D278>, 'traverse_subpath': []}, (None, 'Manual Collection'), {}, (None,
None)))
  File Script (Python), line 12, in createObject
  File E:\user\greg\data\zope_test\Products\CMFCore\PortalFolder.py, line
362, in invokeFactory
    (Object: gregweb)
  File E:\user\greg\data\zope_test\Products\CMFCore\TypesTool.py, line 824,
in constructContent
    (Object: portal_types)
  File E:\user\greg\data\zope_test\Products\CMFCore\TypesTool.py, line 513,
in constructInstance
    (Object: Manual Collection)
  File
E:\user\greg\data\zope_test\Products\CMFManualCollection\ManualCollection.py
, line 84, in addManualCollection ##### this is the factory !!!
  File D:\prog\ZOPE_T~1\lib\python\OFS\ObjectManager.py, line 267, in
_setObject
    (Object: gregweb) ##### parent object P (Folder)
  File
E:\user\greg\data\zope_test\Products\CMFManualCollection\ManualCollection.py
, line 270, in manage_afterAdd
    (Object: Manual_Collection.2002-09-24.1731) ##### object A to be copied
(folderish)
  File
E:\user\greg\data\zope_test\Products\CMFManualCollection\ManualCollection.py
, line 675, in addToCollection
    (Object: index_html) ##### target object index_html (the target, also
folderish)
  File D:\prog\zope_test\lib\python\OFS\CopySupport.py, line 144, in
manage_pasteObjects
    (Object: index_html)
AttributeError: (see above)
_____________________________________
Grégoire Weber
mailto:gregoire.weber@switzerland.org


_______________________________________________
Zope maillist  -  Zope@zope.org
http://lists.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists -
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope-dev )