[Erp5-report] r10880 - in /erp5/trunk/products/ERP5Type: Document/ tests/

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Oct 23 14:04:35 CEST 2006


Author: aurel
Date: Mon Oct 23 14:04:34 2006
New Revision: 10880

URL: http://svn.erp5.org?rev=10880&view=rev
Log:
allow to specify temp_object parameter to newContent in order to
generate temporary object
add unit test for this

Modified:
    erp5/trunk/products/ERP5Type/Document/Folder.py
    erp5/trunk/products/ERP5Type/tests/testERP5Type.py

Modified: erp5/trunk/products/ERP5Type/Document/Folder.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Document/Folder.py?rev=10880&r1=10879&r2=10880&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Document/Folder.py (original)
+++ erp5/trunk/products/ERP5Type/Document/Folder.py Mon Oct 23 14:04:34 2006
@@ -70,7 +70,7 @@
   def newContent(self, id=None, portal_type=None, id_group=None,
           default=None, method=None, immediate_reindex=0,
           container=None, created_by_builder=0, activate_kw=None,
-          is_indexable=None, **kw):
+          is_indexable=None, temp_object=0, **kw):
     """Creates a new content.
     This method is public, since TypeInformation.constructInstance will perform
     the security check.
@@ -86,6 +86,17 @@
       # XXX This feature is very confusing 
       # And made the code more difficult to update
       portal_type = container.allowedContentTypes()[0].id
+
+    if temp_object:
+      from Products.ERP5Type import Document
+      # we get an object from factory only for first temp container object
+      # otherwise we get an id so we can use the classic way
+      if not hasattr(container, 'isTempObject') or \
+             (hasattr(container, 'isTempObject') and not container.isTempObject()):
+        factory_name = 'newTemp%s' %(portal_type.replace(' ', ''))
+        m = getattr(Document, factory_name)
+        return m(container, new_id)
+
     self.portal_types.constructContent(type_name=portal_type,
                                        container=container,
                                        id=new_id,

Modified: erp5/trunk/products/ERP5Type/tests/testERP5Type.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/testERP5Type.py?rev=10880&r1=10879&r2=10880&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/testERP5Type.py (original)
+++ erp5/trunk/products/ERP5Type/tests/testERP5Type.py Mon Oct 23 14:04:34 2006
@@ -225,8 +225,22 @@
       self.assertEquals(o.isTempObject(), 1)
 
       # Create a subobject and make sure it is a Temp Object
-      a = o.newContent(portal_type = 'Telephone')
+      a = o.newContent(portal_type = 'Telephone')      
       self.assertEquals(a.isTempObject(), 1)
+
+      # Test newContent with the temp_object parameter
+      o = portal.person_module.newContent(id=987, portal_type="Person", temp_object=1)
+      o.setTitle('bar')
+      self.assertEquals(o.getTitle(), 'bar')
+      self.assertEquals(str(o.getId()), str(987))
+      self.assertEquals(o.isTempObject(), 1)
+      a = o.newContent(id=1, portal_type="Telephone", temp_object=1)
+      self.assertEquals(str(a.getId()), str(1))
+      self.assertEquals(a.isTempObject(), 1)
+      b = o.newContent(id=2, portal_type="Telephone")
+      self.assertEquals(b.isTempObject(), 1)
+      self.assertEquals(b.getId(), str(2))
+      
 
     def test_04_CategoryAccessors(self, quiet=quiet, run=run_all_test):
       """




More information about the Erp5-report mailing list