[Zope-Checkins] CVS: Zope/utilities/ZODBTools - zodbload.py:1.2.2.5

Jim Fulton jim at zope.com
Tue Oct 14 09:45:40 EDT 2003


Update of /cvs-repository/Zope/utilities/ZODBTools
In directory cvs.zope.org:/tmp/cvs-serv13703

Modified Files:
      Tag: Zope-2_7-branch
	zodbload.py 
Log Message:
Added a "max" option to index to limit the size of folders.  This is
used in a insertion test to avoid excessive folder sizes.


=== Zope/utilities/ZODBTools/zodbload.py 1.2.2.4 => 1.2.2.5 ===
--- Zope/utilities/ZODBTools/zodbload.py:1.2.2.4	Fri Oct  3 13:02:31 2003
+++ Zope/utilities/ZODBTools/zodbload.py	Tue Oct 14 09:45:39 2003
@@ -325,10 +325,20 @@
                 run1(tid, Zope.DB, factory, job, args)
 
 
-def index(connection, messages, catalog):
+def index(connection, messages, catalog, max):
     app = connection.root()['Application']
     for message in messages:
         mail = mailfolder(app, message.mbox, message.number)
+
+        if max:
+            # Cheat and use folder implementation secrets
+            # to avoid having to read the old data
+            _objects = mail._objects
+            if len(_objects) >= max:
+                for d in _objects[:len(_objects)-max+1]:
+                    del mail.__dict__[d['id']]
+                mail._objects = _objects[len(_objects)-max+1:]
+            
         docid = 'm'+str(message.number)
         mail.manage_addDTMLDocument(docid, file=message.body)
 
@@ -364,13 +374,13 @@
     catalog = 1
     prefix = 'index'
 
-    def __init__(self, mbox, number=1):
+    def __init__(self, mbox, number=1, max=0):
         self.__name__ = "%s%s_%s" % (self.prefix, number, mbox.__name__)
-        self.mbox, self.number = mbox, int(number)
+        self.mbox, self.number, self.max = mbox, int(number), int(max)
 
     def create(self):
         messages = [self.mbox.next() for i in range(self.number)]
-        return index, (messages, self.catalog)
+        return index, (messages, self.catalog, self.max)
 
 
 class InsertJob(IndexJob):




More information about the Zope-Checkins mailing list