[Zope3-checkins] CVS: Zope3/src/zope/app/services - auth.py:1.12.2.1 configuration.py:1.6.4.3 role.py:1.2.6.1 service.py:1.8.4.5
Guido van Rossum
guido@python.org
Thu, 27 Feb 2003 20:43:59 -0500
Update of /cvs-repository/Zope3/src/zope/app/services
In directory cvs.zope.org:/tmp/cvs-serv6783/src/zope/app/services
Modified Files:
Tag: use-config-branch
auth.py configuration.py role.py service.py
Log Message:
Checkpoint commit on this branch -- something's still flakey, but I
can't figure out why and I may not get back to this until Monday.
Redid the __init__ of ServiceConfiguration and its ancestors to get
rid of the unnecessary *args / **kwds business, and added an optional
context argument. When context is given, it is used to traverse to
the service object and we ensure that it implements IUseConfigurable
and IService -- all configured services must implement these. When
context is not given, we don't perform this check -- this only happens
in the test suite.
Fixed various places that need to pass a context argument, and fixed
some services to implement the required interfaces.
=== Zope3/src/zope/app/services/auth.py 1.12 => 1.12.2.1 ===
--- Zope3/src/zope/app/services/auth.py:1.12 Tue Feb 11 21:17:34 2003
+++ Zope3/src/zope/app/services/auth.py Thu Feb 27 20:43:28 2003
@@ -37,6 +37,7 @@
from zope.app.security.grants.principalrole import principalRoleManager
from zope.app.component.nextservice import getNextService
from zope.proxy.context import ContextMethod
+from zope.app.interfaces.services.interfaces import ISimpleService
class DuplicateLogin(Exception):
@@ -48,7 +49,7 @@
class AuthenticationService(Persistent):
- __implements__ = IAuthenticationService, IContainer
+ __implements__ = IAuthenticationService, IContainer, ISimpleService
def __init__(self):
self._usersbylogin = OOBTree()
=== Zope3/src/zope/app/services/configuration.py 1.6.4.2 => 1.6.4.3 ===
--- Zope3/src/zope/app/services/configuration.py:1.6.4.2 Mon Feb 24 15:36:35 2003
+++ Zope3/src/zope/app/services/configuration.py Thu Feb 27 20:43:28 2003
@@ -287,9 +287,9 @@
__implements__ = INamedConfiguration, SimpleConfiguration.__implements__
- def __init__(self, name, *args, **kw):
+ def __init__(self, name):
self.name = name
- super(NamedConfiguration, self).__init__(*args, **kw)
+ super(NamedConfiguration, self).__init__()
class NamedComponentConfiguration(NamedConfiguration):
@@ -303,14 +303,12 @@
__implements__ = (INamedComponentConfiguration,
NamedConfiguration.__implements__, IAddNotifiable)
- # XXX is all this '*args, **kw' business the right way to use super?
-
- def __init__(self, name, component_path, permission=None, *args, **kw):
+ def __init__(self, name, component_path, permission=None):
self.componentPath = component_path
if permission == 'zope.Public':
permission = CheckerPublic
self.permission = permission
- super(NamedComponentConfiguration, self).__init__(name, *args, **kw)
+ super(NamedComponentConfiguration, self).__init__(name)
def getComponent(wrapped_self):
service_manager = getServiceManager(wrapped_self)
=== Zope3/src/zope/app/services/role.py 1.2 => 1.2.6.1 ===
--- Zope3/src/zope/app/services/role.py:1.2 Wed Dec 25 09:13:19 2002
+++ Zope3/src/zope/app/services/role.py Thu Feb 27 20:43:28 2003
@@ -36,13 +36,14 @@
from zope.app.interfaces.container import IContainer
from zope.proxy.context import ContextMethod
from zope.app.component.nextservice import getNextService
+from zope.app.interfaces.services.interfaces import ISimpleService
class ILocalRoleService(IRoleService, IContainer):
"""TTW manageable role service"""
class RoleService(BTreeContainer):
- __implements__ = ILocalRoleService
+ __implements__ = ILocalRoleService, ISimpleService
def getRole(wrapped_self, rid):
'''See interface IRoleService'''
=== Zope3/src/zope/app/services/service.py 1.8.4.4 => 1.8.4.5 ===
--- Zope3/src/zope/app/services/service.py:1.8.4.4 Thu Feb 27 12:44:02 2003
+++ Zope3/src/zope/app/services/service.py Thu Feb 27 20:43:28 2003
@@ -262,8 +262,25 @@
label = "Service"
- def __init__(self, *args, **kw):
- super(ServiceConfiguration, self).__init__(*args, **kw)
+ def __init__(self, name, path, context=None):
+ super(ServiceConfiguration, self).__init__(name, path)
+ if context is not None:
+ # Check that the object implements stuff we need
+ wrapped_self = ContextWrapper(self, context)
+ # XXX This try/except shouldn't be here; but some tests in
+ # zope.app.browser.services.tests.test_addservicecontainer
+ # fail at this point; I need help to figure out why.
+ try:
+ service = wrapped_self.getComponent()
+ except TypeError:
+ return # Couldn't get the service; assuming it's a test
+ if not IService.isImplementedBy(service):
+ raise TypeError("service %r doesn't implement IService" %
+ service)
+ if not IUseConfigurable.isImplementedBy(service):
+ raise TypeError("service %r doesn't implement "
+ "IUseConfigurable" % service)
+ # Else, this must be a hopeful test invocation
def getInterface(self):
service_manager = getServiceManager(self)
@@ -273,10 +290,6 @@
def activated(self):
service = self.getComponent()
- if not IService.isImplementedBy(service):
- raise TypeError, "service %r doesn't implement IService" % service
- if not IUseConfigurable.isImplementedBy(service):
- raise TypeError, "service %r doesn't implement IUseConfigurable" % service
if IBindingAware.isImplementedBy(service):
service.bound(self.name)