src/pyams_file/thumbnail.py
changeset 114 06e85cf61575
parent 104 49e132e15bbc
child 117 2d6c635c323f
--- a/src/pyams_file/thumbnail.py	Mon Jul 02 17:07:25 2018 +0200
+++ b/src/pyams_file/thumbnail.py	Mon Jul 02 17:07:48 2018 +0200
@@ -23,6 +23,7 @@
 from zope.traversing.interfaces import ITraversable
 
 # import packages
+from BTrees import OOBTree
 from persistent.dict import PersistentDict
 from pyams_file.file import FileFactory
 from pyams_file.zmi.image import render_image
@@ -50,7 +51,7 @@
 
     def __init__(self, image):
         self.image = image
-        self.thumbnails = get_annotation_adapter(image, THUMBNAIL_ANNOTATIONS_KEY, PersistentDict,
+        self.thumbnails = get_annotation_adapter(image, THUMBNAIL_ANNOTATIONS_KEY, OOBTree.OOBTree,
                                                  notify=False, locate=False)
 
     def get_image_size(self):
@@ -104,15 +105,15 @@
         geometries = get_annotation_adapter(self.image, THUMBNAIL_GEOMETRY_KEY, PersistentDict,
                                             notify=False, locate=False)
         geometries[selection_name] = geometry
-        for current_thumbnail_name in self.thumbnails.copy():
+        for current_thumbnail_name in list(self.thumbnails.keys()):
             if (current_thumbnail_name == selection_name) or \
-               current_thumbnail_name.startswith(selection_name + ':'):
+               current_thumbnail_name.startswith('{0}:'.format(selection_name)):
                 self.delete_thumbnail(current_thumbnail_name)
 
     def clear_geometries(self):
         geometries = get_annotation_adapter(self.image, THUMBNAIL_GEOMETRY_KEY)
         if geometries is not None:
-            for geometry_name in geometries.copy():
+            for geometry_name in list(geometries.keys()):
                 del geometries[geometry_name]
 
     def get_thumbnail_name(self, thumbnail_name, with_size=False):
@@ -211,7 +212,7 @@
             del self.thumbnails[thumbnail_name]
 
     def clear_thumbnails(self):
-        [self.delete_thumbnail(thumbnail_name) for thumbnail_name in self.thumbnails.copy()]
+        [self.delete_thumbnail(thumbnail_name) for thumbnail_name in list(self.thumbnails.keys())]
 
 
 @subscriber(IFileModifiedEvent, context_selector=IImage)