From 6905aa33402bd93a6260e7f0b8f548dd642398b3 Mon Sep 17 00:00:00 2001
From: Julien Muchembled <jm@nexedi.com>
Date: Sun, 15 Sep 2013 16:12:22 +0200
Subject: [PATCH] HBTreeFolder2: implement slicing of object{Ids,Items,Values}
 results

This is required for ERP5Site_checkDataWithScript script (erp5_core BT).
---
 product/HBTreeFolder2/HBTreeFolder2.py | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/product/HBTreeFolder2/HBTreeFolder2.py b/product/HBTreeFolder2/HBTreeFolder2.py
index 3b7d91a5cd..3ce2b7e8d3 100644
--- a/product/HBTreeFolder2/HBTreeFolder2.py
+++ b/product/HBTreeFolder2/HBTreeFolder2.py
@@ -97,6 +97,8 @@ class HBTreeObjectIds(object):
         return self._keys()
 
     def __getitem__(self, item):
+        if isinstance(item, slice):
+            return map(self.__getitem__, xrange(*item.indices(self._count())))
         if item < 0:
             item += self._count()
         i = self._index
@@ -119,6 +121,8 @@ class HBTreeObjectItems(HBTreeObjectIds):
         return ((x, getOb(x)) for x in self._keys())
 
     def __getitem__(self, item):
+        if isinstance(item, slice):
+            return map(self.__getitem__, xrange(*item.indices(self._count())))
         object_id = HBTreeObjectIds.__getitem__(self, item)
         return object_id, self._tree._getOb(object_id)
 ContainerAssertions[HBTreeObjectItems] = 1
@@ -130,6 +134,8 @@ class HBTreeObjectValues(HBTreeObjectIds):
         return (getOb(x) for x in self._keys())
 
     def __getitem__(self, item):
+        if isinstance(item, slice):
+            return map(self.__getitem__, xrange(*item.indices(self._count())))
         return self._tree._getOb(HBTreeObjectIds.__getitem__(self, item))
 ContainerAssertions[HBTreeObjectValues] = 1
 
-- 
2.30.9