[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