[Zope3-checkins] SVN: Zope3/branches/jim-adapter/src/zope/ Tools
are deprecated.
Jim Fulton
jim at zope.com
Tue Apr 18 19:56:28 EDT 2006
Log message for revision 67106:
Tools are deprecated.
Changed:
U Zope3/branches/jim-adapter/src/zope/app/authentication/browser/groupfolder.zcml
U Zope3/branches/jim-adapter/src/zope/app/cache/browser/configure.zcml
U Zope3/branches/jim-adapter/src/zope/app/catalog/browser/configure.zcml
U Zope3/branches/jim-adapter/src/zope/app/component/browser/metaconfigure.py
D Zope3/branches/jim-adapter/src/zope/app/component/browser/tools.py
U Zope3/branches/jim-adapter/src/zope/app/error/browser/configure.zcml
U Zope3/branches/jim-adapter/src/zope/app/homefolder/configure.zcml
U Zope3/branches/jim-adapter/src/zope/app/i18n/browser/configure.zcml
U Zope3/branches/jim-adapter/src/zope/app/intid/browser/configure.zcml
U Zope3/branches/jim-adapter/src/zope/app/preference/configure.zcml
U Zope3/branches/jim-adapter/src/zope/app/principalannotation/configure.zcml
U Zope3/branches/jim-adapter/src/zope/app/schema/browser/configure.zcml
U Zope3/branches/jim-adapter/src/zope/app/schemacontent/browser/configure.zcml
U Zope3/branches/jim-adapter/src/zope/app/security/browser/configure.zcml
U Zope3/branches/jim-adapter/src/zope/app/securitypolicy/browser/configure.zcml
U Zope3/branches/jim-adapter/src/zope/app/workflow/browser/configure.zcml
U Zope3/branches/jim-adapter/src/zope/rdb/browser/configure.zcml
-=-
Modified: Zope3/branches/jim-adapter/src/zope/app/authentication/browser/groupfolder.zcml
===================================================================
--- Zope3/branches/jim-adapter/src/zope/app/authentication/browser/groupfolder.zcml 2006-04-18 23:56:24 UTC (rev 67105)
+++ Zope3/branches/jim-adapter/src/zope/app/authentication/browser/groupfolder.zcml 2006-04-18 23:56:26 UTC (rev 67106)
@@ -29,12 +29,6 @@
view="AddGroupInformation.html"
/>
-<tool
- interface="..groupfolder.IGroupFolder"
- title="Groups Folder"
- description="Groups Folder"
- />
-
<addform
schema="..groupfolder.IGroupFolder"
content_factory="..groupfolder.GroupFolder"
Modified: Zope3/branches/jim-adapter/src/zope/app/cache/browser/configure.zcml
===================================================================
--- Zope3/branches/jim-adapter/src/zope/app/cache/browser/configure.zcml 2006-04-18 23:56:24 UTC (rev 67105)
+++ Zope3/branches/jim-adapter/src/zope/app/cache/browser/configure.zcml 2006-04-18 23:56:26 UTC (rev 67106)
@@ -3,12 +3,6 @@
xmlns="http://namespaces.zope.org/browser"
>
- <tool
- interface="zope.app.cache.interfaces.ICache"
- title="Caches"
- description="Caches can be used to make your site run faster."
- />
-
<addMenuItem
title="RAM Cache"
description="A RAM cache is a volatile (in memory) cache"
Modified: Zope3/branches/jim-adapter/src/zope/app/catalog/browser/configure.zcml
===================================================================
--- Zope3/branches/jim-adapter/src/zope/app/catalog/browser/configure.zcml 2006-04-18 23:56:24 UTC (rev 67105)
+++ Zope3/branches/jim-adapter/src/zope/app/catalog/browser/configure.zcml 2006-04-18 23:56:26 UTC (rev 67106)
@@ -4,12 +4,6 @@
i18n_domain="zope"
>
-<tool
- interface="..interfaces.ICatalog"
- title="Catalog"
- description="Objects that support indexed searching"
- />
-
<!-- Allow a catalog to be added to content space -->
<addMenuItem
title="Catalog"
Modified: Zope3/branches/jim-adapter/src/zope/app/component/browser/metaconfigure.py
===================================================================
--- Zope3/branches/jim-adapter/src/zope/app/component/browser/metaconfigure.py 2006-04-18 23:56:24 UTC (rev 67105)
+++ Zope3/branches/jim-adapter/src/zope/app/component/browser/metaconfigure.py 2006-04-18 23:56:26 UTC (rev 67106)
@@ -15,16 +15,12 @@
$Id$
"""
-from zope.component.zcml import utility, interface as ifaceDirective
-from tools import IToolType, IToolConfiguration, ToolConfiguration
+import warnings
+
def tool(_context, interface, title, description=None,
folder="tools", unique=False):
- name = interface.getName()
- permission = 'zope.ManageContent'
- tool = ToolConfiguration(interface, title, description, unique)
-
- ifaceDirective(_context, interface, IToolType)
- utility(_context, IToolConfiguration, tool,
- permission=permission, name=name)
+ warnings.warn("Tools are deprecated and no-longer used. "
+ "The tool directive will go away in Zope 3.5",
+ DeprecationWarning)
Deleted: Zope3/branches/jim-adapter/src/zope/app/component/browser/tools.py
===================================================================
--- Zope3/branches/jim-adapter/src/zope/app/component/browser/tools.py 2006-04-18 23:56:24 UTC (rev 67105)
+++ Zope3/branches/jim-adapter/src/zope/app/component/browser/tools.py 2006-04-18 23:56:26 UTC (rev 67106)
@@ -1,310 +0,0 @@
-##############################################################################
-#
-# 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.
-#
-##############################################################################
-"""Tools View
-
-$Id$
-"""
-import zope.interface
-import zope.event
-from zope.exceptions.interfaces import UserError
-from zope.lifecycleevent import ObjectCreatedEvent
-
-from zope.app import zapi
-from zope.app.component import site, interfaces, browser
-from zope.app.i18n import ZopeMessageFactory as _
-
-
-class IToolType(zope.interface.interfaces.IInterface):
- """Interfaces implementing the tool type are considered tools."""
-
-
-class IToolConfiguration(zope.interface.Interface):
- """This is an object that represents a tool configuration"""
-
- #title
- #
- #description
- #
- #interface
- #
- #unique
-
-
-class ToolConfiguration(object):
- """ """
- zope.interface.implements(IToolConfiguration)
-
- def __init__(self, interface, title, description=None, unique=False,
- folder='tools'):
- self.interface = interface
- self.title = title
- self.description = description
- self.unique = unique
- self.folder = folder
-
-
-class SiteManagementView(browser.ComponentAdding):
- """A Site Management via Tools"""
-
- activeTool = None
- addTool = False
- addName = u''
- renameTool = False
- renameList = []
- newNames = []
- msg = u''
-
- def __init__(self, context, request):
- super(SiteManagementView, self).__init__(context, request)
- if 'activeTool' in request:
- request.response.setCookie('SetActiveTool', request['activeTool'],
- path="/")
- self.activeTool = zapi.getUtility(IToolConfiguration,
- request['activeTool'])
- elif 'SetActiveTool' in request:
- self.activeTool = zapi.getUtility(IToolConfiguration,
- request['SetActiveTool'])
-
- def update(self):
- """ """
- msg = u''
- if "INSTALL-SUBMIT" in self.request:
- self.install()
- msg = _(u'Tools successfully installed.')
- if "UNINSTALL-SUBMIT" in self.request:
- self.uninstall()
- msg = _(u'Tools successfully uninstalled.')
- if "ADD-TOOL-SUBMIT" in self.request:
- try:
- self.action(self.request['type_name'], self.request['id'])
- except UserError, err:
- self.addTool = True
- self.addName = self.contentName
- msg=err
- elif "CANCEL-ADD-TOOL-SUBMIT" in self.request:
- self.request.response.expireCookie('SetActiveTool')
- self.activeTool = None
- elif "ACTIVATE-SUBMIT" in self.request:
- self.changeStatus(interfaces.registration.ActiveStatus)
- msg = _(u'Tools successfully activated.')
- elif "DEACTIVATE-SUBMIT" in self.request:
- self.changeStatus(interfaces.registration.InactiveStatus)
- msg = _(u'Tools successfully deactivated.')
- elif "ADD-SUBMIT" in self.request:
- self.addTool = True
- elif "DELETE-SUBMIT" in self.request:
- if 'selected' in self.request:
- self.delete()
- msg = _(u'Tools successfully deleted.')
- else:
- msg = _(u'No tools selected.')
- elif "RENAME-SUBMIT" in self.request:
- if 'selected' in self.request:
- self.renameList = self.request['selected']
- if 'new_names' in self.request:
- self.renameList = self.request['old_names']
- self.newNames = self.request['new_names']
- try:
- self.rename()
- except UserError, err:
- msg=err
- else:
- msg = _(u'Tools successfully renamed.')
- elif "RENAME-CANCEL-SUBMIT" in self.request:
- self.activeTool = None
- self.msg=msg
- return msg
-
- def getSiteManagementFolder(self, tool):
- """Get the site management folder for this tool."""
- sm = zapi.getSiteManager()
- if not tool.folder in sm:
- folder = site.SiteManagementFolder()
- zope.event.notify(ObjectCreatedEvent(folder))
- sm[tool.folder] = folder
- return sm[tool.folder]
-
- def toolExists(self, interface, name=''):
- """Check whether a tool already exists in this site"""
- sm = zapi.getSiteManager()
- for reg in sm.registeredUtilities():
- if reg.name == name and reg.provided == interface:
- return True
- return False
-
- def getUniqueTools(self):
- """Get unique tools info for display."""
- results = [{'name': tool.interface.getName(),
- 'title': tool.title,
- 'description': tool.description,
- 'exists': self.toolExists(tool.interface)
- }
- for name, tool in zapi.getUtilitiesFor(IToolConfiguration)
- if tool.unique]
- results.sort(lambda x, y: cmp(x['title'], y['title']))
- return results
-
- def getToolInstances(self, tool):
- """Find every registered utility for a given tool configuration."""
- sm = zapi.getSiteManager(self.context)
- return [
- {'name': reg.name,
- 'url': zapi.absoluteURL(reg.component, self.request),
- 'rename': tool is self.activeTool and reg.name in self.renameList,
- 'renameNew': (tool is self.activeTool
- and
- reg.name in self.renameList
- and
- self.newNames
- and
- self.newNames[self.renameList.index(reg.name)]
- ),
- }
- for reg in sm.registeredUtilities()
- if reg.provided.isOrExtends(tool.interface)
- ]
-
- def getTools(self):
- """Return a list of all tools"""
- results = [{'name': tool.interface.getName(),
- 'title': tool.title,
- 'description': tool.description,
- 'instances': self.getToolInstances(tool),
- 'add': tool is self.activeTool and self.addTool,
- 'addname': (tool is self.activeTool
- and
- self.addTool
- and
- self.addName
- ),
- 'rename': tool is self.activeTool and self.renameList,
- 'message': tool is self.activeTool and self.msg,
- }
- for name, tool in zapi.getUtilitiesFor(IToolConfiguration)
- if not tool.unique]
- results.sort(lambda x, y: cmp(x['title'], y['title']))
- return results
-
- def install(self):
- tool_names = self.request['selected']
- for tool_name in tool_names:
- self.activeTool = zapi.getUtility(IToolConfiguration, tool_name)
- type_name = list(self.addingInfo())[0]['extra']['factory']
- self.action(type_name)
- self.activeTool = None
-
- def uninstall(self):
- type_names = self.request['selected']
- self.request.form['selected'] = [u'']
- for name, tool in zapi.getUtilitiesFor(IToolConfiguration):
- if name in type_names:
- self.activeTool = tool
- self.delete()
- self.activeTool = None
-
- def changeStatus(self, status):
- tool = self.activeTool
- regManager = self.context[tool.folder].registrationManager
- names = self.request.form['selected']
- for reg in regManager.values():
- if reg.provided.isOrExtends(tool.interface) and reg.name in names:
- reg.status = status
-
- def delete(self):
- tool = self.activeTool
- sm = self.context
- names = self.request.form['selected']
- for reg in list(sm.registeredUtilities()):
- if reg.provided.isOrExtends(tool.interface) and reg.name in names:
- sm.unregisterUtility(
- reg.component,
- reg.provided,
- reg.name,
- )
- component = reg.component
- del zapi.getParent(component)[zapi.name(component)]
-
- def rename(self):
- sm = self.context
- tool = self.activeTool
- new_names = self.request['new_names']
- old_names = self.request['old_names']
- msg=''
- for reg in list(sm.registeredUtilities()):
- if (reg.provided.isOrExtends(tool.interface) and
- reg.name in old_names
- ):
- old_name=reg.name
- new_name = new_names[old_names.index(old_name)]
- if new_name != reg.name:
- if self.toolExists(self.activeTool.interface,new_name):
- if not msg:
- msg=_(
- u'The given tool name is already being used.')
- else:
- sm.unregisterUtility(
- reg.component,
- reg.provided,
- reg.name,
- )
- sm.registerUtility(
- reg.component,
- reg.provided,
- new_name,
- )
- self.renameList.remove(old_name)
- self.newNames.remove(new_name)
- else:
- self.renameList.remove(old_name)
- self.newNames.remove(new_name)
- if msg:
- raise UserError(msg)
-
- def add(self, content):
- """See zope.app.container.interfaces.IAdding"""
-
- name = self.contentName
- if self.toolExists(self.activeTool.interface, name):
- raise UserError(_(u'The given tool name is already being used.'))
-
- sm = self.context
-
- self.context = self.getSiteManagementFolder(self.activeTool)
-
- self.contentName = '' # always use a unique name
- util = super(SiteManagementView, self).add(content)
- self.contentName = name
-
- # Add registration
- name = not self.activeTool.unique and self.contentName or u''
-
- sm.registerUtility(util, self.activeTool.interface, name)
-
- self.context = sm
- return util
-
- def nextURL(self):
- """See zope.app.container.interfaces.IAdding"""
- return (zapi.absoluteURL(self.context, self.request)
- + '/@@SiteManagement')
-
- def addingInfo(self):
- """See zope.app.container.interfaces.IAdding"""
- sm = self.context
- self.context = self.getSiteManagementFolder(self.activeTool)
- self._addFilterInterface = self.activeTool.interface
- results = super(SiteManagementView, self).addingInfo()
- self.context = sm
- self._addFilterInterface = None
- return results
Modified: Zope3/branches/jim-adapter/src/zope/app/error/browser/configure.zcml
===================================================================
--- Zope3/branches/jim-adapter/src/zope/app/error/browser/configure.zcml 2006-04-18 23:56:24 UTC (rev 67105)
+++ Zope3/branches/jim-adapter/src/zope/app/error/browser/configure.zcml 2006-04-18 23:56:26 UTC (rev 67106)
@@ -38,13 +38,6 @@
description="Error Reporting Utility for Logging Errors"
permission="zope.ManageServices" />
- <tool
- interface="..interfaces.IErrorReportingUtility"
- title="Error Reporting"
- description="Component to record all uncaught errors and exceptions."
- unique="true"
- />
-
<icon name="zmi_icon"
for="zope.app.error.interfaces.IErrorReportingUtility"
file="error.gif" />
Modified: Zope3/branches/jim-adapter/src/zope/app/homefolder/configure.zcml
===================================================================
--- Zope3/branches/jim-adapter/src/zope/app/homefolder/configure.zcml 2006-04-18 23:56:24 UTC (rev 67105)
+++ Zope3/branches/jim-adapter/src/zope/app/homefolder/configure.zcml 2006-04-18 23:56:26 UTC (rev 67106)
@@ -80,12 +80,6 @@
menu="zmi_views" title="Assignments"
/>
- <browser:tool
- interface=".interfaces.IHomeFolderManager"
- title="Home Folder Manager"
- description="A Principal Home Folder Manager"
- />
-
<!-- Registering documentation with API doc -->
<configure
xmlns:apidoc="http://namespaces.zope.org/apidoc"
Modified: Zope3/branches/jim-adapter/src/zope/app/i18n/browser/configure.zcml
===================================================================
--- Zope3/branches/jim-adapter/src/zope/app/i18n/browser/configure.zcml 2006-04-18 23:56:24 UTC (rev 67105)
+++ Zope3/branches/jim-adapter/src/zope/app/i18n/browser/configure.zcml 2006-04-18 23:56:26 UTC (rev 67106)
@@ -2,13 +2,6 @@
xmlns:zope="http://namespaces.zope.org/zope"
xmlns="http://namespaces.zope.org/browser">
- <tool
- interface="zope.i18n.interfaces.ITranslationDomain"
- title="Translation Domains"
- description="Translation Domains allow you to localize your software by
- providing message translations."
- />
-
<pages
permission="zope.ManageServices"
for="zope.i18n.interfaces.ITranslationDomain"
Modified: Zope3/branches/jim-adapter/src/zope/app/intid/browser/configure.zcml
===================================================================
--- Zope3/branches/jim-adapter/src/zope/app/intid/browser/configure.zcml 2006-04-18 23:56:24 UTC (rev 67105)
+++ Zope3/branches/jim-adapter/src/zope/app/intid/browser/configure.zcml 2006-04-18 23:56:26 UTC (rev 67106)
@@ -2,13 +2,6 @@
xmlns:zope="http://namespaces.zope.org/zope"
xmlns="http://namespaces.zope.org/browser">
- <tool
- interface="zope.app.intid.interfaces.IIntIds"
- title="Unique Id Tool"
- description="Unique Ids Tools are used to provide system-wide unique ids
- for documents."
- />
-
<addMenuItem
title="Unique Id Utility"
description="A utility that provides unique ids to objects"
Modified: Zope3/branches/jim-adapter/src/zope/app/preference/configure.zcml
===================================================================
--- Zope3/branches/jim-adapter/src/zope/app/preference/configure.zcml 2006-04-18 23:56:24 UTC (rev 67105)
+++ Zope3/branches/jim-adapter/src/zope/app/preference/configure.zcml 2006-04-18 23:56:26 UTC (rev 67106)
@@ -74,16 +74,6 @@
permission="zope.ManageSite"
/>
- <browser:tool
- interface=".interfaces.IDefaultPreferenceProvider"
- title="Default User Preferences Provider"
- description="
- This component lets you define the local default user
- preferences. The values of this provider are used, if the
- user has not made a selection yet."
- unique="true"
- />
-
<!-- Preferences-specific macros -->
<browser:page
for="*"
Modified: Zope3/branches/jim-adapter/src/zope/app/principalannotation/configure.zcml
===================================================================
--- Zope3/branches/jim-adapter/src/zope/app/principalannotation/configure.zcml 2006-04-18 23:56:24 UTC (rev 67105)
+++ Zope3/branches/jim-adapter/src/zope/app/principalannotation/configure.zcml 2006-04-18 23:56:26 UTC (rev 67106)
@@ -21,13 +21,6 @@
title="Principal Annotation Utility"
description="Stores Annotations for Principals" />
- <browser:tool
- interface=".interfaces.IPrincipalAnnotationUtility"
- title="Principal Annotations"
- description="Stores annotations for any principal."
- unique="true"
- />
-
<subscriber
for="zope.app.appsetup.IDatabaseOpenedEvent"
handler=".bootstrap.bootStrapSubscriber"
Modified: Zope3/branches/jim-adapter/src/zope/app/schema/browser/configure.zcml
===================================================================
--- Zope3/branches/jim-adapter/src/zope/app/schema/browser/configure.zcml 2006-04-18 23:56:24 UTC (rev 67105)
+++ Zope3/branches/jim-adapter/src/zope/app/schema/browser/configure.zcml 2006-04-18 23:56:26 UTC (rev 67106)
@@ -2,12 +2,6 @@
xmlns:zope="http://namespaces.zope.org/zope"
xmlns="http://namespaces.zope.org/browser">
- <tool
- interface="zope.app.schema.interfaces.ISchemaUtility"
- title="Persistent, Local Schemas"
- description="These are schemas that live in the ZODB and are modifiable."
- />
-
<menu
id="add_schema_field"
title="Menu of Fields to be added to a schema." />
Modified: Zope3/branches/jim-adapter/src/zope/app/schemacontent/browser/configure.zcml
===================================================================
--- Zope3/branches/jim-adapter/src/zope/app/schemacontent/browser/configure.zcml 2006-04-18 23:56:24 UTC (rev 67105)
+++ Zope3/branches/jim-adapter/src/zope/app/schemacontent/browser/configure.zcml 2006-04-18 23:56:26 UTC (rev 67106)
@@ -2,13 +2,6 @@
xmlns:zope="http://namespaces.zope.org/zope"
xmlns="http://namespaces.zope.org/browser">
- <tool
- interface="zope.app.schemacontent.interfaces.IContentComponentDefinition"
- title="Content Component Definition"
- description="Content Component Definitions are used to declare
- schema-based content objects."
- />
-
<!-- Content Component Definition -->
<!-- Menu entry for "Add Utility" menu -->
Modified: Zope3/branches/jim-adapter/src/zope/app/security/browser/configure.zcml
===================================================================
--- Zope3/branches/jim-adapter/src/zope/app/security/browser/configure.zcml 2006-04-18 23:56:24 UTC (rev 67105)
+++ Zope3/branches/jim-adapter/src/zope/app/security/browser/configure.zcml 2006-04-18 23:56:26 UTC (rev 67106)
@@ -17,13 +17,6 @@
factory="zope.app.security.browser.principalterms.PrincipalTerms"
/>
- <browser:tool
- interface="..interfaces.IAuthentication"
- title="Authentication"
- description="Authenticates Principals."
- unique="true"
- />
-
<browser:page
name="failsafelogin.html"
for="*"
@@ -58,12 +51,6 @@
permission="zope.Public"
/>
- <browser:tool
- interface="..interfaces.IPermission"
- title="Permission"
- description="Security Permission"
- />
-
<browser:addform
name="AddPermission.html"
schema="..interfaces.IPermission"
Modified: Zope3/branches/jim-adapter/src/zope/app/securitypolicy/browser/configure.zcml
===================================================================
--- Zope3/branches/jim-adapter/src/zope/app/securitypolicy/browser/configure.zcml 2006-04-18 23:56:24 UTC (rev 67105)
+++ Zope3/branches/jim-adapter/src/zope/app/securitypolicy/browser/configure.zcml 2006-04-18 23:56:26 UTC (rev 67106)
@@ -3,13 +3,6 @@
xmlns="http://namespaces.zope.org/browser"
i18n_domain="zope">
- <tool
- interface="..interfaces.IRole"
- title="Role"
- description="Roles are used to combine permissions and can be assigned
- to principals."
- />
-
<!-- RadioWidget for build a matrix for granting permissions -->
<zope:view
type="zope.publisher.interfaces.browser.IBrowserRequest"
Modified: Zope3/branches/jim-adapter/src/zope/app/workflow/browser/configure.zcml
===================================================================
--- Zope3/branches/jim-adapter/src/zope/app/workflow/browser/configure.zcml 2006-04-18 23:56:24 UTC (rev 67105)
+++ Zope3/branches/jim-adapter/src/zope/app/workflow/browser/configure.zcml 2006-04-18 23:56:26 UTC (rev 67106)
@@ -3,13 +3,6 @@
xmlns="http://namespaces.zope.org/browser"
>
- <tool
- interface="zope.app.workflow.interfaces.IProcessDefinition"
- title="Workflows"
- description="Workflow Process Definitions define a particular workflow
- for an object."
- />
-
<!-- Process Definition Import/Export -->
<page
Modified: Zope3/branches/jim-adapter/src/zope/rdb/browser/configure.zcml
===================================================================
--- Zope3/branches/jim-adapter/src/zope/rdb/browser/configure.zcml 2006-04-18 23:56:24 UTC (rev 67105)
+++ Zope3/branches/jim-adapter/src/zope/rdb/browser/configure.zcml 2006-04-18 23:56:26 UTC (rev 67106)
@@ -2,13 +2,6 @@
xmlns:zope="http://namespaces.zope.org/zope"
xmlns="http://namespaces.zope.org/browser">
- <tool
- interface="zope.rdb.interfaces.IZopeDatabaseAdapter"
- title="Database Adapter"
- description="Database Adapters are used to connect to external
- relational databases."
- />
-
<!-- ZopeDatabaseAdapter default views -->
<!-- TODO: need an index.html that gives the source and is the def view -->
More information about the Zope3-Checkins
mailing list