Commit 0fa3ffd5 authored by Ayush Tiwari's avatar Ayush Tiwari

BusinessTemplate: Maintain consisitency while adding values in modified_object_list

In al the TemplateItem objects, we consider the values being added to modified_object_list
in the format {<object_path>: [List of changed action]}. But, for ObjectTemplateItem we
used to add tuples instead of list. This was not getting tested as we always had cases
where we had old_xml and new_xml similar to each other.
This also explains why some tests were expecting tuples and not lists in this commit:
nexedi/erp5@727477a3

But, fortunately this came to notice after migrating SQL Method objects to behave as
ERP5fied objects.
parent 24277038
...@@ -1073,7 +1073,7 @@ class ObjectTemplateItem(BaseTemplateItem): ...@@ -1073,7 +1073,7 @@ class ObjectTemplateItem(BaseTemplateItem):
if installed_item._objects.has_key(path): if installed_item._objects.has_key(path):
upgrade_list.append((path, installed_item._objects[path])) upgrade_list.append((path, installed_item._objects[path]))
else: # new object else: # new object
modified_object_list[path] = 'New', type_name modified_object_list[path] = ['New', type_name]
# update _p_jar property of objects cleaned by removeProperties # update _p_jar property of objects cleaned by removeProperties
transaction.savepoint(optimistic=True) transaction.savepoint(optimistic=True)
...@@ -1094,15 +1094,15 @@ class ObjectTemplateItem(BaseTemplateItem): ...@@ -1094,15 +1094,15 @@ class ObjectTemplateItem(BaseTemplateItem):
old_io.close() old_io.close()
if new_obj_xml != old_obj_xml: if new_obj_xml != old_obj_xml:
if context.isKeepObject(path): if context.isKeepObject(path):
modified_object_list[path] = 'Modified but should be kept', type_name modified_object_list[path] = ['Modified but should be kept', type_name]
else: else:
modified_object_list[path] = 'Modified', type_name modified_object_list[path] = ['Modified', type_name]
# get removed object # get removed object
for path in set(installed_item._objects) - set(self._objects): for path in set(installed_item._objects) - set(self._objects):
if context.isKeepObject(path): if context.isKeepObject(path):
modified_object_list[path] = 'Removed but should be kept', type_name modified_object_list[path] = ['Removed but should be kept', type_name]
else: else:
modified_object_list[path] = 'Removed', type_name modified_object_list[path] = ['Removed', type_name]
return modified_object_list return modified_object_list
def _backupObject(self, action, trashbin, container_path, object_id, **kw): def _backupObject(self, action, trashbin, container_path, object_id, **kw):
......
...@@ -6857,7 +6857,7 @@ class TestBusinessTemplate(BusinessTemplateMixin): ...@@ -6857,7 +6857,7 @@ class TestBusinessTemplate(BusinessTemplateMixin):
finally: finally:
shutil.rmtree(export_dir) shutil.rmtree(export_dir)
self.assertEqual( self.assertEqual(
{'test_document': ('Removed but should be kept', 'Path')}, {'test_document': ['Removed but should be kept', 'Path']},
new_bt.preinstall()) new_bt.preinstall())
def test_update_business_template_with_template_keep_path_list_catalog_method(self): def test_update_business_template_with_template_keep_path_list_catalog_method(self):
...@@ -6912,7 +6912,7 @@ class TestBusinessTemplate(BusinessTemplateMixin): ...@@ -6912,7 +6912,7 @@ class TestBusinessTemplate(BusinessTemplateMixin):
shutil.rmtree(export_dir) shutil.rmtree(export_dir)
self.assertEqual( self.assertEqual(
{'portal_catalog/erp5_mysql_innodb/z_fake_method': {'portal_catalog/erp5_mysql_innodb/z_fake_method':
('Removed but should be kept', 'CatalogMethod')}, ['Removed but should be kept', 'CatalogMethod']},
new_bt.preinstall()) new_bt.preinstall())
def test_BusinessTemplateWithTest(self): def test_BusinessTemplateWithTest(self):
......
...@@ -1155,4 +1155,4 @@ AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO ...@@ -1155,4 +1155,4 @@ AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
# the PythonScript is recognised as modified # the PythonScript is recognised as modified
result = second_import_template.preinstall() result = second_import_template.preinstall()
self.assertEquals(result.get('portal_skins/%s/%s' % (skin_folder_id, python_script_id)), self.assertEquals(result.get('portal_skins/%s/%s' % (skin_folder_id, python_script_id)),
('Modified', 'Skin')) ['Modified', 'Skin'])
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment