diff --git a/product/ERP5Type/Utils.py b/product/ERP5Type/Utils.py index b8caced151f9db473318d104e095dad3ff704563..14719987a79e7f6df2308628e43cb29b8493b87e 100644 --- a/product/ERP5Type/Utils.py +++ b/product/ERP5Type/Utils.py @@ -332,15 +332,24 @@ class DocumentConstructor(Method): def __call__(self, folder, id, REQUEST=None, activate_kw=None, is_indexable=None, **kw): o = self.klass(id) - if activate_kw is not None: - o.setDefaultActivateParameters(**activate_kw) + # Disable implicit indexing, because activate_kw may not be + # set correctly, as setDefaultActivateParameters depends on + # the physical path, until it is connected to an object tree. + o.isIndexable = 0 + folder._setObject(id, o) if is_indexable is not None: o.isIndexable = is_indexable - folder._setObject(id, o) + else: + del o.isIndexable + o = folder._getOb(id) + if activate_kw is not None: + o.setDefaultActivateParameters(**activate_kw) + # Now execute reindexObject explicitly. + o.reindexObject() # if no activity tool, the object has already an uid if getattr(aq_base(o),' uid', None) is None: o.uid = folder.portal_catalog.newUid() - if kw: o.__of__(folder)._edit(force_update=1, **kw) + if kw: o._edit(force_update=1, **kw) if REQUEST is not None: REQUEST['RESPONSE'].redirect( 'manage_main' )