[Checkins] SVN: grokui.admin/branches/js-pack-zodb/src/grokui/admin/view add a ui element for packing zodbs to grokui.admin

Jasper Spaans jspaans at thehealthagency.com
Tue Dec 2 17:15:03 EST 2008


Log message for revision 93555:
  add a ui element for packing zodbs to grokui.admin

Changed:
  U   grokui.admin/branches/js-pack-zodb/src/grokui/admin/view.py
  U   grokui.admin/branches/js-pack-zodb/src/grokui/admin/view_templates/server.pt

-=-
Modified: grokui.admin/branches/js-pack-zodb/src/grokui/admin/view.py
===================================================================
--- grokui.admin/branches/js-pack-zodb/src/grokui/admin/view.py	2008-12-02 22:13:41 UTC (rev 93554)
+++ grokui.admin/branches/js-pack-zodb/src/grokui/admin/view.py	2008-12-02 22:15:03 UTC (rev 93555)
@@ -29,6 +29,7 @@
 from grokui.admin.utilities import getURLWithParams
 
 from ZODB.broken import Broken
+from ZODB.interfaces import IDatabase
 from BTrees.OOBTree import OOBTree
 
 import zope.component
@@ -38,6 +39,7 @@
 from zope.app.applicationcontrol.applicationcontrol import applicationController
 from zope.app.applicationcontrol.runtimeinfo import RuntimeInfo
 from zope.app.applicationcontrol.browser.runtimeinfo import RuntimeInfoView
+from zope.app.applicationcontrol.browser.zodbcontrol import ZODBControlView
 from zope.app.apidoc import utilities, codemodule
 from zope.app.apidoc.utilities import getPythonPath, renderText, columnize
 from zope.app.apidoc.codemodule.module import Module
@@ -51,6 +53,7 @@
 from zope.exceptions import DuplicationError
 from zope.proxy import removeAllProxies
 from zope.tal.taldefs import attrEscape
+from ZODB.FileStorage.FileStorage import FileStorageError
 
 import z3c.flashmessage.interfaces
 
@@ -135,7 +138,7 @@
 
         if not isinstance(items, list):
             items = [items]
-        
+
         if delete is not None:
             return self.delete(items)
         elif rename is not None:
@@ -177,29 +180,30 @@
 
     grok.context(Interface)
 
+
 class Rename(GAIAView):
     """Rename Grok applications.
     """
     grok.name('grokadmin_rename')
     grok.template('rename')
     grok.require('grok.ManageApplications')
-    
+
     def update(self, cancel=None, items=None, new_names=None):
         msg = u''
 
         if cancel is not None:
             return self.redirect(self.url(self.context))
-        
+
         if not isinstance(items, list):
             items = [items]
         self.apps = items
-        
+
         if new_names is not None and len(new_names) != len(items):
             return self.redirect(self.url(self.context))
 
         if new_names is None:
             return
-        
+
         mapping = dict([(items[x], new_names[x]) for x in range(len(items))])
 
         for oldname, newname in mapping.items():
@@ -431,7 +435,7 @@
             raise KeyError(message)
 
 
-class Server(GAIAView):
+class Server(GAIAView, ZODBControlView):
     """Zope3 management screen."""
 
     grok.require('grok.ManageApplications')
@@ -455,7 +459,8 @@
             return messages[0]
 
     def update(self, time=None, restart=None, shutdown=None,
-              admin_message=None, submitted=False):
+               admin_message=None, submitted=False,
+               dbName=None, pack=None, history=None):
         if not submitted:
             return
         # Admin message control
@@ -480,9 +485,25 @@
         elif shutdown is not None:
             self.server_control.shutdown(time)
 
+        if pack is not None:
+            return self.pack(dbName, history)
+
         self.redirect(self.url())
 
+    def pack(self, dbName, history):
+        try:
+            days = int(history)
+        except ValueError:
+            self.flash('Error: Invalid Number')
+            return
+        db = zope.component.getUtility(IDatabase, name=dbName)
+        try:
+            db.pack(days=days)
+            self.flash('ZODB `%s` successfully packed.' % (dbName))
+        except FileStorageError, err:
+            self.flash('ERROR packing ZODB `%s`: %s' % (dbName, err))
 
+
 class Users(GAIAView):
     """Users management screen."""
 

Modified: grokui.admin/branches/js-pack-zodb/src/grokui/admin/view_templates/server.pt
===================================================================
--- grokui.admin/branches/js-pack-zodb/src/grokui/admin/view_templates/server.pt	2008-12-02 22:13:41 UTC (rev 93554)
+++ grokui.admin/branches/js-pack-zodb/src/grokui/admin/view_templates/server.pt	2008-12-02 22:15:03 UTC (rev 93555)
@@ -20,6 +20,25 @@
       </fieldset>
     </form>
 
+    <fieldset>
+      <legend>Manage your databases</legend>
+      <div tal:condition="not: python: len(view.databases)">
+        <p class="menu-description1">Currently no databases are active.</p>
+      </div>
+      <div tal:condition="python: len(view.databases) or True"
+	   tal:repeat="db view/databases">
+        <form method="post" action=""
+              tal:attributes="action string:${context/@@absolute_url}/server">
+	  <input type="hidden" name="submitted" value="true"/>
+          <input type="hidden" name="dbName" value="" tal:attributes="value db/utilName" />
+          <input type="text" name="history" value="0" size="3" title="Days of history to keep" />
+          <input class="button" type="submit" name="pack" value="Pack" />
+          <span tal:replace="db/dbName" />
+          <span tal:replace="db/size" />
+        </form>
+      </div>
+    </fieldset>
+
     <form method="post" action=""
       tal:attributes="action string:${context/@@absolute_url}/server">
       <fieldset>



More information about the Checkins mailing list