[Checkins] SVN: Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/database/ Matches functionality for existing main database.

Charlie Clark charlie at begeistert.org
Wed Nov 16 22:43:20 UTC 2011


Log message for revision 123390:
  Matches functionality for existing main database.

Changed:
  U   Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/database/overview.py
  U   Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/database/templates/overview.pt

-=-
Modified: Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/database/overview.py
===================================================================
--- Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/database/overview.py	2011-11-16 16:47:22 UTC (rev 123389)
+++ Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/database/overview.py	2011-11-16 22:43:19 UTC (rev 123390)
@@ -15,14 +15,46 @@
 ZODB Overview
 """
 
-class View(object):
+import datetime
 
-    db_name = "Name of the ZODB"
-    db_size = "Size of the ZODB"
+from Acquisition import aq_inner
 
-    def __init__(self, context, request):
-        self.context = context
-        self.request = request
+from zmi.core.browser.base import ZMIView
+from zmi.core.browser.base import Message as _
 
+class View(ZMIView):
+
     def __call__(self):
-        return self.index()
\ No newline at end of file
+        if 'pack' in self.request.form:
+            self.handle_pack(data=self.request.form)
+            return self.redirect()
+        return self.index()
+
+    @property
+    def _db(self):
+        """Return the database connection"""
+        return aq_inner(self.context)._p_jar.db()
+
+    def db_name(self):
+        """Return the name of the database"""
+        return self._db.getName()
+
+    def db_size(self):
+        """Return the size of the database, unformatted if it is a string,
+        otherwise in kilobytes or megabytes"""
+        size = self._db.getSize()
+        if isinstance(size, str):
+            return size
+
+        if size >= 1048576.0:
+            return '%.1fM' % (size/1048576.0)
+        return '%.1fK' % (size/1024.0)
+
+    def handle_pack(self, data):
+        """Pack the database by removing revisions older than the number of days
+        converted into seconds
+        """
+        db = self._db
+        packtime = datetime.timedelta(days=int(data['days']))
+        db.pack(packtime.seconds)
+        self.status = _(u'The database was packed')

Modified: Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/database/templates/overview.pt
===================================================================
--- Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/database/templates/overview.pt	2011-11-16 16:47:22 UTC (rev 123389)
+++ Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/database/templates/overview.pt	2011-11-16 22:43:19 UTC (rev 123390)
@@ -20,19 +20,25 @@
 and cache management.
 </p>
 
-
   <h2>Database Location:</h2>
   <span tal:content="view/db_name">DB NAME</span>
 
   <h2>Database Size:</h2>
   <span tal:content="view/db_size">DB SIZE</span>
 
-<form action="." method="post">
+  <p class="feedback"
+     tal:condition="exists:request/manage_tabs_message"
+     tal:content="request/manage_tabs_message">Status message</p>
+
+
+<form action="." method="post"
+      tal:attributes="action request/ACTUAL_URL">
+
   <p>Click <em>pack</em> to pack the Zope database, removing previous revisions
   of objects that are older than</p>
   <label for="days">days</label>
   <input type="text" name="days" value="0">
-  <input type="submit" name="submit" value="Pack">
+  <input type="submit" name="pack" value="Pack">
 
 </form>
 



More information about the checkins mailing list