From e965b406348caef5cd4a1dfad54962b88ef41d44 Mon Sep 17 00:00:00 2001 From: Sebastien Robin <seb@nexedi.com> Date: Sun, 22 Jul 2007 18:49:39 +0000 Subject: [PATCH] make sure that it still works when some objects are arleady there git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@15271 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5SyncML/Conduit/BaobabConduit.py | 46 ++++++++++++++++----- 1 file changed, 35 insertions(+), 11 deletions(-) diff --git a/product/ERP5SyncML/Conduit/BaobabConduit.py b/product/ERP5SyncML/Conduit/BaobabConduit.py index 89316a7a1b..8f461ea127 100644 --- a/product/ERP5SyncML/Conduit/BaobabConduit.py +++ b/product/ERP5SyncML/Conduit/BaobabConduit.py @@ -287,8 +287,17 @@ class BaobabConduit(ERP5Conduit): parent_object_path = erp5_site_path + path try: # Get the object with the path - parent_object = object.restrictedTraverse(parent_object_path) + parent_object_path_list = parent_object_path.split('/') + root = getattr(object, parent_object_path_list[0]) + parent_object = root + for subpath in parent_object_path_list[1:]: + parent_object = getattr(aq_base(parent_object), subpath, None) + if parent_object is None: + break if parent_object is not None: + # call restrictedTraverse to make sure to get object + # with acquisition, wich is required for creating sub object + parent_object = object.restrictedTraverse(parent_object_path) break except ConflictError: raise @@ -322,10 +331,11 @@ class BaobabConduit(ERP5Conduit): subobject.setCareerRole('client') # We first try to get the organisation corresponding organisation_id = 'site_%s' % object_id[:3] - organisation = person_module_object.portal_catalog( - portal_type='Organisation', - id=organisation_id - )[0].getObject() + organisation = organisation_module_object._getOb(organisation_id) + #organisation = person_module_object.portal_catalog( + # portal_type='Organisation', + # id=organisation_id + # )[0].getObject() subobject._setCareerSubordinationValue(organisation) else: # This is an organisation object @@ -370,9 +380,14 @@ class BaobabConduit(ERP5Conduit): # Get the person or organisation thanks to the portal_type dest = findObjectFromSpecialPortalType(portal_type,object_id=object_id) if dest == None: return None - subobject = dest.newContent( portal_type = 'Agent' - , id = object_id - ) + try: + subobject = dest._getOb(object_id) + except (AttributeError, KeyError, TypeError): + subobject = None + if subobject is None: + subobject = dest.newContent( portal_type = 'Agent' + , id = object_id + ) # try to get the agent in the person module person = findObjectFromSpecialPortalType('Person_' + object_id) if person == None: @@ -386,9 +401,14 @@ class BaobabConduit(ERP5Conduit): # Get the person or organisation thanks to the portal_type dest = findObjectFromSpecialPortalType(portal_type) if dest == None: return None - subobject = dest.newContent( portal_type = 'Agent Privilege' - , id = object_id - ) + try: + subobject = dest._getOb(object_id) + except (AttributeError, KeyError, TypeError): + subobject = None + if subobject is None: + subobject = dest.newContent( portal_type = 'Agent Privilege' + , id = object_id + ) ### handle inventory objects elif portal_type == 'Cash Inventory': @@ -595,9 +615,11 @@ class BaobabConduit(ERP5Conduit): # we should get only 1 bank account bank_account_list = [x.getObject() for x in object.portal_catalog( portal_type=('Bank Account'), + string_index=bank_account_number, )] # Make sure we have found the right bank account for bank_account in bank_account_list: + LOG('BaobabConduit editDocument account number',0, (bank_account.getInternalBankAccountNumber(), bank_account_number)) if bank_account.getInternalBankAccountNumber() == bank_account_number: bank_account_object = bank_account break @@ -808,6 +830,8 @@ class BaobabConduit(ERP5Conduit): def editMandataireNom(self, document, value): # Convert mandataire_nom to first_name + LOG('BaobabConduit.editMandataireNom, document', 0, document) + LOG('BaobabConduit.editMandataireNom, document.getAgentValue()', 0, document.getAgentValue()) old_value = document.getAgentValue().getFirstName() new_value = value if old_value != new_value: -- 2.30.9