[Checkins] SVN: zamplugin.control/ Move implementation form private
repos to svn.zope.org
Roger Ineichen
roger at projekt01.ch
Sat Feb 16 11:31:36 EST 2008
Log message for revision 83918:
Move implementation form private repos to svn.zope.org
Changed:
A zamplugin.control/branches/
A zamplugin.control/tags/
A zamplugin.control/trunk/
A zamplugin.control/trunk/CHANGES.txt
A zamplugin.control/trunk/README.txt
A zamplugin.control/trunk/bootstrap.py
A zamplugin.control/trunk/buildout.cfg
A zamplugin.control/trunk/externals/
A zamplugin.control/trunk/setup.py
A zamplugin.control/trunk/src/
A zamplugin.control/trunk/src/zamplugin/
A zamplugin.control/trunk/src/zamplugin/__init__.py
A zamplugin.control/trunk/src/zamplugin/control/
A zamplugin.control/trunk/src/zamplugin/control/README.txt
A zamplugin.control/trunk/src/zamplugin/control/__init__.py
A zamplugin.control/trunk/src/zamplugin/control/applicationcontrol.py
A zamplugin.control/trunk/src/zamplugin/control/browser/
A zamplugin.control/trunk/src/zamplugin/control/browser/__init__.py
A zamplugin.control/trunk/src/zamplugin/control/browser/configure.zcml
A zamplugin.control/trunk/src/zamplugin/control/browser/generation.py
A zamplugin.control/trunk/src/zamplugin/control/browser/generation_details.pt
A zamplugin.control/trunk/src/zamplugin/control/browser/generations.pt
A zamplugin.control/trunk/src/zamplugin/control/browser/runtimeinfo.pt
A zamplugin.control/trunk/src/zamplugin/control/browser/runtimeinfo.py
A zamplugin.control/trunk/src/zamplugin/control/browser/servercontrol.pt
A zamplugin.control/trunk/src/zamplugin/control/browser/servercontrol.py
A zamplugin.control/trunk/src/zamplugin/control/browser/zodbcontrol.pt
A zamplugin.control/trunk/src/zamplugin/control/browser/zodbcontrol.py
A zamplugin.control/trunk/src/zamplugin/control/configure.zcml
A zamplugin.control/trunk/src/zamplugin/control/ftesting.zcml
A zamplugin.control/trunk/src/zamplugin/control/menu.py
A zamplugin.control/trunk/src/zamplugin/control/menu.zcml
A zamplugin.control/trunk/src/zamplugin/control/namespace.py
A zamplugin.control/trunk/src/zamplugin/control/plugin.py
A zamplugin.control/trunk/src/zamplugin/control/plugin.zcml
A zamplugin.control/trunk/src/zamplugin/control/tests.py
-=-
Added: zamplugin.control/trunk/CHANGES.txt
===================================================================
--- zamplugin.control/trunk/CHANGES.txt (rev 0)
+++ zamplugin.control/trunk/CHANGES.txt 2008-02-16 16:31:36 UTC (rev 83918)
@@ -0,0 +1,8 @@
+=======
+CHANGES
+=======
+
+Version 0.5.0 (unreleased)
+-------------------------
+
+- Initial Release
Property changes on: zamplugin.control/trunk/CHANGES.txt
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.control/trunk/README.txt
===================================================================
--- zamplugin.control/trunk/README.txt (rev 0)
+++ zamplugin.control/trunk/README.txt 2008-02-16 16:31:36 UTC (rev 83918)
@@ -0,0 +1 @@
+This package provides server control for ZAM (Zope 3 Application Management).
Property changes on: zamplugin.control/trunk/README.txt
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.control/trunk/bootstrap.py
===================================================================
--- zamplugin.control/trunk/bootstrap.py (rev 0)
+++ zamplugin.control/trunk/bootstrap.py 2008-02-16 16:31:36 UTC (rev 83918)
@@ -0,0 +1,52 @@
+##############################################################################
+#
+# Copyright (c) 2007 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Bootstrap a buildout-based project
+
+Simply run this script in a directory containing a buildout.cfg.
+The script accepts buildout command-line options, so you can
+use the -c option to specify an alternate configuration file.
+
+$Id: bootstrap.py 75940 2007-05-24 14:45:00Z srichter $
+"""
+
+import os, shutil, sys, tempfile, urllib2
+
+tmpeggs = tempfile.mkdtemp()
+
+ez = {}
+exec urllib2.urlopen('http://peak.telecommunity.com/dist/ez_setup.py'
+ ).read() in ez
+ez['use_setuptools'](to_dir=tmpeggs, download_delay=0)
+
+import pkg_resources
+
+cmd = 'from setuptools.command.easy_install import main; main()'
+if sys.platform == 'win32':
+ cmd = '"%s"' % cmd # work around spawn lamosity on windows
+
+ws = pkg_resources.working_set
+assert os.spawnle(
+ os.P_WAIT, sys.executable, sys.executable,
+ '-c', cmd, '-mqNxd', tmpeggs, 'zc.buildout',
+ dict(os.environ,
+ PYTHONPATH=
+ ws.find(pkg_resources.Requirement.parse('setuptools')).location
+ ),
+ ) == 0
+
+ws.add_entry(tmpeggs)
+ws.require('zc.buildout')
+import zc.buildout.buildout
+zc.buildout.buildout.main(sys.argv[1:] + ['bootstrap'])
+shutil.rmtree(tmpeggs)
Property changes on: zamplugin.control/trunk/bootstrap.py
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.control/trunk/buildout.cfg
===================================================================
--- zamplugin.control/trunk/buildout.cfg (rev 0)
+++ zamplugin.control/trunk/buildout.cfg 2008-02-16 16:31:36 UTC (rev 83918)
@@ -0,0 +1,269 @@
+[buildout]
+develop = .
+ externals/z3c.menu.ready2go
+ externals/zam.api
+ externals/zam.skin
+
+parts = app test checker coverage
+
+[test]
+recipe = zc.recipe.testrunner
+eggs = zamplugin.control [app, test]
+
+[checker]
+recipe = lovely.recipe:importchecker
+path = src/zamplugin/control
+
+[coverage]
+recipe = zc.recipe.egg
+eggs = z3c.coverage
+
+
+[app]
+recipe = z3c.recipe.dev:app
+eggs = zamplugin.control [app]
+server = zserver
+zope.conf =
+ ${var:zconfig}
+
+ interrupt-check-interval 50
+
+ <server>
+ type WSGI-HTTP
+ address 8080
+ </server>
+
+ <eventlog>
+ <logfile>
+ path access.log
+ </logfile>
+ <logfile>
+ path STDOUT
+ formatter zope.exceptions.log.Formatter
+ </logfile>
+ </eventlog>
+
+ <accesslog>
+ <logfile>
+ path access.log
+ </logfile>
+ <logfile>
+ path STDOUT
+ </logfile>
+ </accesslog>
+
+ devmode on
+
+site.zcml =
+ <configure
+ xmlns:meta="http://namespaces.zope.org/meta"
+ xmlns:browser="http://namespaces.zope.org/browser"
+ i18n_domain="zope">
+
+ <!-- Turn on the devmode -->
+ <meta:provides feature="devmode" />
+
+ <!-- load meta configuration for exclude -->
+ <include package="zc.configuration" file="meta.zcml" />
+
+ <!-- exclude will prevent from include -->
+ <exclude package="zope.app.authentication" file="ftpplugins.zcml" />
+ <exclude package="zope.app.authentication" file="groupfolder.zcml" />
+ <exclude package="zope.app.authentication" file="principalfolder.zcml" />
+ <exclude package="zope.app.authentication.browser" />
+ <exclude package="zope.app.authentication.browser" file="configure.zcml" />
+ <exclude package="zope.app.authentication.browser" file="groupfolder.zcml" />
+ <exclude package="zope.app.authentication.browser" file="httpplugins.zcml" />
+ <exclude package="zope.app.authentication.browser" file="principalfolder.zcml" />
+ <exclude package="zope.app.authentication.browser" file="session.zcml" />
+ <exclude package="zope.app.broken" file="browser.zcml" />
+ <exclude package="zope.app.container.browser" />
+ <exclude package="zope.app.error.browser" />
+ <exclude package="zope.app.folder.browser" />
+ <exclude package="zope.app.i18n.browser" />
+ <exclude package="zope.app.intid.browser" />
+ <exclude package="zope.app.securitypolicy.browser" />
+ <exclude package="zope.app.applicationcontrol.browser" />
+ <exclude package="zope.app.session" file="browser.zcml" />
+ <exclude package="zope.dublincore.browser" />
+
+
+ <!-- meta configure -->
+ <include package="zope.app.component" file="meta.zcml" />
+ <include package="zope.app.component.browser" file="meta.zcml" />
+ <include package="zope.app.container.browser" file="meta.zcml" />
+ <include package="zope.app.pagetemplate" file="meta.zcml" />
+ <include package="zope.app.publication" file="meta.zcml" />
+ <include package="zope.app.publisher" file="meta.zcml" />
+ <include package="zope.app.security" file="meta.zcml" />
+ <include package="zope.i18n" file="meta.zcml" />
+ <include package="zope.security" file="meta.zcml" />
+ <include package="zope.securitypolicy" file="meta.zcml" />
+ <include package="zope.viewlet" file="meta.zcml" />
+
+
+ <!-- load 3rd party meta configuration -->
+ <include package="z3c.baseregistry" file="meta.zcml" />
+ <include package="z3c.form" file="meta.zcml" />
+ <include package="z3c.macro" file="meta.zcml" />
+ <include package="z3c.pagelet" file="meta.zcml" />
+ <include package="z3c.template" file="meta.zcml" />
+ <include package="z3c.zrtresource" file="meta.zcml" />
+
+
+ <!-- vocabulary setup, that's bad and weird, because this is meta configuration -->
+ <include package="zope.app.schema" />
+
+
+ <!-- bootstrap Database -->
+ <include package="zope.app.appsetup" />
+ <include package="zope.app.zopeappgenerations" />
+
+ <!-- zope server -->
+ <include package="zope.app.server" />
+ <include package="zope.app.twisted" />
+ <include package="zope.app.wsgi" />
+
+
+ <!-- zope packages -->
+ <include package="zope.annotation" />
+ <include package="zope.component" />
+ <include package="zope.contentprovider" />
+ <include package="zope.dublincore" />
+ <include package="zope.error" />
+ <include package="zope.location" />
+ <include package="zope.publisher" />
+ <include package="zope.securitypolicy" />
+ <include package="zope.session" />
+ <include package="zope.traversing" />
+ <include package="zope.traversing.browser" />
+
+
+ <!-- zope app package configuration -->
+ <include package="zope.app.authentication" />
+ <include package="zope.app.applicationcontrol" />
+ <include package="zope.app.broken" />
+ <include package="zope.app.component" />
+ <include package="zope.app.container" />
+ <include package="zope.app.folder" />
+ <include package="zope.app.http" />
+ <include package="zope.app.intid" />
+ <include package="zope.app.keyreference" />
+ <include package="zope.app.principalannotation" />
+ <include package="zope.app.publication" />
+ <include package="zope.app.publisher" />
+ <include package="zope.app.publisher.browser" />
+ <include package="zope.app.security" />
+ <include package="zope.app.securitypolicy" />
+ <include package="zope.app.session" />
+
+
+ <!-- z3c component -->
+ <include package="z3c.breadcrumb" />
+ <include package="z3c.form" />
+ <include package="z3c.formui" />
+ <include package="z3c.layer.pagelet" />
+ <include package="z3c.layer.ready2go" />
+ <include package="z3c.menu.ready2go" />
+ <include package="z3c.macro" />
+ <include package="z3c.pagelet" />
+
+
+ <!-- zam configuration -->
+ <include package="zam.api" />
+ <include package="zam.skin" />
+ <include package="zamplugin.control" />
+
+
+ <browser:defaultSkin name="ZAM" />
+
+ <!-- default view points to TestPage -->
+ <browser:defaultView name="index.html" />
+
+
+ <!-- from zope.app.i18n move this to another package -->
+ <!-- Setup charset negotiation -->
+ <adapter
+ factory="zope.publisher.http.HTTPCharsets"
+ for="zope.publisher.interfaces.http.IHTTPRequest"
+ provides="zope.i18n.interfaces.IUserPreferredCharsets"
+ />
+
+ <!-- Setup charset negotiation --><!-- move this to another package -->
+ <adapter
+ factory="zope.app.publisher.browser.ModifiableBrowserLanguages"
+ for="zope.publisher.interfaces.http.IHTTPRequest"
+ provides="zope.i18n.interfaces.IModifiableUserPreferredLanguages"
+ />
+
+ <class class="zope.publisher.http.HTTPRequest">
+ <implements
+ interface="zope.annotation.interfaces.IAttributeAnnotatable"
+ />
+ </class>
+
+ <!-- load other zcml files -->
+ <include file="securitypolicy.zcml" />
+ <include file="principals.zcml" />
+
+ </configure>
+
+principals.zcml =
+ <unauthenticatedPrincipal
+ id="lovelybooks.anybody"
+ title="Unauthenticated User"
+ />
+
+ <unauthenticatedGroup
+ id="zope.Anybody"
+ title="Unauthenticated Users"
+ />
+
+ <authenticatedGroup
+ id="zope.Authenticated"
+ title="Authenticated Users"
+ />
+
+ <everybodyGroup
+ id="zope.Everybody"
+ title="All Users"
+ />
+
+ <principal
+ id="zope.manager"
+ title="Manager"
+ login="Manager"
+ password="password"
+ />
+
+ <grant
+ role="zope.Manager"
+ principal="zope.manager"
+ />
+
+securitypolicy.zcml =
+ <include package="zope.app.securitypolicy" />
+
+ <securityPolicy
+ component="zope.securitypolicy.zopepolicy.ZopeSecurityPolicy" />
+
+ <role id="zope.Anonymous" title="Everybody"
+ description="All users have this role implicitly" />
+ <role id="zope.Manager" title="Site Manager" />
+ <role id="zope.Member" title="Site Member" />
+
+ <!-- Replace the following directive if you don't want public access -->
+ <grant
+ permission="zope.View"
+ role="zope.Anonymous"
+ />
+ <grant
+ permission="zope.app.dublincore.view"
+ role="zope.Anonymous"
+ />
+
+ <grantAll role="zope.Manager" />
+
+
+[var]
+recipe = zc.recipe.filestorage
Added: zamplugin.control/trunk/setup.py
===================================================================
--- zamplugin.control/trunk/setup.py (rev 0)
+++ zamplugin.control/trunk/setup.py 2008-02-16 16:31:36 UTC (rev 83918)
@@ -0,0 +1,101 @@
+##############################################################################
+#
+# Copyright (c) 2007 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Setup
+
+$Id:$
+"""
+import os
+from setuptools import setup, find_packages
+
+def read(*rnames):
+ return open(os.path.join(os.path.dirname(__file__), *rnames)).read()
+
+setup (
+ name='zamplugin.control',
+ version='0.5.0',
+ author = "Roger Ineichen and the Zope Community",
+ author_email = "zope3-dev at zope.org",
+ description = "Error utility for Zope Application Management",
+ long_description=(
+ read('README.txt')
+ + '\n\n' +
+ read('CHANGES.txt')
+ ),
+ license = "ZPL 2.1",
+ keywords = "zope3 zam server and application control management",
+ classifiers = [
+ 'Development Status :: 4 - Beta',
+ 'Environment :: Web Environment',
+ 'Intended Audience :: Developers',
+ 'License :: OSI Approved :: Zope Public License',
+ 'Programming Language :: Python',
+ 'Natural Language :: English',
+ 'Operating System :: OS Independent',
+ 'Topic :: Internet :: WWW/HTTP',
+ 'Framework :: Zope3'],
+ url = 'http://cheeseshop.python.org/pypi/zamplugin.control',
+ packages = find_packages('src'),
+ include_package_data = True,
+ package_dir = {'':'src'},
+ namespace_packages = ['zamplugin'],
+ extras_require = dict(
+ test = [
+ 'z3c.coverage',
+ 'z3c.testing',
+ 'zope.app.testing',
+ 'zope.testbrowser',
+ ],
+ app = [
+ 'z3c.baseregistry',
+ 'z3c.form',
+ 'z3c.formui',
+ 'z3c.layer.pagelet',
+ 'z3c.layer.ready2go',
+ 'z3c.menu.ready2go',
+ 'z3c.pagelet',
+ 'z3c.zrtresource',
+ 'zam.api',
+ 'zam.skin',
+ 'zc.configuration',
+ 'zope.app.component',
+ 'zope.app.http',
+ 'zope.app.intid',
+ 'zope.app.publisher',
+ 'zope.app.securitypolicy',
+ 'zope.app.server',
+ 'zope.app.twisted',
+ 'zope.configuration',
+ 'zope.interface',
+ 'zope.publisher',
+ 'zope.traversing',
+ 'zope.viewlet',
+ ],
+ ),
+ install_requires = [
+ 'setuptools',
+ 'z3c.baseregistry',
+ 'z3c.pagelet',
+ 'z3c.template',
+ 'zam.api',
+ 'zope.app.applicationcontrol',
+ 'zope.app.generations',
+ 'zope.app.renderer',
+ 'zope.component',
+ 'zope.interface',
+ 'zope.location',
+ 'zope.size',
+ 'zope.traversing',
+ ],
+ zip_safe = False,
+)
Property changes on: zamplugin.control/trunk/setup.py
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.control/trunk/src/zamplugin/__init__.py
===================================================================
--- zamplugin.control/trunk/src/zamplugin/__init__.py (rev 0)
+++ zamplugin.control/trunk/src/zamplugin/__init__.py 2008-02-16 16:31:36 UTC (rev 83918)
@@ -0,0 +1,7 @@
+# this is a namespace package
+try:
+ import pkg_resources
+ pkg_resources.declare_namespace(__name__)
+except ImportError:
+ import pkgutil
+ __path__ = pkgutil.extend_path(__path__, __name__)
Property changes on: zamplugin.control/trunk/src/zamplugin/__init__.py
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.control/trunk/src/zamplugin/control/README.txt
===================================================================
--- zamplugin.control/trunk/src/zamplugin/control/README.txt (rev 0)
+++ zamplugin.control/trunk/src/zamplugin/control/README.txt 2008-02-16 16:31:36 UTC (rev 83918)
@@ -0,0 +1,23 @@
+======
+README
+======
+
+This package provides the server control management. The zam.skin is used as
+basic skin for this test.
+
+Login as manager first:
+
+ >>> from zope.testbrowser.testing import Browser
+ >>> manager = Browser()
+ >>> manager.addHeader('Authorization', 'Basic mgr:mgrpw')
+
+Check if we can access the page.html view which is registred in the
+ftesting.zcml file for the ``ZAM`` skin:
+
+ >>> manager = Browser()
+ >>> manager.handleErrors = False
+ >>> manager.addHeader('Authorization', 'Basic mgr:mgrpw')
+ >>> skinURL = 'http://localhost/++skin++ZAM/index.html'
+ >>> manager.open(skinURL)
+ >>> manager.url
+ 'http://localhost/++skin++ZAM/index.html'
Property changes on: zamplugin.control/trunk/src/zamplugin/control/README.txt
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.control/trunk/src/zamplugin/control/__init__.py
===================================================================
--- zamplugin.control/trunk/src/zamplugin/control/__init__.py (rev 0)
+++ zamplugin.control/trunk/src/zamplugin/control/__init__.py 2008-02-16 16:31:36 UTC (rev 83918)
@@ -0,0 +1 @@
+# Make a package.
Property changes on: zamplugin.control/trunk/src/zamplugin/control/__init__.py
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.control/trunk/src/zamplugin/control/applicationcontrol.py
===================================================================
--- zamplugin.control/trunk/src/zamplugin/control/applicationcontrol.py (rev 0)
+++ zamplugin.control/trunk/src/zamplugin/control/applicationcontrol.py 2008-02-16 16:31:36 UTC (rev 83918)
@@ -0,0 +1,41 @@
+##############################################################################
+#
+# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Application Control
+
+$Id: applicationcontrol.py 67630 2006-04-27 00:54:03Z jim $"""
+__docformat__ = 'restructuredtext'
+
+import time
+import zope.interface
+import zope.component
+from zope.location import Location
+from zope.traversing.interfaces import IContainmentRoot
+from zope.app.applicationcontrol.interfaces import IApplicationControl
+
+START_TIME = time.time()
+
+
+class ApplicationControl(Location):
+
+ zope.interface.implements(IApplicationControl)
+ zope.component.adapts(IContainmentRoot)
+
+ __name__ = '++etc++ApplicationController'
+
+ def __init__(self, context):
+ self.__parent__ = context
+ self.context = context
+
+ def getStartTime(self):
+ return START_TIME
Property changes on: zamplugin.control/trunk/src/zamplugin/control/applicationcontrol.py
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.control/trunk/src/zamplugin/control/browser/__init__.py
===================================================================
--- zamplugin.control/trunk/src/zamplugin/control/browser/__init__.py (rev 0)
+++ zamplugin.control/trunk/src/zamplugin/control/browser/__init__.py 2008-02-16 16:31:36 UTC (rev 83918)
@@ -0,0 +1 @@
+# Make a package.
Property changes on: zamplugin.control/trunk/src/zamplugin/control/browser/__init__.py
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.control/trunk/src/zamplugin/control/browser/configure.zcml
===================================================================
--- zamplugin.control/trunk/src/zamplugin/control/browser/configure.zcml (rev 0)
+++ zamplugin.control/trunk/src/zamplugin/control/browser/configure.zcml 2008-02-16 16:31:36 UTC (rev 83918)
@@ -0,0 +1,83 @@
+<configure
+ xmlns="http://namespaces.zope.org/zope"
+ xmlns:z3c="http://namespaces.zope.org/z3c"
+ i18n_domain="zam">
+
+ <!-- runtime info -->
+ <z3c:pagelet
+ name="index.html"
+ for="zope.app.applicationcontrol.interfaces.IApplicationControl"
+ class=".runtimeinfo.RuntimeInfo"
+ permission="zope.ManageApplication"
+ layer="zam.api.layer.IZAMBrowserLayer"
+ />
+
+ <z3c:template
+ for=".runtimeinfo.RuntimeInfo"
+ template="runtimeinfo.pt"
+ layer="zam.api.layer.IZAMBrowserLayer"
+ />
+
+
+ <!-- Server control -->
+ <z3c:pagelet
+ name="servercontrol.html"
+ for="zope.app.applicationcontrol.interfaces.IApplicationControl"
+ class=".servercontrol.ServerControl"
+ permission="zope.ManageApplication"
+ layer="zam.api.layer.IZAMBrowserLayer"
+ />
+
+ <z3c:template
+ for=".servercontrol.ServerControl"
+ template="servercontrol.pt"
+ layer="zam.api.layer.IZAMBrowserLayer"
+ />
+
+
+ <!-- ZODB control -->
+ <z3c:pagelet
+ name="ZODBControl.html"
+ for="zope.app.applicationcontrol.interfaces.IApplicationControl"
+ class=".zodbcontrol.ZODBControl"
+ permission="zope.ManageApplication"
+ layer="zam.api.layer.IZAMBrowserLayer"
+ />
+
+ <z3c:template
+ for=".zodbcontrol.ZODBControl"
+ template="zodbcontrol.pt"
+ layer="zam.api.layer.IZAMBrowserLayer"
+ />
+
+
+ <!-- generations -->
+ <z3c:pagelet
+ name="generations.html"
+ for="zope.app.applicationcontrol.interfaces.IApplicationControl"
+ class=".generation.Generations"
+ permission="zope.ManageApplication"
+ layer="zam.api.layer.IZAMBrowserLayer"
+ />
+
+ <z3c:template
+ for=".generation.Generations"
+ template="generations.pt"
+ layer="zam.api.layer.IZAMBrowserLayer"
+ />
+
+ <z3c:pagelet
+ name="generationDetails.html"
+ for="zope.app.applicationcontrol.interfaces.IApplicationControl"
+ class=".generation.GenerationDetails"
+ permission="zope.ManageApplication"
+ layer="zam.api.layer.IZAMBrowserLayer"
+ />
+
+ <z3c:template
+ for=".generation.GenerationDetails"
+ template="generation_details.pt"
+ layer="zam.api.layer.IZAMBrowserLayer"
+ />
+
+</configure>
Property changes on: zamplugin.control/trunk/src/zamplugin/control/browser/configure.zcml
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.control/trunk/src/zamplugin/control/browser/generation.py
===================================================================
--- zamplugin.control/trunk/src/zamplugin/control/browser/generation.py (rev 0)
+++ zamplugin.control/trunk/src/zamplugin/control/browser/generation.py 2008-02-16 16:31:36 UTC (rev 83918)
@@ -0,0 +1,165 @@
+##############################################################################
+#
+# Copyright (c) 2004 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""UI for browsing database schema managers
+
+$Id: managers.py 73669 2007-03-27 07:35:13Z dobe $
+"""
+__docformat__ = 'restructuredtext'
+
+import transaction
+
+import zope.component
+from zope.app.generations.interfaces import ISchemaManager
+from zope.app.generations.interfaces import ISchemaManager
+from zope.app.generations.generations import generations_key
+from zope.app.generations.generations import Context
+from zope.app.renderer.rest import ReStructuredTextToHTMLRenderer
+
+from z3c.pagelet import browser
+from z3c.template.template import getPageTemplate
+
+request_key_format = "evolve-app-%s"
+
+
+class Generations(browser.BrowserPagelet):
+ """GEneration management page."""
+
+ template = getPageTemplate()
+
+ def _getdb(self):
+ # TODO: There needs to be a better api for this
+ return self.request.publication.db
+
+ def evolve(self):
+ """Perform a requested evolution."""
+
+ self.managers = managers = dict(
+ zope.component.getUtilitiesFor(ISchemaManager))
+ db = self._getdb()
+ conn = db.open()
+ try:
+ generations = conn.root().get(generations_key, ())
+ request = self.request
+ for key in generations:
+ generation = generations[key]
+ rkey = request_key_format % key
+ if rkey in request:
+ manager = managers[key]
+ if generation >= manager.generation:
+ return {'app': key, 'to': 0}
+ context = Context()
+ context.connection = conn
+ generation += 1
+ manager.evolve(context, generation)
+ generations[key] = generation
+ transaction.commit()
+ return {'app': key, 'to': generation}
+ return None
+ finally:
+ transaction.abort()
+ conn.close()
+
+ def applications(self):
+ """Get information about database-generation status."""
+ result = []
+ db = self._getdb()
+ conn = db.open()
+ try:
+ managers = self.managers
+ generations = conn.root().get(generations_key, ())
+ for key in generations:
+ generation = generations[key]
+ manager = managers.get(key)
+ if manager is None:
+ continue
+
+ result.append({
+ 'id': key,
+ 'min': manager.minimum_generation,
+ 'max': manager.generation,
+ 'generation': generation,
+ 'evolve': (generation < manager.generation
+ and request_key_format % key
+ or ''
+ ),
+ })
+ return result
+ finally:
+ conn.close()
+
+
+class GenerationDetails(object):
+ r"""Show Details of a particular Schema Manager's Evolvers
+
+ This method needs to use the component architecture, so
+ we'll set it up:
+
+ >>> from zope.app.testing.placelesssetup import setUp, tearDown
+ >>> setUp()
+
+ We need to define some schema managers. We'll define just one:
+
+ >>> from zope.app.generations.generations import SchemaManager
+ >>> from zope.app.testing import ztapi
+ >>> app1 = SchemaManager(0, 3, 'zope.app.generations.demo')
+ >>> ztapi.provideUtility(ISchemaManager, app1, 'foo.app1')
+
+ Now let's create the view:
+
+ >>> from zope.publisher.browser import TestRequest
+ >>> details = ManagerDetails()
+ >>> details.context = None
+ >>> details.request = TestRequest(environ={'id': 'foo.app1'})
+
+ Let's now see that the view gets the ID correctly from the request:
+
+ >>> details.id
+ 'foo.app1'
+
+ Now check that we get all the info from the evolvers:
+
+ >>> info = details.getEvolvers()
+ >>> for item in info:
+ ... print sorted(item.items())
+ [('from', 0), ('info', u'<p>Evolver 1</p>\n'), ('to', 1)]
+ [('from', 1), ('info', u'<p>Evolver 2</p>\n'), ('to', 2)]
+ [('from', 2), ('info', ''), ('to', 3)]
+
+ We'd better clean up:
+
+ >>> tearDown()
+ """
+
+ id = property(lambda self: self.request['id'])
+
+ def getEvolvers(self):
+ id = self.id
+ manager = zope.component.getUtility(ISchemaManager, id)
+
+ evolvers = []
+
+ for gen in range(manager.minimum_generation, manager.generation):
+
+ info = manager.getInfo(gen+1)
+ if info is None:
+ info = ''
+ else:
+ # XXX: the renderer *expects* unicode as input encoding (ajung)
+ renderer = ReStructuredTextToHTMLRenderer(
+ unicode(info), self.request)
+ info = renderer.render()
+
+ evolvers.append({'from': gen, 'to': gen+1, 'info': info})
+
+ return evolvers
Property changes on: zamplugin.control/trunk/src/zamplugin/control/browser/generation.py
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.control/trunk/src/zamplugin/control/browser/generation_details.pt
===================================================================
--- zamplugin.control/trunk/src/zamplugin/control/browser/generation_details.pt (rev 0)
+++ zamplugin.control/trunk/src/zamplugin/control/browser/generation_details.pt 2008-02-16 16:31:36 UTC (rev 83918)
@@ -0,0 +1,19 @@
+<h1 i18n:translate="">
+ <b i18n:name="application_id" tal:content="view/id" />
+ Application Manager Details
+</h1>
+<br/>
+
+<tal:block repeat="evolver view/getEvolvers">
+
+<h2 i18n:translate="">
+ Evolver
+ from Generation <b i18n:name="from" tal:content="evolver/from"/>
+ to Generation <b i18n:name="to" tal:content="evolver/to"/>
+</h2>
+<br />
+<div tal:content="structure evolver/info">
+ Evolution information.
+</div>
+
+</tal:block>
Property changes on: zamplugin.control/trunk/src/zamplugin/control/browser/generation_details.pt
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.control/trunk/src/zamplugin/control/browser/generations.pt
===================================================================
--- zamplugin.control/trunk/src/zamplugin/control/browser/generations.pt (rev 0)
+++ zamplugin.control/trunk/src/zamplugin/control/browser/generations.pt 2008-02-16 16:31:36 UTC (rev 83918)
@@ -0,0 +1,52 @@
+<span i18n:translate="">Database generations</span>
+
+<form tal:attributes="action request/URL"
+ tal:define="status view/evolve"
+ >
+
+<p tal:condition="status">
+<span tal:condition="status/to" i18n:translate=""
+ >The database was updated to generation <span
+ i18n:name=generation
+ tal:content="status/to">2</span> for <span
+ i18n:name=application
+ tal:content="status/app"
+ >foo.bar</span>.</span>
+<span tal:condition="not: status/to" i18n:translate=""
+ >The database is up to date for <span
+ i18n:name=application
+ tal:content="status/app"
+ >foo.bar</span>.</span>
+</p>
+
+<table border="1">
+
+<tr>
+ <th i18n:translate="">Application</th>
+ <th i18n:translate="">Minimum Generation</th>
+ <th i18n:translate="">Maximum Generation</th>
+ <th i18n:translate="">Current Database Generation</th>
+ <th i18n:translate="">Evolve?</th>
+</tr>
+<tr tal:repeat="app view/applications">
+ <td>
+ <a href=""
+ tal:attributes=
+ "href string:generationDetails.html?id=${app/id}"
+ tal:content="app/id">foo.bar</a>
+ </td>
+ <td tal:content="app/min">1</td>
+ <td tal:content="app/max">10</td>
+ <td tal:content="app/generation">2</td>
+ <td>
+ <input type="submit" value=" evolve " name="evolve"
+ tal:condition="app/evolve"
+ tal:attributes="name app/evolve"
+ >
+ <span tal:condition="not: app/evolve"
+ i18n:translate=""
+ >No, up to date</span>
+ </td>
+</tr>
+</table>
+</form>
Property changes on: zamplugin.control/trunk/src/zamplugin/control/browser/generations.pt
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.control/trunk/src/zamplugin/control/browser/runtimeinfo.pt
===================================================================
--- zamplugin.control/trunk/src/zamplugin/control/browser/runtimeinfo.pt (rev 0)
+++ zamplugin.control/trunk/src/zamplugin/control/browser/runtimeinfo.pt 2008-02-16 16:31:36 UTC (rev 83918)
@@ -0,0 +1,57 @@
+<tal:block tal:define="runtime_info view/runtimeInfo">
+ <div class="row">
+ <div class="label" i18n:translate="">Uptime</div>
+ <div class="field"
+ tal:content="runtime_info/Uptime"
+ i18n:translate="">Time</div>
+ </div>
+ <div class="row">
+ <div class="label" i18n:translate="">System platform</div>
+ <div class="field"
+ tal:content="runtime_info/SystemPlatform">Platform</div>
+ </div>
+ <div class="row">
+ <div class="label" i18n:translate="">Zope version</div>
+ <div class="field"
+ tal:content="runtime_info/ZopeVersion">Version</div>
+ </div>
+ <div class="row">
+ <div class="label" i18n:translate="">Python version</div>
+ <div class="field"
+ tal:content="runtime_info/PythonVersion">Version</div>
+ </div>
+ <div class="row">
+ <div class="label" i18n:translate="">Command line</div>
+ <div class="field"
+ tal:content="runtime_info/CommandLine">Command line</div>
+ </div>
+ <div class="row">
+ <div class="label" i18n:translate="">Preferred encoding</div>
+ <div class="field"
+ tal:content="runtime_info/PreferredEncoding">Encoding</div>
+ </div>
+ <div class="row">
+ <div class="label" i18n:translate="">FileSystem encoding</div>
+ <div class="field"
+ tal:content="runtime_info/FileSystemEncoding">Encoding</div>
+ </div>
+ <div class="row">
+ <div class="label" i18n:translate="">Process id</div>
+ <div class="field"
+ tal:content="runtime_info/ProcessId">ID</div>
+ </div>
+ <div class="row">
+ <div class="label" i18n:translate="">Developer mode</div>
+ <div class="field"
+ tal:content="runtime_info/DeveloperMode">ID</div>
+ </div>
+ <div class="row">
+ <div class="label" i18n:translate="">Python path</div>
+ <div class="field">
+ <ul>
+ <li tal:repeat="path runtime_info/PythonPath"
+ tal:content="path">path</li>
+ </ul>
+ </div>
+ </div>
+</tal:block>
Property changes on: zamplugin.control/trunk/src/zamplugin/control/browser/runtimeinfo.pt
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.control/trunk/src/zamplugin/control/browser/runtimeinfo.py
===================================================================
--- zamplugin.control/trunk/src/zamplugin/control/browser/runtimeinfo.py (rev 0)
+++ zamplugin.control/trunk/src/zamplugin/control/browser/runtimeinfo.py 2008-02-16 16:31:36 UTC (rev 83918)
@@ -0,0 +1,76 @@
+##############################################################################
+#
+# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Define runtime information view component for Application Control
+
+$Id: runtimeinfo.py 74321 2007-04-21 11:35:21Z ctheune $
+"""
+__docformat__ = 'restructuredtext'
+
+from zope.app.applicationcontrol.interfaces import IRuntimeInfo
+from zope.app.applicationcontrol.i18n import ZopeMessageFactory as _
+
+from z3c.pagelet import browser
+from z3c.template.template import getPageTemplate
+
+
+class RuntimeInfo(browser.BrowserPagelet):
+
+ template = getPageTemplate()
+
+ _fields = (
+ "ZopeVersion",
+ "PythonVersion",
+ "PythonPath",
+ "SystemPlatform",
+ "PreferredEncoding",
+ "FileSystemEncoding",
+ "CommandLine",
+ "ProcessId",
+ "DeveloperMode",
+ )
+ _unavailable = _("Unavailable")
+
+ def runtimeInfo(self):
+ try:
+ ri = IRuntimeInfo(self.context)
+ except TypeError:
+ formatted = dict.fromkeys(self._fields, self._unavailable)
+ formatted["Uptime"] = self._unavailable
+ else:
+ formatted = self._getInfo(ri)
+ return formatted
+
+ def _getInfo(self, ri):
+ formatted = {}
+ for name in self._fields:
+ try:
+ value = getattr(ri, "get" + name)()
+ except ValueError:
+ value = self._unavailable
+ formatted[name] = value
+ formatted["Uptime"] = self._getUptime(ri)
+ return formatted
+
+ def _getUptime(self, ri):
+ # make a unix "uptime" uptime format
+ uptime = long(ri.getUptime())
+ minutes, seconds = divmod(uptime, 60)
+ hours, minutes = divmod(minutes, 60)
+ days, hours = divmod(hours, 24)
+
+ return _('${days} day(s) ${hours}:${minutes}:${seconds}',
+ mapping = {'days': '%d' % days,
+ 'hours': '%02d' % hours,
+ 'minutes': '%02d' % minutes,
+ 'seconds': '%02d' % seconds})
Property changes on: zamplugin.control/trunk/src/zamplugin/control/browser/runtimeinfo.py
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.control/trunk/src/zamplugin/control/browser/servercontrol.pt
===================================================================
--- zamplugin.control/trunk/src/zamplugin/control/browser/servercontrol.pt (rev 0)
+++ zamplugin.control/trunk/src/zamplugin/control/browser/servercontrol.pt 2008-02-16 16:31:36 UTC (rev 83918)
@@ -0,0 +1,31 @@
+<div class="message"
+ i18n:translate=""
+ tal:define="status view/action"
+ tal:condition="status"
+ tal:content="status">
+ </div>
+
+<form name="servercontrol" action="servercontrol.html" method="post">
+ <div class="row">
+ <div class="label"
+ i18n:translate="">Countdown until restart or shutdown</div>
+ <div class="field">
+ <input type="text" name="time:int" size="5" value="0" />
+ <span i18n:translate="">seconds</span>
+ <p i18n:translate="">
+ If you specify a time of 0 seconds, then the server
+ will be shutdown or restarted immediately.
+ </p>
+ </div>
+ </div>
+
+ <div class="row">
+ <div class="controls">
+ <input type="submit" name="restart" value="Restart server"
+ i18n:attributes="value" />
+
+ <input type="submit" name="shutdown" value="Shutdown server"
+ i18n:attributes="value" />
+ </div>
+ </div>
+</form>
Property changes on: zamplugin.control/trunk/src/zamplugin/control/browser/servercontrol.pt
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.control/trunk/src/zamplugin/control/browser/servercontrol.py
===================================================================
--- zamplugin.control/trunk/src/zamplugin/control/browser/servercontrol.py (rev 0)
+++ zamplugin.control/trunk/src/zamplugin/control/browser/servercontrol.py 2008-02-16 16:31:36 UTC (rev 83918)
@@ -0,0 +1,47 @@
+##############################################################################
+#
+# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Server Control View
+
+$Id: servercontrol.py 73536 2007-03-25 08:17:24Z dobe $
+"""
+__docformat__ = 'restructuredtext'
+
+import zope.component
+from zope.app.applicationcontrol.interfaces import IServerControl
+from zope.app.applicationcontrol.i18n import ZopeMessageFactory as _
+
+from z3c.pagelet import browser
+from z3c.template.template import getPageTemplate
+
+
+class ServerControl(browser.BrowserPagelet):
+
+ template = getPageTemplate()
+
+ def serverControl(self):
+ return zope.component.getUtility(IServerControl)
+
+ def action(self):
+ """Do the shutdown/restart!"""
+ control = self.serverControl()
+ time = self.request.get('time', 0)
+
+ if 'restart' in self.request:
+ control.restart(time)
+ return _("The server will be restarted in ${number} seconds.",
+ mapping={"number": time})
+ elif 'shutdown' in self.request:
+ control.shutdown(time)
+ return _("The server will be shutdown in ${number} seconds.",
+ mapping={"number": time})
Property changes on: zamplugin.control/trunk/src/zamplugin/control/browser/servercontrol.py
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.control/trunk/src/zamplugin/control/browser/zodbcontrol.pt
===================================================================
--- zamplugin.control/trunk/src/zamplugin/control/browser/zodbcontrol.pt (rev 0)
+++ zamplugin.control/trunk/src/zamplugin/control/browser/zodbcontrol.pt 2008-02-16 16:31:36 UTC (rev 83918)
@@ -0,0 +1,49 @@
+<div id="message">
+ <div class="row" tal:repeat="status view/update">
+ <div class="field" tal:content="status" i18n:translate=""/>
+ </div>
+</div>
+<div>
+ <form action="." method="post" tal:attributes="action request/URL">
+ <div class="row">
+ <table border="1">
+ <tr>
+ <th i18n:translate="">Pack</th>
+ <th i18n:translate="">Utility Name</th>
+ <th i18n:translate="">Database Name</th>
+ <th i18n:translate="">Size</th>
+ </tr>
+ <tr tal:repeat="db view/databases">
+ <td>
+ <input type="checkbox" name="dbs:list"
+ tal:attributes="value db/utilName"/>
+ </td>
+ <td>
+ <span tal:replace="db/utilName"/>
+ </td>
+
+ <td>
+ <span tal:replace="db/dbName"/>
+ </td>
+ <td>
+ <span tal:replace="db/size"/>
+ </td>
+ </tr>
+ </table>
+
+ <div class="row">
+ <span class="label" i18n:translate="">Keep up to</span>
+ <span class="field">
+ <input type="text" size="4" name="days" value="0"
+ tal:attributes="value request/days|string:0" />
+ <span tal:omit-tag="" i18n:translate="">days</span>
+ </span>
+ <div class="controls">
+ <input type="submit" name="PACK" value="Pack"
+ i18n:attributes="value pack-button"/>
+ </div>
+ </div>
+
+ </div>
+ </form>
+</div>
Property changes on: zamplugin.control/trunk/src/zamplugin/control/browser/zodbcontrol.pt
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.control/trunk/src/zamplugin/control/browser/zodbcontrol.py
===================================================================
--- zamplugin.control/trunk/src/zamplugin/control/browser/zodbcontrol.py (rev 0)
+++ zamplugin.control/trunk/src/zamplugin/control/browser/zodbcontrol.py 2008-02-16 16:31:36 UTC (rev 83918)
@@ -0,0 +1,78 @@
+##############################################################################
+#
+# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+""" Server Control View
+
+$Id: zodbcontrol.py 73536 2007-03-25 08:17:24Z dobe $
+"""
+__docformat__ = 'restructuredtext'
+
+import zope.component
+from ZODB.interfaces import IDatabase
+from ZODB.FileStorage.FileStorage import FileStorageError
+from zope.size import byteDisplay
+from zope.app.applicationcontrol.i18n import ZopeMessageFactory as _
+
+from z3c.pagelet import browser
+from z3c.template.template import getPageTemplate
+
+
+class ZODBControl(browser.BrowserPagelet):
+
+ template = getPageTemplate()
+
+ status = None
+
+ @property
+ def databases(self):
+ res = []
+ for name, db in zope.component.getUtilitiesFor(
+ IDatabase):
+ d = dict(
+ dbName = db.getName(),
+ utilName = str(name),
+ size = self._getSize(db),
+ )
+ res.append(d)
+ return res
+
+ def _getSize(self, db):
+ """Get the database size in a human readable format."""
+ size = db.getSize()
+ if not isinstance(size, (int, long, float)):
+ return str(size)
+ return byteDisplay(size)
+
+ def update(self):
+ if self.status is not None:
+ return self.status
+ status = []
+ if 'PACK' in self.request.form:
+ dbs = self.request.form.get('dbs', [])
+ try:
+ days = int(self.request.form.get('days','').strip() or 0)
+ except ValueError:
+ status.append(_('Error: Invalid Number'))
+ self.status = status
+ return self.status
+ for dbName in dbs:
+ db = zope.component.getUtility(IDatabase, name=dbName)
+ try:
+ db.pack(days=days)
+ status.append(_('ZODB "${name}" successfully packed.',
+ mapping=dict(name=str(dbName))))
+ except FileStorageError, err:
+ status.append(_('ERROR packing ZODB "${name}": ${err}',
+ mapping=dict(name=str(dbName), err=err)))
+ self.status = status
+ return self.status
Property changes on: zamplugin.control/trunk/src/zamplugin/control/browser/zodbcontrol.py
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.control/trunk/src/zamplugin/control/configure.zcml
===================================================================
--- zamplugin.control/trunk/src/zamplugin/control/configure.zcml (rev 0)
+++ zamplugin.control/trunk/src/zamplugin/control/configure.zcml 2008-02-16 16:31:36 UTC (rev 83918)
@@ -0,0 +1,46 @@
+<configure
+ xmlns="http://namespaces.zope.org/zope"
+ i18n_domain="zam">
+
+ <include file="plugin.zcml" />
+
+ <!-- make sure we bootstrap the evolver -->
+ <include package="zope.app.generations" file="subscriber.zcml" />
+
+ <registerIn registry="zamplugin.control.plugin.ControlBaseRegistry">
+
+ <class
+ class=".applicationcontrol.ApplicationControl">
+ <require
+ permission="zope.ManageApplication"
+ interface="zope.app.applicationcontrol.interfaces.IApplicationControl"
+ />
+ </class>
+
+ <adapter
+ factory=".applicationcontrol.ApplicationControl"
+ provides="zope.app.applicationcontrol.interfaces.IApplicationControl"
+ locate="True"
+ />
+
+ <adapter
+ name="etc"
+ factory=".namespace.etc"
+ for="*"
+ provides="zope.traversing.interfaces.ITraversable"
+ />
+ <view
+ name="etc"
+ factory=".namespace.etc"
+ for="*"
+ type="zope.interface.Interface"
+ provides="zope.traversing.interfaces.ITraversable"
+ />
+
+ <include file="menu.zcml" />
+ <include package=".browser" />
+
+ </registerIn>
+
+
+</configure>
Property changes on: zamplugin.control/trunk/src/zamplugin/control/configure.zcml
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.control/trunk/src/zamplugin/control/ftesting.zcml
===================================================================
--- zamplugin.control/trunk/src/zamplugin/control/ftesting.zcml (rev 0)
+++ zamplugin.control/trunk/src/zamplugin/control/ftesting.zcml 2008-02-16 16:31:36 UTC (rev 83918)
@@ -0,0 +1,207 @@
+<configure
+ xmlns="http://namespaces.zope.org/zope"
+ xmlns:meta="http://namespaces.zope.org/meta"
+ xmlns:browser="http://namespaces.zope.org/browser"
+ xmlns:z3c="http://namespaces.zope.org/z3c"
+ i18n_domain="zope">
+
+ <!-- Turn on the devmode -->
+ <meta:provides feature="devmode" />
+
+ <!-- load meta configuration for exclude -->
+ <include package="zc.configuration" file="meta.zcml" />
+
+ <!-- exclude will prevent from include -->
+ <exclude package="zope.app.authentication" file="ftpplugins.zcml" />
+ <exclude package="zope.app.authentication" file="groupfolder.zcml" />
+ <exclude package="zope.app.authentication" file="principalfolder.zcml" />
+ <exclude package="zope.app.authentication.browser" />
+ <exclude package="zope.app.authentication.browser" file="configure.zcml" />
+ <exclude package="zope.app.authentication.browser" file="groupfolder.zcml" />
+ <exclude package="zope.app.authentication.browser" file="httpplugins.zcml" />
+ <exclude package="zope.app.authentication.browser" file="principalfolder.zcml" />
+ <exclude package="zope.app.authentication.browser" file="session.zcml" />
+ <exclude package="zope.app.broken" file="browser.zcml" />
+ <exclude package="zope.app.container.browser" />
+ <exclude package="zope.app.error.browser" />
+ <exclude package="zope.app.folder.browser" />
+ <exclude package="zope.app.i18n.browser" />
+ <exclude package="zope.app.intid.browser" />
+ <exclude package="zope.app.securitypolicy.browser" />
+ <exclude package="zope.app.session" file="browser.zcml" />
+ <exclude package="zope.dublincore.browser" />
+
+
+ <!-- meta configure -->
+ <include package="zope.app.component" file="meta.zcml" />
+ <include package="zope.app.component.browser" file="meta.zcml" />
+ <include package="zope.app.container.browser" file="meta.zcml" />
+ <include package="zope.app.pagetemplate" file="meta.zcml" />
+ <include package="zope.app.publication" file="meta.zcml" />
+ <include package="zope.app.publisher" file="meta.zcml" />
+ <include package="zope.app.security" file="meta.zcml" />
+ <include package="zope.i18n" file="meta.zcml" />
+ <include package="zope.security" file="meta.zcml" />
+ <include package="zope.securitypolicy" file="meta.zcml" />
+ <include package="zope.viewlet" file="meta.zcml" />
+
+
+ <!-- load 3rd party meta configuration -->
+ <include package="z3c.baseregistry" file="meta.zcml" />
+ <include package="z3c.form" file="meta.zcml" />
+ <include package="z3c.macro" file="meta.zcml" />
+ <include package="z3c.pagelet" file="meta.zcml" />
+ <include package="z3c.template" file="meta.zcml" />
+ <include package="z3c.zrtresource" file="meta.zcml" />
+
+
+ <!-- vocabulary setup, that's bad and weird, because this is meta configuration -->
+ <include package="zope.app.schema" />
+
+
+ <!-- bootstrap Database -->
+ <include package="zope.app.appsetup" />
+ <include package="zope.app.zopeappgenerations" />
+
+ <!-- zope server -->
+ <include package="zope.app.server" />
+ <include package="zope.app.twisted" />
+ <include package="zope.app.wsgi" />
+
+
+ <!-- zope packages -->
+ <include package="zope.annotation" />
+ <include package="zope.component" />
+ <include package="zope.contentprovider" />
+ <include package="zope.dublincore" />
+ <include package="zope.error" />
+ <include package="zope.location" />
+ <include package="zope.publisher" />
+ <include package="zope.securitypolicy" />
+ <include package="zope.session" />
+ <include package="zope.traversing" />
+ <include package="zope.traversing.browser" />
+
+
+ <!-- zope app package configuration -->
+ <include package="zope.app.authentication" />
+ <include package="zope.app.broken" />
+ <include package="zope.app.component" />
+ <include package="zope.app.container" />
+ <include package="zope.app.folder" />
+ <include package="zope.app.http" />
+ <include package="zope.app.intid" />
+ <include package="zope.app.keyreference" />
+ <include package="zope.app.principalannotation" />
+ <include package="zope.app.publication" />
+ <include package="zope.app.publisher" />
+ <include package="zope.app.publisher.browser" />
+ <include package="zope.app.security" />
+ <include package="zope.app.securitypolicy" />
+ <include package="zope.app.session" />
+
+
+ <!-- z3c component -->
+ <include package="z3c.breadcrumb" />
+ <include package="z3c.form" />
+ <include package="z3c.formui" />
+ <include package="z3c.layer.pagelet" />
+ <include package="z3c.layer.ready2go" />
+ <include package="z3c.menu.ready2go" />
+ <include package="z3c.macro" />
+ <include package="z3c.pagelet" />
+
+
+ <!-- zam configuration -->
+ <include package="zam.api" />
+ <include package="zam.skin" />
+ <include package="zamplugin.control" />
+
+
+ <browser:defaultSkin name="ZAM" />
+
+ <!-- default view points to TestPage -->
+ <browser:defaultView name="index.html" />
+
+
+ <!-- from zope.app.i18n move this to another package -->
+ <!-- Setup charset negotiation -->
+ <adapter
+ factory="zope.publisher.http.HTTPCharsets"
+ for="zope.publisher.interfaces.http.IHTTPRequest"
+ provides="zope.i18n.interfaces.IUserPreferredCharsets"
+ />
+
+ <!-- Setup charset negotiation --><!-- move this to another package -->
+ <adapter
+ factory="zope.app.publisher.browser.ModifiableBrowserLanguages"
+ for="zope.publisher.interfaces.http.IHTTPRequest"
+ provides="zope.i18n.interfaces.IModifiableUserPreferredLanguages"
+ />
+
+ <class class="zope.publisher.http.HTTPRequest">
+ <implements
+ interface="zope.annotation.interfaces.IAttributeAnnotatable"
+ />
+ </class>
+
+
+ <!-- load security policy -->
+ <include package="zope.securitypolicy" />
+
+ <securityPolicy
+ component="zope.securitypolicy.zopepolicy.ZopeSecurityPolicy"
+ />
+
+ <role id="zope.Anonymous"
+ title="Everybody"
+ description="All users have this role implicitly"
+ />
+ <role id="zope.Manager" title="Site Manager" />
+ <role id="zope.Member" title="Site Member" />
+
+ <grant permission="zope.View"
+ role="zope.Anonymous" />
+ <grant permission="zope.app.dublincore.view"
+ role="zope.Anonymous" />
+
+ <grantAll role="zope.Manager" />
+
+
+ <!-- setup principals -->
+ <unauthenticatedPrincipal
+ id="zope.anybody"
+ title="Unauthenticated User" />
+
+ <unauthenticatedGroup
+ id="zope.Anybody"
+ title="Unauthenticated Users"
+ />
+
+ <authenticatedGroup
+ id="zope.Authenticated"
+ title="Authenticated Users"
+ />
+
+ <everybodyGroup
+ id="zope.Everybody"
+ title="All Users"
+ />
+
+ <principal
+ id="zope.mgr"
+ title="Manager"
+ login="mgr"
+ password="mgrpw" />
+
+ <grant role="zope.Manager" principal="zope.mgr" />
+
+ <principal
+ id="zope.globalmgr"
+ title="Manager"
+ login="globalmgr"
+ password="globalmgrpw" />
+
+ <grant role="zope.Manager" principal="zope.globalmgr" />
+
+</configure>
Property changes on: zamplugin.control/trunk/src/zamplugin/control/ftesting.zcml
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.control/trunk/src/zamplugin/control/menu.py
===================================================================
--- zamplugin.control/trunk/src/zamplugin/control/menu.py (rev 0)
+++ zamplugin.control/trunk/src/zamplugin/control/menu.py 2008-02-16 16:31:36 UTC (rev 83918)
@@ -0,0 +1,75 @@
+##############################################################################
+#
+# Copyright (c) 2007 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""
+$Id: __init__.py 97 2007-03-29 22:58:27Z rineichen $
+"""
+__docformat__ = "reStructuredText"
+
+import zope.component
+from zope.traversing.api import getRoot
+from zope.app.applicationcontrol.interfaces import IApplicationControl
+
+from z3c.menu.ready2go import item
+
+
+class ProcessMenuItem(item.GlobalMenuItem):
+ """Process menu item."""
+
+ weight = 10
+
+ @property
+ def available(self):
+ """Only available IApplicationControl is available."""
+ root = getRoot(self.context)
+ appControl = IApplicationControl(root, None)
+ if appControl is not None:
+ return True
+ else:
+ return False
+
+ def getURLContext(self):
+ root = getRoot(self.context)
+ return IApplicationControl(root)
+
+
+class AppControlContextMenuItem(item.ContextMenuItem):
+ """Base IApplicationControl context menu item."""
+
+
+class RuntimeMenuItem(AppControlContextMenuItem):
+ """Runtime menu item."""
+
+ viewName = 'index.html'
+ weight = 1
+
+
+class ServerControlMenuItem(AppControlContextMenuItem):
+ """Server control menu item."""
+
+ viewName = 'servercontrol.html'
+ weight = 2
+
+
+class ZODBControlMenuItem(AppControlContextMenuItem):
+ """ZODB control menu item."""
+
+ viewName = 'ZODBControl.html'
+ weight = 3
+
+
+class GenerationsMenuItem(AppControlContextMenuItem):
+ """Generation management menu item."""
+
+ viewName = 'generations.html'
+ weight = 4
Property changes on: zamplugin.control/trunk/src/zamplugin/control/menu.py
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.control/trunk/src/zamplugin/control/menu.zcml
===================================================================
--- zamplugin.control/trunk/src/zamplugin/control/menu.zcml (rev 0)
+++ zamplugin.control/trunk/src/zamplugin/control/menu.zcml 2008-02-16 16:31:36 UTC (rev 83918)
@@ -0,0 +1,52 @@
+<configure
+ xmlns:zope="http://namespaces.zope.org/zope"
+ xmlns="http://namespaces.zope.org/browser"
+ i18n_domain="zam">
+
+ <viewlet
+ name="Process"
+ for="*"
+ class=".menu.ProcessMenuItem"
+ manager="zam.api.menu.IGlobalMenu"
+ layer="zam.api.layer.IZAMBrowserLayer"
+ permission="zope.ManageServices"
+ />
+
+ <!-- context menu item -->
+ <viewlet
+ name="Runtime"
+ for="zope.app.applicationcontrol.interfaces.IApplicationControl"
+ class=".menu.RuntimeMenuItem"
+ manager="zam.api.menu.IContextMenu"
+ layer="zam.api.layer.IZAMBrowserLayer"
+ permission="zope.ManageServices"
+ />
+
+ <viewlet
+ name="Server control"
+ for="zope.app.applicationcontrol.interfaces.IApplicationControl"
+ class=".menu.ServerControlMenuItem"
+ manager="zam.api.menu.IContextMenu"
+ layer="zam.api.layer.IZAMBrowserLayer"
+ permission="zope.ManageServices"
+ />
+
+ <viewlet
+ name="ZODB Control"
+ for="zope.app.applicationcontrol.interfaces.IApplicationControl"
+ class=".menu.ZODBControlMenuItem"
+ manager="zam.api.menu.IContextMenu"
+ layer="zam.api.layer.IZAMBrowserLayer"
+ permission="zope.ManageServices"
+ />
+
+ <viewlet
+ name="Generations"
+ for="zope.app.applicationcontrol.interfaces.IApplicationControl"
+ class=".menu.GenerationsMenuItem"
+ manager="zam.api.menu.IContextMenu"
+ layer="zam.api.layer.IZAMBrowserLayer"
+ permission="zope.ManageServices"
+ />
+
+</configure>
Property changes on: zamplugin.control/trunk/src/zamplugin/control/menu.zcml
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.control/trunk/src/zamplugin/control/namespace.py
===================================================================
--- zamplugin.control/trunk/src/zamplugin/control/namespace.py (rev 0)
+++ zamplugin.control/trunk/src/zamplugin/control/namespace.py 2008-02-16 16:31:36 UTC (rev 83918)
@@ -0,0 +1,55 @@
+##############################################################################
+#
+# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""
+$Id:$
+"""
+__docformat__ = 'restructuredtext'
+
+from zope.component.interfaces import ComponentLookupError
+from zope.traversing import api
+from zope.traversing.interfaces import TraversalError
+from zope.traversing.interfaces import IContainmentRoot
+from zope.traversing.namespace import SimpleHandler
+from zope.app.applicationcontrol.interfaces import IApplicationControl
+
+
+class etc(SimpleHandler):
+
+ def traverse(self, name, ignored):
+ """Fix IApplicationControl lookup.
+
+ The original application control object doesn't use the real root as
+ __parent__, this ends in a mess if it comes to menu concepts.
+ TODO: We can get rid of this package if we fix the bad __parent__ setup
+ in the following zope core packages zope.app.applicationcontrol and
+ zope.traversing.namespace
+ """
+ ob = self.context
+
+ if (name in ('process', 'ApplicationController')
+ and IContainmentRoot.providedBy(ob)):
+ root = api.getRoot(self.context)
+ return IApplicationControl(root)
+
+ if name not in ('site',):
+ raise TraversalError(ob, name)
+
+ method_name = "getSiteManager"
+ method = getattr(ob, method_name, None)
+ if method is None:
+ raise TraversalError(ob, name)
+ try:
+ return method()
+ except ComponentLookupError:
+ raise TraversalError(ob, name)
Property changes on: zamplugin.control/trunk/src/zamplugin/control/namespace.py
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.control/trunk/src/zamplugin/control/plugin.py
===================================================================
--- zamplugin.control/trunk/src/zamplugin/control/plugin.py (rev 0)
+++ zamplugin.control/trunk/src/zamplugin/control/plugin.py 2008-02-16 16:31:36 UTC (rev 83918)
@@ -0,0 +1,38 @@
+##############################################################################
+#
+# Copyright (c) 2007 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""
+$Id: __init__.py 97 2007-03-29 22:58:27Z rineichen $
+"""
+__docformat__ = "reStructuredText"
+
+import zope.component
+
+from z3c.baseregistry import baseregistry
+
+from zam.api.i18n import MessageFactory as _
+from zam.api import plugin
+
+
+ControlBaseRegistry = baseregistry.BaseComponents(
+ zope.component.globalSiteManager, 'zamplugin.control')
+
+
+class ControlPlugin(plugin.BaseRegistryPlugin):
+ """ZAM server control plugin."""
+
+ registry = ControlBaseRegistry
+
+ title = _("Server control plugin")
+
+ description = _("ZAM Control plugin.")
Property changes on: zamplugin.control/trunk/src/zamplugin/control/plugin.py
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.control/trunk/src/zamplugin/control/plugin.zcml
===================================================================
--- zamplugin.control/trunk/src/zamplugin/control/plugin.zcml (rev 0)
+++ zamplugin.control/trunk/src/zamplugin/control/plugin.zcml 2008-02-16 16:31:36 UTC (rev 83918)
@@ -0,0 +1,17 @@
+<configure
+ xmlns="http://namespaces.zope.org/zope"
+ i18n_domain="zam">
+
+ <utility
+ component=".plugin.ControlBaseRegistry"
+ provides="zope.component.interfaces.IComponents"
+ name="zamplugin.control"
+ />
+
+ <utility
+ factory=".plugin.ControlPlugin"
+ provides="zam.api.interfaces.IBaseRegistryPlugin"
+ name="zamplugin.control"
+ />
+
+</configure>
Property changes on: zamplugin.control/trunk/src/zamplugin/control/plugin.zcml
___________________________________________________________________
Name: svn:eol-style
+ native
Added: zamplugin.control/trunk/src/zamplugin/control/tests.py
===================================================================
--- zamplugin.control/trunk/src/zamplugin/control/tests.py (rev 0)
+++ zamplugin.control/trunk/src/zamplugin/control/tests.py 2008-02-16 16:31:36 UTC (rev 83918)
@@ -0,0 +1,33 @@
+##############################################################################
+#
+# Copyright (c) 2007 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""
+$Id: __init__.py 97 2007-03-29 22:58:27Z rineichen $
+"""
+
+import unittest
+from zope.app.testing import functional
+
+functional.defineLayer('TestLayer', 'ftesting.zcml')
+
+
+def test_suite():
+ suite = unittest.TestSuite()
+ s = functional.FunctionalDocFileSuite('README.txt')
+ s.layer = TestLayer
+ suite.addTest(s)
+
+ return suite
+
+if __name__ == '__main__':
+ unittest.main(defaultTest='test_suite')
Property changes on: zamplugin.control/trunk/src/zamplugin/control/tests.py
___________________________________________________________________
Name: svn:eol-style
+ native
More information about the Checkins
mailing list