[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