From d43168d266d822d4404a4dbd53c9d938aaa1049b Mon Sep 17 00:00:00 2001
From: Nicolas Dumazet <nicolas.dumazet@nexedi.com>
Date: Fri, 19 Feb 2010 04:13:25 +0000
Subject: [PATCH] no need to duplicate len() calculations

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@32820 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5Type/XMLMatrix.py | 31 ++++++++++++++++---------------
 1 file changed, 16 insertions(+), 15 deletions(-)

diff --git a/product/ERP5Type/XMLMatrix.py b/product/ERP5Type/XMLMatrix.py
index d4e12a77d6..ca32e43fbd 100644
--- a/product/ERP5Type/XMLMatrix.py
+++ b/product/ERP5Type/XMLMatrix.py
@@ -345,6 +345,10 @@ class XMLMatrix(Folder):
         LOG('XMLMatrix',0,'return form _setCellRange - no need to change range')
         return
 
+      current_len = len(current_range)
+      new_len = len(kw)
+      len_delta = new_len - current_len
+
       # We must make sure the base_id exists
       # in the event of a matrix creation for example
       if not self.index.has_key(base_id):
@@ -352,11 +356,9 @@ class XMLMatrix(Folder):
         self.index[base_id] = PersistentMapping()
 
       # First, delete all cells which are out of range.
-      size_list = []
-      for place_list in kw:
-        size_list.append(len(place_list))
-      if len(kw) < len(current_range):
-        size_list.extend([1] * (len(current_range) - len(kw)))
+      size_list = map(len, kw)
+      if len_delta < 0:
+        size_list.extend([1] * (-len_delta))
       removed_cell_id_list = []
       cell_id_list = []
       for cell_id in self.getCellIdList(base_id = base_id):
@@ -373,24 +375,23 @@ class XMLMatrix(Folder):
         cell_id_list.remove(cell_id)
 
       # Secondly, rename coordinates. This does not change cell ids.
-      for i in range(max(len(kw), len(current_range))):
-        if i >= len(kw):
+      for i in range(max(new_len, current_len)):
+        if i >= new_len:
           del self.index[base_id][i]
         else:
-          if i >= len(current_range):
+          if i >= current_len:
             self.index[base_id][i] = PersistentMapping()
           for place in self.index[base_id][i].keys():
             if place not in kw[i]:
               del self.index[base_id][i][place]
-          j = 0
-          for place in kw[i]:
+
+          for j, place in enumerate(kw[i]):
             self.index[base_id][i][place] = j
-            j += 1
 
       # Lastly, rename ids and catalog/uncatalog everything.
-      if len(current_range) < len(kw):
+      if len_delta > 0:
         # Need to move, say, base_1_2 -> base_1_2_0
-        appended_id = '_0' * (len(kw) - len(current_range))
+        appended_id = '_0' * len_delta
         for old_id in cell_id_list:
           cell = self.get(old_id)
           if cell is not None:
@@ -402,9 +403,9 @@ class XMLMatrix(Folder):
             cell.isIndexable = ConstantGetter('isIndexable', value=True)
             cell.reindexObject()
             #cell.unindexObject(path='%s/%s' % (self.getUrl(), old_id))
-      elif len(current_range) > len(kw):
+      elif len_delta < 0:
         # Need to move, say, base_1_2_0 -> base_1_2
-        removed_id_len = 2 * (len(current_range) - len(kw))
+        removed_id_len = 2 * (-len_delta)
         for old_id in cell_id_list:
           cell = self.get(old_id)
           if cell is not None:
-- 
2.30.9