[Zope3-checkins] CVS: Zope3/src/zope/app/browser/services/utility - addconfiguration.pt:1.1.2.1 useconfiguration.pt:1.1.2.1 useconfiguration.py:1.1.2.1
Guido van Rossum
guido@python.org
Mon, 17 Mar 2003 11:16:50 -0500
Update of /cvs-repository/Zope3/src/zope/app/browser/services/utility
In directory cvs.zope.org:/tmp/cvs-serv23553
Added Files:
Tag: local-utility-branch
addconfiguration.pt useconfiguration.pt useconfiguration.py
Log Message:
Three files that weren't added by mistake.
=== Added File Zope3/src/zope/app/browser/services/utility/addconfiguration.pt ===
<html metal:use-macro="context/@@standard_macros/page">
<body>
<div metal:fill-slot="body">
<form action="addConfiguration_action.html">
<div class="row">
<div class="label">Utility name</div>
<div class="field"><input type="text" name="name"></div>
<br>
<div class="label">Interface</div>
<select name="interface">
<option tal:repeat="interface view/listInterfaces"
tal:attributes="value interface/id"
tal:content="interface/name">IFoo</option>
</select>
<br>
<input type="reset" value="Reset form">
<input type="submit" value="Submit">
</div>
</form>
</div>
</body>
</html>
=== Added File Zope3/src/zope/app/browser/services/utility/useconfiguration.pt ===
<html metal:use-macro="context/@@standard_macros/page">
<body>
<div metal:fill-slot="body">
<p>Configurations for this utility:</p>
<ul>
<li tal:repeat="use view/uses">
<a href="."
tal:attributes="href use/url">
<span tal:replace="use/interface">IFoo</span>
<span tal:condition="use/name">
named <span tal:replace="use/name" />
</span>
</a>
(<span tal:replace="use/status">Active</span>)
</li>
</ul>
<p><a href="addConfiguration.html">Add a configuration for this utility</a>
</div>
</body>
</html>
=== Added File Zope3/src/zope/app/browser/services/utility/useconfiguration.py ===
##############################################################################
#
# Copyright (c) 2003 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (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.
#
##############################################################################
"""Use-Configuration view for utilities.
$Id: useconfiguration.py,v 1.1.2.1 2003/03/17 16:16:48 gvanrossum Exp $
"""
from zope.component import getAdapter, getView
from zope.app.interfaces.services.configuration import IUseConfiguration
from zope.app.traversing import traverse, getPhysicalPathString
from zope.publisher.browser import BrowserView
from zope.interface.implements import flattenInterfaces
from zope.app.interfaces.services.configuration \
import Unregistered, Registered, Active
from zope.app.services.utility import UtilityConfiguration
from zope.proxy.introspection import removeAllProxies
from zope.proxy.context import getWrapperContainer
from zope.app.interfaces.container import IZopeContainer
class UseConfiguration(BrowserView):
def uses(self):
component = self.context
useconfig = getAdapter(component, IUseConfiguration)
result = []
for path in useconfig.usages():
config = traverse(component, path)
url = getView(config, 'absolute_url', self.request)
result.append({'name': config.name,
'interface': config.interface.__name__,
'path': path,
'url': url(),
'status': config.status,
})
return result
class AddConfiguration(BrowserView):
def action(self, name, interface=None):
if interface is None:
raise UserError("you must select an interface")
path = getPhysicalPathString(self.context)
configure = traverse(getWrapperContainer(self.context), 'configure')
container = getAdapter(configure, IZopeContainer)
config = UtilityConfiguration(name, interface, path)
name = container.setObject("", config)
config = container[name]
config.status = Active # XXX Really? Always activate it?
self.request.response.redirect("@@useConfiguration.html")
def listInterfaces(self):
bare = removeAllProxies(self.context)
return [{'id': i.__module__ + "." + i.__name__, 'name': i.__name__}
for i in flattenInterfaces(bare.__implements__)
if i.names(True)]