diff --git a/product/ERP5/Tool/TemplateTool.py b/product/ERP5/Tool/TemplateTool.py index d796e5fec22b004c44b0c2075ba6171c470db480..2f6ec7c2b81ba566b4b6ddee8947b56b1e2aa6b4 100644 --- a/product/ERP5/Tool/TemplateTool.py +++ b/product/ERP5/Tool/TemplateTool.py @@ -2052,14 +2052,12 @@ class TemplateTool (BaseTool): installation_process._setObject(new_id, aq_base(item), suppress_events=True) - error_list = self.compareOldStateToOFS(installation_process, old_installation_state) + change_list = self.compareOldStateToOFS(installation_process, old_installation_state) - # Change status of all BM installed - for bm in bm_list: - bm.setStatus('installed') + if change_list: + change_list = [(l[0].item_path, l[1]) for l in change_list] - if error_list: - raise ValueError(' '.join(error_list)) + return change_list installMultipleBusinessManager = updateInstallationState @@ -2160,7 +2158,9 @@ class TemplateTool (BaseTool): to_update_path_list = installation_process.getPathList() portal = self.getPortalObject() - error_list = [] + # List to store what changes will be done to which path. Here we compare + # with all the states (old version, new version and state of object at ZODB) + change_list = [] to_update_path_list = self.sortPathList(to_update_path_list) @@ -2212,14 +2212,14 @@ class TemplateTool (BaseTool): if new_item.getProperty('item_sha') == obj_sha: if int(new_item.getProperty('item_sign')) == -1: # If the sign is negative, remove the value from the path - new_item.install(installation_process) + change_list.append((new_item, 'Removing')) else: # If same hash, and +1 sign, do nothing continue else: # Install the new_item - new_item.install(installation_process) + change_list.append((new_item, 'Adding')) else: # Change at ZODB, so get the new item @@ -2231,8 +2231,8 @@ class TemplateTool (BaseTool): continue else: - # Raise error - error_list.append('Trying to remove changes at ZODB at %s' % path) + # Trying to update change at ZODB + change_list.append((new_item, 'Updating')) else: # Object created at ZODB by the user @@ -2244,8 +2244,8 @@ class TemplateTool (BaseTool): continue else: - # Raise error - error_list.append('Trying to remove changes at ZODB at %s' % path) + # Trying to update change at ZODB + change_list.append((new_item, 'Updating')) except (AttributeError, KeyError) as e: # Get item at old state @@ -2259,7 +2259,8 @@ class TemplateTool (BaseTool): # Check sign of new_item if int(new_item.getProperty('item_sign')) == 1: - error_list.append('Object at %s removed by user' % path) + # Object at ZODB has been removed by the user + change_item.append((new_item, 'Adding')) else: # If there is no item at old state, install the new_item @@ -2272,9 +2273,10 @@ class TemplateTool (BaseTool): value = new_item.objectValues()[0] except IndexError: continue - new_item.install(installation_process) + # Installing a new item + change_list.append((new_item, 'Adding')) - return error_list + return change_list def getInstalledBusinessManagerList(self): bm_list = self.objectValues(portal_type='Business Manager')