[Erp5-report] r17322 - /erp5/trunk/products/ERP5SyncML/XMLSyncUtils.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Oct 31 17:20:47 CET 2007


Author: nicolas
Date: Wed Oct 31 17:20:47 2007
New Revision: 17322

URL: http://svn.erp5.org?rev=17322&view=rev
Log:
Add new method calling at the end of synchronisation session if One Way Sync From Server is used. This method delete not synchronised Objects

Modified:
    erp5/trunk/products/ERP5SyncML/XMLSyncUtils.py

Modified: erp5/trunk/products/ERP5SyncML/XMLSyncUtils.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5SyncML/XMLSyncUtils.py?rev=17322&r1=17321&r2=17322&view=diff
==============================================================================
--- erp5/trunk/products/ERP5SyncML/XMLSyncUtils.py (original)
+++ erp5/trunk/products/ERP5SyncML/XMLSyncUtils.py Wed Oct 31 17:20:47 2007
@@ -797,7 +797,7 @@
           local_gid_list.append(b16encode(gid))
           #LOG('getSyncMLData :', DEBUG,'gid_not_encoded_list:%s, local_gid_list:%s, gid:%s' % (gid_not_encoded_list, local_gid_list, gid))
       else:
-        local_gid_list = map(lambda x: domain.getGidFromObject(x),object_list)
+        local_gid_list = [domain.getGidFromObject(x) for x in object_list]
 
       # Objects to remove
       #LOG('getSyncMLData remove object to remove ...', DEBUG, '')
@@ -1480,6 +1480,21 @@
                                 remote_xml, xml_list, has_status_list,
                                 has_response)
 
+  def deleteRemainObjectList(self, domain, subscriber):
+    """
+    This method allow deletion on not synchronised Objects at the end of Synchronisation session.
+    Usefull only after reseting in One Way Sync
+    """
+    object_list = domain.getObjectList()
+    gid_list = [domain.getGidFromObject(x) for x in object_list]
+    destination = self.unrestrictedTraverse(domain.getDestinationPath())
+    conduit_name = subscriber.getConduit()
+    conduit = self.getConduitByName(conduit_name)
+    for gid in gid_list:
+      if gid not in subscriber.getGidList():
+        object_id = b16decode(gid)
+        conduit.deleteObject(object=destination, object_id=object_id)
+
   def activateSyncModif(self, **kw):
     domain = self.unrestrictedTraverse(kw['domain_relative_url'])
     subscriber = self.unrestrictedTraverse(kw['subscriber_relative_url'])
@@ -1566,6 +1581,8 @@
                   content_type=domain.getSyncContentType())
         has_response = 1
       else:
+        if domain.isOneWayFromServer():
+          self.deleteRemainObjectList(domain, subscriber)
         LOG('this is the end of the synchronisation session !!!', INFO, domain.getId())
         domain.setAuthenticated(False)
     return {'has_response':has_response, 'xml':xml_a}




More information about the Erp5-report mailing list