From e241bacbc3cb26cdc54b96e646994b068e600572 Mon Sep 17 00:00:00 2001
From: Kevin Deldycke <kevin@nexedi.com>
Date: Thu, 17 Jun 2004 13:14:26 +0000
Subject: [PATCH] Creation of the addLocalRoleNode() independant function to
 handle the local roles processing.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@1031 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5SyncML/Conduit/ERP5Conduit.py | 32 +++++++++++++++--------
 1 file changed, 21 insertions(+), 11 deletions(-)

diff --git a/product/ERP5SyncML/Conduit/ERP5Conduit.py b/product/ERP5SyncML/Conduit/ERP5Conduit.py
index 4751d61c70..ae2dc5955b 100755
--- a/product/ERP5SyncML/Conduit/ERP5Conduit.py
+++ b/product/ERP5SyncML/Conduit/ERP5Conduit.py
@@ -183,17 +183,7 @@ class ERP5Conduit(XMLSyncUtilsMixin):
       conflict_list += self.addWorkflowNode(object, xml, simulate)
     #elif xml.nodeName in self.local_role_list or self.isLocalRole(xml)>0 and not simulate:
     elif xml.nodeName in self.local_role_list:
-      # We want to add a local role
-      roles = self.convertXmlValue(xml.childNodes[0].data,data_type='tokens')
-      user = self.getAttribute(xml,'id')
-      roles = list(roles) # Needed for CPS, or we have a CPS error
-      LOG('local_role: ',0,'user: %s roles: %s' % (repr(user),repr(roles)))
-      #user = roles[0]
-      #roles = roles[1:]
-      if xml.nodeName.find(self.local_role_tag)>=0:
-        object.manage_setLocalRoles(user,roles)
-      elif xml.nodeName.find(self.local_group_tag)>=0:
-        object.manage_setLocalGroupRoles(user,roles)
+      conflict_list += self.addLocalRoleNode(object, xml)        
     else:
       conflict_list += self.updateNode(xml=xml,object=object, force=force,
                                        simulate=simulate,  **kw)
@@ -1004,6 +994,26 @@ class ERP5Conduit(XMLSyncUtilsMixin):
     #else:
     #  return wf_conflict_list
     return conflict_list
+          
+  security.declareProtected(Permissions.ModifyPortalContent, 'addLocalRoleNode')
+  def addLocalRoleNode(self, object, xml):
+    """
+    This allows to specify how to handle the local role informations.
+    This is really usefull if you want to write your own Conduit.
+    """      
+    conflict_list = []      
+    # We want to add a local role
+    roles = self.convertXmlValue(xml.childNodes[0].data,data_type='tokens')
+    user = self.getAttribute(xml,'id')
+    roles = list(roles) # Needed for CPS, or we have a CPS error
+    LOG('local_role: ',0,'user: %s roles: %s' % (repr(user),repr(roles)))
+    #user = roles[0]
+    #roles = roles[1:]
+    if xml.nodeName.find(self.local_role_tag)>=0:
+      object.manage_setLocalRoles(user,roles)
+    elif xml.nodeName.find(self.local_group_tag)>=0:
+      object.manage_setLocalGroupRoles(user,roles)
+    return conflict_list
 
   security.declareProtected(Permissions.ModifyPortalContent, 'editDocument')
   def editDocument(self, object=None, **kw):
-- 
2.30.9