[Erp5-report] r14257 - in /erp5/trunk/products/ERP5SyncML: ./ Conduit/

nobody at svn.erp5.org nobody at svn.erp5.org
Thu Apr 26 21:24:33 CEST 2007


Author: seb
Date: Thu Apr 26 21:24:28 2007
New Revision: 14257

URL: http://svn.erp5.org?rev=14257&view=rev
Log:
quick hack in order to get directly the object from addNode, this save a lot of time because we do not need to parse all object any more, but the patch is dirty and must be reviewed

Modified:
    erp5/trunk/products/ERP5SyncML/Conduit/ERP5Conduit.py
    erp5/trunk/products/ERP5SyncML/Subscription.py
    erp5/trunk/products/ERP5SyncML/SynchronizationTool.py
    erp5/trunk/products/ERP5SyncML/XMLSyncUtils.py

Modified: erp5/trunk/products/ERP5SyncML/Conduit/ERP5Conduit.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5SyncML/Conduit/ERP5Conduit.py?rev=14257&r1=14256&r2=14257&view=diff
==============================================================================
--- erp5/trunk/products/ERP5SyncML/Conduit/ERP5Conduit.py (original)
+++ erp5/trunk/products/ERP5SyncML/Conduit/ERP5Conduit.py Thu Apr 26 21:24:28 2007
@@ -125,6 +125,7 @@
     [object.getPath(),keyword,local_and_actual_value,subscriber_value]
     """
     conflict_list = []
+    sub_object = None
     xml = self.convertToXml(xml)
     LOG('addNode',0,'xml_reconstitued: %s' % str(xml))
     # In the case where this new node is a object to add
@@ -139,7 +140,7 @@
           xml = self.getElementFromXupdate(element)
           conflict_list += self.addNode(xml=xml,object=object,
                           previous_xml=previous_xml, force=force,
-                          simulate=simulate, **kw)
+                          simulate=simulate, **kw)['conflict_list']
     elif xml.nodeName == 'object':
       if object_id is None:
         object_id = self.getAttribute(xml,'id')
@@ -147,17 +148,17 @@
       LOG('addNode',0,'object_id: %s' % object_id)
       if object_id is not None:
         try:
-          subobject = object._getOb(object_id)
+          sub_object = object._getOb(object_id)
         except (AttributeError, KeyError, TypeError):
-          subobject = None
-        if subobject is None: # If so, it doesn't exist
+          sub_object = None
+        if sub_object is None: # If so, it doesn't exist
           portal_type = ''
           if xml.nodeName == 'object':
             portal_type = self.getObjectType(xml)
           elif xml.nodeName in self.XUPDATE_INSERT_OR_ADD: # Deprecated ???
             portal_type = self.getXupdateObjectType(xml) # Deprecated ???
-          subobject = self.constructContent(object, object_id, docid, portal_type)
-        self.newObject(object=subobject,xml=xml,simulate=simulate)
+          sub_object = self.constructContent(object, object_id, docid, portal_type)
+        self.newObject(object=sub_object,xml=xml,simulate=simulate)
     elif xml.nodeName in self.XUPDATE_INSERT_OR_ADD \
          and self.getSubObjectDepth(xml)>=1:
       sub_object_id = self.getSubObjectId(xml)
@@ -182,7 +183,7 @@
             # Then do the udpate
             conflict_list += self.addNode(xml=sub_xml,object=sub_object,
                             previous_xml=sub_previous_xml, force=force,
-                            simulate=simulate, **kw)
+                            simulate=simulate, **kw)['conflict_list']
     elif xml.nodeName == self.history_tag or self.isHistoryAdd(xml)>0:
       conflict_list += self.addWorkflowNode(object, xml, simulate)
     #elif xml.nodeName in self.local_role_list or self.isLocalRole(xml)>0 and not simulate:
@@ -193,7 +194,8 @@
     else:
       conflict_list += self.updateNode(xml=xml,object=object, force=force,
                                        simulate=simulate,  **kw)
-    return conflict_list
+    # We must returns the object created
+    return {'conflict_list':conflict_list, 'object': sub_object}
 
   security.declareProtected(Permissions.ModifyPortalContent, 'deleteNode')
   def deleteNode(self, xml=None, object=None, object_id=None, force=None,
@@ -359,12 +361,12 @@
           # This is the case where we have to call addNode
           LOG('updateNode',0,'we will add sub-object')
           conflict_list += self.addNode(xml=subnode,object=object,force=force,
-                                        simulate=simulate, **kw)
+                                        simulate=simulate, **kw)['conflict_list']
         elif keyword == self.history_tag and not simulate:
           # This is the case where we have to call addNode
           LOG('updateNode',0,'we will add history')
           conflict_list += self.addNode(xml=subnode,object=object,force=force,
-                                        simulate=simulate,**kw)
+                                        simulate=simulate,**kw)['conflict_list']
         elif keyword in (self.local_role_tag,self.local_permission_tag) and not simulate:
           # This is the case where we have to update Roles or update permission
           LOG('updateNode',0,'we will add a local role')
@@ -373,7 +375,7 @@
           #object.manage_setLocalRoles(user,roles)
           xml = self.getElementFromXupdate(xml)
           conflict_list += self.addNode(xml=xml,object=object,force=force,
-                                        simulate=simulate,**kw)
+                                        simulate=simulate,**kw)['conflict_list']
       elif self.isSubObjectModification(xml):
         # We should find the object corresponding to
         # this update, so we have to look in the previous_xml
@@ -902,7 +904,7 @@
       selection_name = ''
       if subnode.nodeName in self.XUPDATE_INSERT_OR_ADD:
         conflict_list += conduit.addNode(xml=sub_xupdate,object=object, \
-                                         force=force, simulate=simulate, **kw)
+                                         force=force, simulate=simulate, **kw)['conflict_list']
       elif subnode.nodeName in self.XUPDATE_DEL:
         conflict_list += conduit.deleteNode(xml=sub_xupdate, object=object, \
                                          force=force, simulate=simulate, **kw)

Modified: erp5/trunk/products/ERP5SyncML/Subscription.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5SyncML/Subscription.py?rev=14257&r1=14256&r2=14257&view=diff
==============================================================================
--- erp5/trunk/products/ERP5SyncML/Subscription.py (original)
+++ erp5/trunk/products/ERP5SyncML/Subscription.py Thu Apr 26 21:24:28 2007
@@ -512,6 +512,9 @@
     Return the actual action for a partial synchronization
     """
     LOG('setConflictList, list',0,conflict_list)
+    for conflict in conflict_list:
+      if isinstance(conflict,str):
+        import pdb; pdb.set_trace()
     if conflict_list is None or conflict_list==[]:
       self.resetConflictList()
     else:

Modified: erp5/trunk/products/ERP5SyncML/SynchronizationTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5SyncML/SynchronizationTool.py?rev=14257&r1=14256&r2=14257&view=diff
==============================================================================
--- erp5/trunk/products/ERP5SyncML/SynchronizationTool.py (original)
+++ erp5/trunk/products/ERP5SyncML/SynchronizationTool.py Thu Apr 26 21:24:28 2007
@@ -385,7 +385,10 @@
             conflict_list += [conflict.__of__(subscriber)]
     for subscription in self.getSubscriptionList():
       sub_conflict_list = subscription.getConflictList()
+      LOG('SynchronizationTool.getConflictList, sub_conflict_list',0,sub_conflict_list)
       for conflict in sub_conflict_list:
+        if isinstance(conflict,str):
+          import pdb; pdb.set_trace()
         #conflict.setDomain('Subscription')
         conflict.setSubscriber(subscription)
         #conflict.setDomainId(subscription.getId())

Modified: erp5/trunk/products/ERP5SyncML/XMLSyncUtils.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5SyncML/XMLSyncUtils.py?rev=14257&r1=14256&r2=14257&view=diff
==============================================================================
--- erp5/trunk/products/ERP5SyncML/XMLSyncUtils.py (original)
+++ erp5/trunk/products/ERP5SyncML/XMLSyncUtils.py Thu Apr 26 21:24:28 2007
@@ -772,9 +772,12 @@
           if object is None:
             object_id = domain.generateNewIdWithGenerator(object=destination_path,gid=object_gid)
             #if object_id is not None:
-            conflict_list += conduit.addNode(xml=data_subnode, object=destination_path,
+            add_data = conduit.addNode(xml=data_subnode, object=destination_path,
                                              object_id=object_id)
-            object = domain.getObjectFromGid(object_gid)
+            conflict_list += add_data['conflict_list']
+            # Retrieve directly the object from addNode
+            object = add_data['object']
+            LOG('XMLSyncUtils, in ADD add_data',0,add_data)
             signature.setPath(object.getPhysicalPath())
             LOG('applyActionList',0,'object after add: %s' % repr(object))
           if object is not None:




More information about the Erp5-report mailing list