[Erp5-report] r32820 nicolas.dumazet - /erp5/trunk/products/ERP5Type/XMLMatrix.py

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Feb 19 05:13:27 CET 2010


Author: nicolas.dumazet
Date: Fri Feb 19 05:13:25 2010
New Revision: 32820

URL: http://svn.erp5.org?rev=32820&view=rev
Log:
no need to duplicate len() calculations

Modified:
    erp5/trunk/products/ERP5Type/XMLMatrix.py

Modified: erp5/trunk/products/ERP5Type/XMLMatrix.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/XMLMatrix.py?rev=32820&r1=32819&r2=32820&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/XMLMatrix.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/XMLMatrix.py [utf8] Fri Feb 19 05:13:25 2010
@@ -345,6 +345,10 @@
         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 @@
         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 @@
         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 @@
             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:




More information about the Erp5-report mailing list