[Erp5-report] r25471 - /erp5/trunk/products/HBTreeFolder2/HBTreeFolder2.py

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Feb 6 09:59:23 CET 2009


Author: aurel
Date: Fri Feb  6 09:59:21 2009
New Revision: 25471

URL: http://svn.erp5.org?rev=25471&view=rev
Log:
 * when adding object at root of HBTree, register the tree
 * when calling objectIds, it must only returns objects and not BTree of sub-BTree

Modified:
    erp5/trunk/products/HBTreeFolder2/HBTreeFolder2.py

Modified: erp5/trunk/products/HBTreeFolder2/HBTreeFolder2.py
URL: http://svn.erp5.org/erp5/trunk/products/HBTreeFolder2/HBTreeFolder2.py?rev=25471&r1=25470&r2=25471&view=diff
==============================================================================
--- erp5/trunk/products/HBTreeFolder2/HBTreeFolder2.py [utf8] (original)
+++ erp5/trunk/products/HBTreeFolder2/HBTreeFolder2.py [utf8] Fri Feb  6 09:59:21 2009
@@ -32,7 +32,7 @@
 from AccessControl.Permissions import access_contents_information, \
      view_management_screens
 from zLOG import LOG, INFO, ERROR, WARNING
-from Products.ZCatalog.Lazy import LazyMap, LazyFilter, LazyCat
+from Products.ZCatalog.Lazy import LazyMap, LazyFilter, LazyCat, LazyValues
 
 
 manage_addHBTreeFolder2Form = DTMLFile('folderAdd', globals())
@@ -98,7 +98,7 @@
         self._htree = OOBTree()
         self._count = Length()
         self._tree_list = PersistentMapping()
-
+        
     def initBTrees(self):
         """ """
         return self._initBTrees()
@@ -257,7 +257,10 @@
             self._tree_list[tree_id] = None
             
           htree = htree[sub_id]
-        # set object in subtree
+
+        if len(id_list) == 1 and not htree.has_key(None):
+            self._tree_list[None] = None
+        # set object in subtree            
         ob_id = id_list[-1]
         if htree.has_key(id):
             raise KeyError('There is already an item named "%s".' % id)
@@ -385,7 +388,7 @@
           htree = self._htree
           btree_list = [None,]
         else:
-            btree_list = []
+          btree_list = []
         for obj_id in htree.keys():
           obj = htree[obj_id]
           if isinstance(obj, OOBTree):
@@ -419,9 +422,9 @@
         """ return object ids for a given btree
         """
         if base_id is not None:
-          return LazyFilter(self._checkObjectId, self._getTree("%s" %base_id).keys())
-        else:
-          return LazyFilter(self._checkObjectId, self._htree.keys())
+          return LazyValues(LazyFilter(self._checkObjectId, [(base_id, x) for x in self._getTree("%s" %base_id).keys()]))
+        else:
+          return LazyValues(LazyFilter(self._checkObjectId, [(base_id, x) for x in self._htree.keys()]))
 
     def _isNotBTree(self, obj):
         """ test object is not a btree
@@ -431,10 +434,13 @@
         else:
             return True
 
-    def _checkObjectId(self, id):
+    def _checkObjectId(self, ids):
         """ test id is not in btree id list
         """
-        return not self._tree_list.has_key(id)
+        base_id, obj_id = ids
+        if base_id is not None:
+            obj_id = "%s%s%s" %(base_id, H_SEPARATOR, obj_id)
+        return not self._tree_list.has_key(obj_id)
         
     security.declareProtected(access_contents_information,
                               'objectValues')




More information about the Erp5-report mailing list