From 41178d3741b43444b663ac3244d8bfbcd7eb5483 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aur=C3=A9lien=20Calonne?= <aurel@nexedi.com>
Date: Thu, 17 Nov 2005 16:47:34 +0000
Subject: [PATCH] add diff for document, property sheet, extension, and test

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@4350 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5/Tool/TemplateTool.py | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/product/ERP5/Tool/TemplateTool.py b/product/ERP5/Tool/TemplateTool.py
index 2969e094ba..39dee002c7 100755
--- a/product/ERP5/Tool/TemplateTool.py
+++ b/product/ERP5/Tool/TemplateTool.py
@@ -362,6 +362,7 @@ class TemplateTool (BaseTool):
         bt2.edit(description='tmp bt generated for diff')
         
       # separate item because somes are exported with zope exportXML and other with our own method
+      # and others are just python code on filesystem
       diff_msg = 'Diff between %s-%s and %s-%s' %(bt1.getTitle(), bt1.getId(), bt2.getTitle(), bt2.getId())
       # for the one with zope exportXml
       item_list_1 = ['_product_item', '_workflow_item', '_portal_type_item', '_category_item', '_path_item', '_skin_item', '_action_item']
@@ -407,6 +408,25 @@ class TemplateTool (BaseTool):
             if len(diff_list) != 0:
               diff_msg += '\n\nObject %s diff :\n' %(key)
               diff_msg += '\n'.join(diff_list)
+
+      # for document located on filesystem
+      item_list_3 = ['_document_item', '_property_sheet_item', '_extension_item', '_test_item']
+      for item_name  in item_list_3:
+        item1 = getattr(bt1, item_name)        
+        # build current item if we compare to installed bt
+        if compare_to_installed:
+          getattr(bt2, item_name).build(bt2)
+        item2 = getattr(bt2, item_name)
+        for key in  item1._objects.keys():
+          if item2._objects.has_key(key):
+            obj1_code = item1._objects[key]
+            obj2_code = item2._objects[key]
+            ob1_lines = obj1_code.splitlines()
+            ob2_lines = obj2_code.splitlines()
+            diff_list = list(unified_diff(ob1_lines, ob2_lines, fromfile=bt1.getId(), tofile=bt2.getId(), lineterm=''))
+            if len(diff_list) != 0:
+              diff_msg += '\n\nObject %s diff :\n' %(key)
+              diff_msg += '\n'.join(diff_list)
               
       if compare_to_installed:
         self.manage_delObjects(ids=['installed_bt'])
-- 
2.30.9