[Checkins] SVN: Products.CMFCore/trunk/ - converted several tools into utilities
Yvo Schubbe
y.2011 at wcm-solutions.de
Tue Sep 13 04:19:30 EST 2011
Log message for revision 122784:
- converted several tools into utilities
Changed:
UU Products.CMFCore/trunk/Products/CMFCore/ActionInformation.py
U Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt
UU Products.CMFCore/trunk/Products/CMFCore/CachingPolicyManager.py
UU Products.CMFCore/trunk/Products/CMFCore/CookieCrumbler.py
UU Products.CMFCore/trunk/Products/CMFCore/DiscussionTool.py
UU Products.CMFCore/trunk/Products/CMFCore/Expression.py
U Products.CMFCore/trunk/Products/CMFCore/MemberDataTool.py
U Products.CMFCore/trunk/Products/CMFCore/MembershipTool.py
UU Products.CMFCore/trunk/Products/CMFCore/RegistrationTool.py
UU Products.CMFCore/trunk/Products/CMFCore/SkinsTool.py
U Products.CMFCore/trunk/Products/CMFCore/configure.zcml
UU Products.CMFCore/trunk/Products/CMFCore/exportimport/cookieauth.py
U Products.CMFCore/trunk/Products/CMFCore/exportimport/memberdata.py
U Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_cookieauth.py
U Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_mailhost.py
U Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_memberdata.py
U Products.CMFCore/trunk/Products/CMFCore/tests/test_ActionInformation.py
U Products.CMFCore/trunk/Products/CMFCore/tests/test_ActionProviderBase.py
U Products.CMFCore/trunk/Products/CMFCore/tests/test_ActionsTool.py
U Products.CMFCore/trunk/Products/CMFCore/tests/test_CachingPolicyManager.py
U Products.CMFCore/trunk/Products/CMFCore/tests/test_DynamicType.py
U Products.CMFCore/trunk/Products/CMFCore/tests/test_Expression.py
U Products.CMFCore/trunk/Products/CMFCore/tests/test_MemberDataTool.py
U Products.CMFCore/trunk/Products/CMFCore/tests/test_MembershipTool.py
U Products.CMFCore/trunk/setup.py
-=-
Modified: Products.CMFCore/trunk/Products/CMFCore/ActionInformation.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/ActionInformation.py 2011-09-13 09:02:57 UTC (rev 122783)
+++ Products.CMFCore/trunk/Products/CMFCore/ActionInformation.py 2011-09-13 09:19:30 UTC (rev 122784)
@@ -11,8 +11,6 @@
#
##############################################################################
""" Information about customizable actions.
-
-$Id$
"""
from UserDict import UserDict
@@ -24,6 +22,7 @@
from OFS.OrderedFolder import OrderedFolder
from OFS.PropertyManager import PropertyManager
from OFS.SimpleItem import SimpleItem
+from zope.component import getUtility
from zope.i18nmessageid import Message
from zope.interface import implements
@@ -31,6 +30,7 @@
from Products.CMFCore.interfaces import IAction
from Products.CMFCore.interfaces import IActionCategory
from Products.CMFCore.interfaces import IActionInfo
+from Products.CMFCore.interfaces import IMembershipTool
from Products.CMFCore.permissions import View
from Products.CMFCore.utils import _checkPermission
from Products.CMFCore.utils import getToolByName
@@ -572,9 +572,9 @@
def __init__( self, tool, folder, object=None ):
self.portal = portal = aq_parent(aq_inner(tool))
- membership = getToolByName(tool, 'portal_membership')
- self.isAnonymous = membership.isAnonymousUser()
- self.user_id = membership.getAuthenticatedMember().getId()
+ mtool = getUtility(IMembershipTool)
+ self.isAnonymous = mtool.isAnonymousUser()
+ self.user_id = mtool.getAuthenticatedMember().getId()
self.portal_url = portal.absolute_url()
if folder is not None:
self.folder_url = folder.absolute_url()
Property changes on: Products.CMFCore/trunk/Products/CMFCore/ActionInformation.py
___________________________________________________________________
Deleted: svn:keywords
- Author Date Id Revision
Modified: Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt 2011-09-13 09:02:57 UTC (rev 122783)
+++ Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt 2011-09-13 09:19:30 UTC (rev 122784)
@@ -4,6 +4,10 @@
2.3.0-alpha (unreleased)
------------------------
+- tools: Converted several tools into utilities.
+ CookieCrumbler, MemberDataTool, MembershipTool and RegistrationTool are now
+ local utilities.
+
- MemberDataTool: Changed property modes to 'w' and added 'fullname' property.
- setup handlers: Improved content type registry handler.
Modified: Products.CMFCore/trunk/Products/CMFCore/CachingPolicyManager.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/CachingPolicyManager.py 2011-09-13 09:02:57 UTC (rev 122783)
+++ Products.CMFCore/trunk/Products/CMFCore/CachingPolicyManager.py 2011-09-13 09:19:30 UTC (rev 122784)
@@ -11,8 +11,6 @@
#
##############################################################################
"""Caching tool implementation.
-
-$Id$
"""
from AccessControl.SecurityInfo import ClassSecurityInfo
@@ -29,18 +27,19 @@
from Persistence import PersistentMapping
from Products.PageTemplates.Expressions import getEngine
from Products.PageTemplates.Expressions import SecureModuleImporter
+from zope.component import getUtility
from zope.container.interfaces import IObjectMovedEvent
from zope.interface import implements
from Products.CMFCore.Expression import Expression
from Products.CMFCore.interfaces import ICachingPolicy
from Products.CMFCore.interfaces import ICachingPolicyManager
+from Products.CMFCore.interfaces import IMembershipTool
from Products.CMFCore.permissions import ManagePortal
from Products.CMFCore.permissions import View
from Products.CMFCore.utils import _dtmldir
from Products.CMFCore.utils import _setCacheHeaders
from Products.CMFCore.utils import _ViewEmulator
-from Products.CMFCore.utils import getToolByName
from Products.CMFCore.utils import registerToolInterface
# This is lame :(
@@ -60,11 +59,11 @@
Construct an expression context for TALES expressions,
for use by CachingPolicy objects.
"""
- pm = getToolByName( content, 'portal_membership', None )
- if not pm or pm.isAnonymousUser():
+ mtool = getUtility(IMembershipTool)
+ if mtool.isAnonymousUser():
member = None
else:
- member = pm.getAuthenticatedMember()
+ member = mtool.getAuthenticatedMember()
if time is None:
time = DateTime()
@@ -876,8 +875,7 @@
return cache
-
-InitializeClass( CachingPolicyManager )
+InitializeClass(CachingPolicyManager)
registerToolInterface('caching_policy_manager', ICachingPolicyManager)
Property changes on: Products.CMFCore/trunk/Products/CMFCore/CachingPolicyManager.py
___________________________________________________________________
Deleted: svn:keywords
- Author Date Id Revision
Modified: Products.CMFCore/trunk/Products/CMFCore/CookieCrumbler.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/CookieCrumbler.py 2011-09-13 09:02:57 UTC (rev 122783)
+++ Products.CMFCore/trunk/Products/CMFCore/CookieCrumbler.py 2011-09-13 09:19:30 UTC (rev 122784)
@@ -11,8 +11,6 @@
#
##############################################################################
""" Cookie Crumbler: Enable cookies for non-cookie user folders.
-
-$Id$
"""
from base64 import encodestring, decodestring
@@ -25,16 +23,20 @@
from App.class_init import InitializeClass
from App.special_dtml import HTMLFile
from DateTime.DateTime import DateTime
+from OFS.interfaces import IObjectWillBeMovedEvent
+from OFS.PropertyManager import PropertyManager
from OFS.SimpleItem import SimpleItem
-from OFS.PropertyManager import PropertyManager
-from OFS.interfaces import IObjectWillBeMovedEvent
from zope.container.interfaces import IObjectMovedEvent
+from zope.globalrequest import getRequest
from zope.interface import implements
from ZPublisher import BeforeTraverse
+from ZPublisher.BaseRequest import RequestContainer
from ZPublisher.HTTPRequest import HTTPRequest
from Products.CMFCore.interfaces import ICookieCrumbler
-from Products.CMFCore.utils import UniqueObject, getToolByName
+from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.utils import registerToolInterface
+from Products.CMFCore.utils import UniqueObject
# Constants.
@@ -137,10 +139,8 @@
security.declarePrivate('defaultSetAuthCookie')
def defaultSetAuthCookie(self, resp, cookie_name, cookie_value):
- # XXX: this method violates the rules for tools/utilities:
- # it depends on self.REQUEST
kw = {}
- req = getattr(self, 'REQUEST', None)
+ req = getRequest()
if req is not None and req.get('SERVER_URL', '').startswith('https:'):
# Ask the client to send back the cookie only in SSL mode
kw['secure'] = 'y'
@@ -266,7 +266,7 @@
Updates cookie credentials if user details are changed.
"""
if request is None:
- request = self.REQUEST # BBB for Membershiptool
+ request = getRequest() # BBB for Membershiptool
reponse = request['RESPONSE']
ac = encodestring('%s:%s' % (name, pw)).rstrip()
method = self.getCookieMethod('setAuthCookie',
@@ -280,8 +280,10 @@
"""
target = None
if response is None:
- response = self.REQUEST['RESPONSE'] # BBB for App.Management
- atool = getToolByName(self, 'portal_actions')
+ response = getRequest()['RESPONSE'] # BBB for App.Management
+ request_container = RequestContainer(REQUEST=getRequest())
+ rich_context = self.__of__(request_container)
+ atool = getToolByName(rich_context, 'portal_actions')
target = atool.getActionInfo('user/logout')['url']
method = self.getCookieMethod('expireAuthCookie',
self.defaultExpireAuthCookie)
@@ -300,6 +302,7 @@
return id
InitializeClass(CookieCrumbler)
+registerToolInterface('cookie_authentication', ICookieCrumbler)
def handleCookieCrumblerEvent(ob, event):
Property changes on: Products.CMFCore/trunk/Products/CMFCore/CookieCrumbler.py
___________________________________________________________________
Deleted: svn:keywords
- Author Date Id Revision
Modified: Products.CMFCore/trunk/Products/CMFCore/DiscussionTool.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/DiscussionTool.py 2011-09-13 09:02:57 UTC (rev 122783)
+++ Products.CMFCore/trunk/Products/CMFCore/DiscussionTool.py 2011-09-13 09:19:30 UTC (rev 122784)
@@ -11,8 +11,6 @@
#
##############################################################################
""" Basic portal discussion access tool.
-
-$Id$
"""
import urllib
@@ -23,9 +21,11 @@
from App.special_dtml import DTMLFile
from DateTime.DateTime import DateTime
from OFS.SimpleItem import SimpleItem
+from zope.component import getUtility
from zope.interface import implements
from Products.CMFCore.ActionProviderBase import ActionProviderBase
+from Products.CMFCore.interfaces import IMembershipTool
from Products.CMFCore.interfaces import IOldstyleDiscussable
from Products.CMFCore.interfaces import IOldstyleDiscussionTool
from Products.CMFCore.permissions import AccessContentsInformation
@@ -66,8 +66,8 @@
# It is not yet clear to me what the correct location for this hook is
# Find the folder designated for replies, creating if missing
- membershiptool = getToolByName(self.content, 'portal_membership')
- home = membershiptool.getHomeFolder()
+ mtool = getUtility(IMembershipTool)
+ home = mtool.getHomeFolder()
if not hasattr(home, 'Correspondence'):
home.manage_addPortalFolder('Correspondence')
location = home.Correspondence
Property changes on: Products.CMFCore/trunk/Products/CMFCore/DiscussionTool.py
___________________________________________________________________
Deleted: svn:keywords
- Author Date Id Revision
Modified: Products.CMFCore/trunk/Products/CMFCore/Expression.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/Expression.py 2011-09-13 09:02:57 UTC (rev 122783)
+++ Products.CMFCore/trunk/Products/CMFCore/Expression.py 2011-09-13 09:19:30 UTC (rev 122784)
@@ -11,8 +11,6 @@
#
##############################################################################
""" Expressions in a web-configurable workflow.
-
-$Id$
"""
from AccessControl.SecurityInfo import ClassSecurityInfo
@@ -23,7 +21,9 @@
from Persistence import Persistent
from Products.PageTemplates.Expressions import getEngine
from Products.PageTemplates.Expressions import SecureModuleImporter
+from zope.component import getUtility
+from Products.CMFCore.interfaces import IMembershipTool
from Products.CMFCore.utils import getToolByName
@@ -89,15 +89,15 @@
'''
An expression context provides names for TALES expressions.
'''
- pm = getToolByName(portal, 'portal_membership')
+ mtool = getUtility(IMembershipTool)
if object is None:
object_url = ''
else:
object_url = object.absolute_url()
- if pm.isAnonymousUser():
+ if mtool.isAnonymousUser():
member = None
else:
- member = pm.getAuthenticatedMember()
+ member = mtool.getAuthenticatedMember()
data = {
'object_url': object_url,
'folder_url': folder.absolute_url(),
Property changes on: Products.CMFCore/trunk/Products/CMFCore/Expression.py
___________________________________________________________________
Deleted: svn:keywords
- Author Date Id Revision
Modified: Products.CMFCore/trunk/Products/CMFCore/MemberDataTool.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/MemberDataTool.py 2011-09-13 09:02:57 UTC (rev 122783)
+++ Products.CMFCore/trunk/Products/CMFCore/MemberDataTool.py 2011-09-13 09:19:30 UTC (rev 122784)
@@ -27,17 +27,20 @@
from Persistence import Persistent
from zope.component import adapts
from zope.component import getMultiAdapter
+from zope.component import getUtility
+from zope.component import queryUtility
from zope.interface import implements
from ZPublisher.Converters import type_converters
from Products.CMFCore.exceptions import BadRequest
from Products.CMFCore.interfaces import IMember
from Products.CMFCore.interfaces import IMemberDataTool
+from Products.CMFCore.interfaces import IMembershipTool
+from Products.CMFCore.interfaces import IRegistrationTool
from Products.CMFCore.permissions import ManagePortal
from Products.CMFCore.permissions import SetOwnProperties
from Products.CMFCore.permissions import ViewManagementScreens
from Products.CMFCore.utils import _dtmldir
-from Products.CMFCore.utils import getToolByName
from Products.CMFCore.utils import registerToolInterface
from Products.CMFCore.utils import UniqueObject
@@ -100,12 +103,10 @@
Return the number of members stored in the _members
BTree and some other useful info
'''
- # XXX: this method violates the rules for tools/utilities:
- # it depends on a non-utility tool
- membertool = getToolByName(self, 'portal_membership')
- members = self._members
- user_list = membertool.listMemberIds()
- member_list = members.keys()
+ mtool = getUtility(IMembershipTool)
+ members = self._members
+ user_list = mtool.listMemberIds()
+ member_list = members.keys()
member_count = len(members)
orphan_count = 0
@@ -119,14 +120,12 @@
security.declarePrivate('searchMemberData')
def searchMemberData(self, search_param, search_term, attributes=()):
""" Search members. """
- # XXX: this method violates the rules for tools/utilities:
- # it depends on a non-utility tool
res = []
if not search_param:
return res
- membership = getToolByName(self, 'portal_membership')
+ mtool = getUtility(IMembershipTool)
if len(attributes) == 0:
attributes = ('id', 'email')
@@ -135,7 +134,7 @@
search_param = 'id'
for user_id in self._members.keys():
- u = membership.getMemberById(user_id)
+ u = mtool.getMemberById(user_id)
if u is not None:
memberProperty = u.getProperty
@@ -157,14 +156,12 @@
security.declarePrivate( 'searchMemberDataContents' )
def searchMemberDataContents( self, search_param, search_term ):
""" Search members. This method will be deprecated soon. """
- # XXX: this method violates the rules for tools/utilities:
- # it depends on a non-utility tool
res = []
if search_param == 'username':
search_param = 'id'
- mtool = getToolByName(self, 'portal_membership')
+ mtool = getUtility(IMembershipTool)
for member_id in self._members.keys():
@@ -186,11 +183,9 @@
def pruneMemberDataContents(self):
""" Delete data contents of all members not listet in acl_users.
"""
- # XXX: this method violates the rules for tools/utilities:
- # it depends on a non-utility tool
- membertool = getToolByName(self, 'portal_membership')
+ mtool = getUtility(IMembershipTool)
members = self._members
- user_list = membertool.listMemberIds()
+ user_list = mtool.listMemberIds()
for member_id in list(members.keys()):
if member_id not in user_list:
@@ -267,14 +262,12 @@
Accepts either keyword arguments or a mapping for the "properties"
argument.
'''
- # XXX: this method violates the rules for tools/utilities:
- # it depends on a non-utility tool
- mtool = getToolByName(self._tool, 'portal_membership')
+ mtool = getUtility(IMembershipTool)
if not mtool.isMemberAccessAllowed(self._user.getId()):
raise BadRequest(u'Only own properties can be set.')
if properties is None:
properties = kw
- rtool = getToolByName(self._tool, 'portal_registration', None)
+ rtool = queryUtility(IRegistrationTool)
if rtool is not None:
failMessage = rtool.testPropertiesValidity(properties, self)
if failMessage is not None:
Modified: Products.CMFCore/trunk/Products/CMFCore/MembershipTool.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/MembershipTool.py 2011-09-13 09:02:57 UTC (rev 122783)
+++ Products.CMFCore/trunk/Products/CMFCore/MembershipTool.py 2011-09-13 09:19:30 UTC (rev 122784)
@@ -30,11 +30,15 @@
from Persistence import PersistentMapping
from ZODB.POSException import ConflictError
from zope.component import getUtility
+from zope.component import queryUtility
from zope.interface import implements
from Products.CMFCore.exceptions import AccessControl_Unauthorized
from Products.CMFCore.exceptions import BadRequest
+from Products.CMFCore.interfaces import ICookieCrumbler
+from Products.CMFCore.interfaces import IMemberDataTool
from Products.CMFCore.interfaces import IMembershipTool
+from Products.CMFCore.interfaces import IRegistrationTool
from Products.CMFCore.interfaces import ISiteRoot
from Products.CMFCore.permissions import AccessContentsInformation
from Products.CMFCore.permissions import ChangeLocalRoles
@@ -45,7 +49,7 @@
from Products.CMFCore.permissions import View
from Products.CMFCore.utils import _checkPermission
from Products.CMFCore.utils import _dtmldir
-from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.utils import registerToolInterface
from Products.CMFCore.utils import UniqueObject
logger = logging.getLogger('CMFCore.MembershipTool')
@@ -92,13 +96,11 @@
def setPassword(self, password, domains=None, REQUEST=None):
'''Allows the authenticated member to set his/her own password.
'''
- # XXX: this method violates the rules for tools/utilities:
- # it depends on a non-utility tool
- registration = getToolByName(self, 'portal_registration', None)
if not self.isAnonymousUser():
member = self.getAuthenticatedMember()
- if registration:
- failMessage = registration.testPasswordValidity(password)
+ rtool = queryUtility(IRegistrationTool)
+ if rtool is not None:
+ failMessage = rtool.testPasswordValidity(password)
if failMessage is not None:
raise BadRequest(failMessage)
member.setSecurityProfile(password=password, domains=domains)
@@ -123,8 +125,6 @@
Provides an opportunity for a portal_memberdata tool to retrieve and
store member data independently of the user object.
"""
- # XXX: this method violates the rules for tools/utilities:
- # it depends on a non-utility tool
b = getattr(u, 'aq_base', None)
if b is None:
# u isn't wrapped at all. Wrap it in self.acl_users.
@@ -143,7 +143,7 @@
portal_role not in u.roles):
u.roles.append(portal_role)
- mdtool = getToolByName(self, 'portal_memberdata', None)
+ mdtool = queryUtility(IMemberDataTool)
if mdtool is not None:
try:
u = mdtool.wrapUser(u)
@@ -338,12 +338,9 @@
name = user.getUserName()
# this really does need to be the user name, and not the user id,
# because we're dealing with authentication credentials
- try:
- cctool = getToolByName(self, 'cookie_authentication')
+ cctool = queryUtility(ICookieCrumbler)
+ if cctool is not None:
cctool.credentialsChanged(user, name, password, REQUEST)
- except AttributeError:
- # No CookieCrumbler
- pass
security.declareProtected(ManageUsers, 'getMemberById')
def getMemberById(self, id):
@@ -401,14 +398,13 @@
return map(self.wrapUser, self.acl_users.getUsers())
security.declareProtected(ListPortalMembers, 'searchMembers')
- def searchMembers( self, search_param, search_term ):
+ def searchMembers(self, search_param, search_term):
""" Search the membership """
- # XXX: this method violates the rules for tools/utilities:
- # it depends on a non-utility tool
- md = getToolByName( self, 'portal_memberdata' )
+ mdtool = queryUtility(IMemberDataTool)
+ if mdtool is not None:
+ return mdtool.searchMemberData(search_param, search_term)
+ return None
- return md.searchMemberData( search_param, search_term )
-
security.declareProtected(View, 'getCandidateLocalRoles')
def getCandidateLocalRoles(self, obj):
""" What local roles can I assign?
@@ -480,9 +476,6 @@
delete_localroles=1, REQUEST=None):
""" Delete members specified by member_ids.
"""
- # XXX: this method violates the rules for tools/utilities:
- # it depends on a non-utility tool
-
# Delete members in acl_users.
acl_users = self.acl_users
if _checkPermission(ManageUsers, acl_users):
@@ -502,7 +495,7 @@
'permission for the underlying User Folder.')
# Delete member data in portal_memberdata.
- mdtool = getToolByName(self, 'portal_memberdata', None)
+ mdtool = queryUtility(IMemberDataTool)
if mdtool is not None:
for member_id in member_ids:
mdtool.deleteMemberData(member_id)
@@ -536,3 +529,4 @@
return None
InitializeClass(MembershipTool)
+registerToolInterface('portal_membership', IMembershipTool)
Modified: Products.CMFCore/trunk/Products/CMFCore/RegistrationTool.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/RegistrationTool.py 2011-09-13 09:02:57 UTC (rev 122783)
+++ Products.CMFCore/trunk/Products/CMFCore/RegistrationTool.py 2011-09-13 09:19:30 UTC (rev 122784)
@@ -11,8 +11,6 @@
#
##############################################################################
""" Basic user registration tool.
-
-$Id$
"""
from random import choice
@@ -23,8 +21,10 @@
from App.class_init import InitializeClass
from App.special_dtml import DTMLFile
from OFS.SimpleItem import SimpleItem
+from zope.component import getUtility
from zope.interface import implements
+from Products.CMFCore.interfaces import IMembershipTool
from Products.CMFCore.interfaces import IRegistrationTool
from Products.CMFCore.permissions import AddPortalMember
from Products.CMFCore.permissions import MailForgottenPassword
@@ -32,8 +32,8 @@
from Products.CMFCore.utils import _checkPermission
from Products.CMFCore.utils import _dtmldir
from Products.CMFCore.utils import _limitGrantedRoles
-from Products.CMFCore.utils import getToolByName
from Products.CMFCore.utils import Message as _
+from Products.CMFCore.utils import registerToolInterface
from Products.CMFCore.utils import UniqueObject
@@ -140,8 +140,6 @@
role that can always be granted); these conditions should be
detected before the fact so that a cleaner message can be printed.
'''
- # XXX: this method violates the rules for tools/utilities:
- # it depends on a non-utility tool
if not self.isMemberIdAllowed(id):
raise ValueError(_(u'The login name you selected is already in '
u'use or is not valid. Please choose another.'))
@@ -159,10 +157,10 @@
# Anyone is always allowed to grant the 'Member' role.
_limitGrantedRoles(roles, self, ('Member',))
- membership = getToolByName(self, 'portal_membership')
- membership.addMember(id, password, roles, domains, properties)
+ mtool = getUtility(IMembershipTool)
+ mtool.addMember(id, password, roles, domains, properties)
- member = membership.getMemberById(id)
+ member = mtool.getMemberById(id)
self.afterAdd(member, id, password, properties)
return member
@@ -170,14 +168,12 @@
def isMemberIdAllowed(self, id):
'''Returns 1 if the ID is not in use and is not reserved.
'''
- # XXX: this method violates the rules for tools/utilities:
- # it depends on a non-utility tool
if len(id) < 1 or id == 'Anonymous User':
return 0
if not self._ALLOWED_MEMBER_ID_PATTERN.match( id ):
return 0
- membership = getToolByName(self, 'portal_membership')
- if membership.getMemberById(id) is not None:
+ mtool = getUtility(IMembershipTool)
+ if mtool.getMemberById(id) is not None:
return 0
return 1
@@ -195,3 +191,4 @@
raise NotImplementedError
InitializeClass(RegistrationTool)
+registerToolInterface('portal_registration', IRegistrationTool)
Property changes on: Products.CMFCore/trunk/Products/CMFCore/RegistrationTool.py
___________________________________________________________________
Deleted: svn:keywords
- Author Date Id Revision
Modified: Products.CMFCore/trunk/Products/CMFCore/SkinsTool.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/SkinsTool.py 2011-09-13 09:02:57 UTC (rev 122783)
+++ Products.CMFCore/trunk/Products/CMFCore/SkinsTool.py 2011-09-13 09:19:30 UTC (rev 122784)
@@ -11,8 +11,6 @@
#
##############################################################################
"""Portal skins tool.
-
-$Id$
"""
from difflib import unified_diff
@@ -29,12 +27,14 @@
from Persistence import PersistentMapping
from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
from Products.PythonScripts.PythonScript import PythonScript
+from zope.component import getUtility
from zope.interface import implements
from Products.CMFCore.ActionProviderBase import ActionProviderBase
from Products.CMFCore.DirectoryView import base_ignore
from Products.CMFCore.DirectoryView import ignore
from Products.CMFCore.DirectoryView import ignore_re
+from Products.CMFCore.interfaces import IMembershipTool
from Products.CMFCore.interfaces import ISkinsTool
from Products.CMFCore.permissions import AccessContentsInformation
from Products.CMFCore.permissions import ManagePortal
@@ -47,7 +47,6 @@
def modifiedOptions():
# Remove the existing "Properties" option and add our own.
rval = []
- pos = -1
for o in Folder.manage_options:
label = o.get('label', None)
if label != 'Properties':
@@ -307,7 +306,7 @@
"""
# XXX: this method violates the rules for tools/utilities:
# it depends on a non-utility tool and uses self.REQUEST
- mtool = getToolByName(self, 'portal_membership')
+ mtool = getUtility(IMembershipTool)
utool = getToolByName(self, 'portal_url')
member = mtool.getAuthenticatedMember()
if hasattr(aq_base(member), 'getProperty'):
Property changes on: Products.CMFCore/trunk/Products/CMFCore/SkinsTool.py
___________________________________________________________________
Deleted: svn:keywords
- Author Date Id Revision
Modified: Products.CMFCore/trunk/Products/CMFCore/configure.zcml
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/configure.zcml 2011-09-13 09:02:57 UTC (rev 122783)
+++ Products.CMFCore/trunk/Products/CMFCore/configure.zcml 2011-09-13 09:19:30 UTC (rev 122784)
@@ -1,8 +1,10 @@
<configure
xmlns="http://namespaces.zope.org/zope">
- <include package="five.localsitemanager" />
+ <include package="five.globalrequest"/>
+ <include package="five.localsitemanager"/>
+
<include file="permissions.zcml"/>
<include package=".browser"/>
Modified: Products.CMFCore/trunk/Products/CMFCore/exportimport/cookieauth.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/exportimport/cookieauth.py 2011-09-13 09:02:57 UTC (rev 122783)
+++ Products.CMFCore/trunk/Products/CMFCore/exportimport/cookieauth.py 2011-09-13 09:19:30 UTC (rev 122784)
@@ -11,11 +11,10 @@
#
##############################################################################
"""Cookie crumbler xml adapters and setup handlers.
-
-$Id$
"""
from zope.component import adapts
+from zope.component import getSiteManager
from Products.GenericSetup.interfaces import ISetupEnviron
from Products.GenericSetup.utils import exportObjects
@@ -24,7 +23,6 @@
from Products.GenericSetup.utils import XMLAdapterBase
from Products.CMFCore.interfaces import ICookieCrumbler
-from Products.CMFCore.utils import getToolByName
class CookieCrumblerXMLAdapter(XMLAdapterBase, PropertyManagerHelpers):
@@ -73,8 +71,8 @@
def importCookieCrumbler(context):
"""Import cookie crumbler settings from an XML file.
"""
- site = context.getSite()
- tool = getToolByName(site, 'cookie_authentication', None)
+ sm = getSiteManager(context.getSite())
+ tool = sm.queryUtility(ICookieCrumbler)
if tool is None:
logger = context.getLogger('cookies')
logger.debug('Nothing to import.')
@@ -85,8 +83,8 @@
def exportCookieCrumbler(context):
"""Export cookie crumbler settings as an XML file.
"""
- site = context.getSite()
- tool = getToolByName(site, 'cookie_authentication', None)
+ sm = getSiteManager(context.getSite())
+ tool = sm.queryUtility(ICookieCrumbler)
if tool is None:
logger = context.getLogger('cookies')
logger.debug('Nothing to export.')
Property changes on: Products.CMFCore/trunk/Products/CMFCore/exportimport/cookieauth.py
___________________________________________________________________
Deleted: svn:keywords
- Id
Modified: Products.CMFCore/trunk/Products/CMFCore/exportimport/memberdata.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/exportimport/memberdata.py 2011-09-13 09:02:57 UTC (rev 122783)
+++ Products.CMFCore/trunk/Products/CMFCore/exportimport/memberdata.py 2011-09-13 09:19:30 UTC (rev 122784)
@@ -14,6 +14,7 @@
"""
from zope.component import adapts
+from zope.component import getSiteManager
from Products.GenericSetup.interfaces import ISetupEnviron
from Products.GenericSetup.utils import exportObjects
@@ -22,7 +23,6 @@
from Products.GenericSetup.utils import XMLAdapterBase
from Products.CMFCore.interfaces import IMemberDataTool
-from Products.CMFCore.utils import getToolByName
class MemberDataToolXMLAdapter(XMLAdapterBase, PropertyManagerHelpers):
@@ -59,8 +59,8 @@
def importMemberDataTool(context):
"""Import member data tool settings from an XML file.
"""
- site = context.getSite()
- tool = getToolByName(site, 'portal_memberdata', None)
+ sm = getSiteManager(context.getSite())
+ tool = sm.queryUtility(IMemberDataTool)
if tool is None:
logger = context.getLogger('memberdata')
logger.debug('Nothing to import.')
@@ -71,8 +71,8 @@
def exportMemberDataTool(context):
"""Export member data tool settings as an XML file.
"""
- site = context.getSite()
- tool = getToolByName(site, 'portal_memberdata', None)
+ sm = getSiteManager(context.getSite())
+ tool = sm.queryUtility(IMemberDataTool)
if tool is None:
logger = context.getLogger('memberdata')
logger.debug('Nothing to export.')
Modified: Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_cookieauth.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_cookieauth.py 2011-09-13 09:02:57 UTC (rev 122783)
+++ Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_cookieauth.py 2011-09-13 09:19:30 UTC (rev 122784)
@@ -17,6 +17,7 @@
import Testing
from OFS.Folder import Folder
+from zope.component import getSiteManager
from Products.GenericSetup.testing import BodyAdapterTestCase
from Products.GenericSetup.tests.common import BaseRegistryTests
@@ -24,6 +25,7 @@
from Products.GenericSetup.tests.common import DummyImportContext
from Products.CMFCore.CookieCrumbler import CookieCrumbler
+from Products.CMFCore.interfaces import ICookieCrumbler
from Products.CMFCore.testing import ExportImportZCMLLayer
_COOKIECRUMBLER_BODY = """\
@@ -102,7 +104,8 @@
def _initSite(self, use_changed=False):
self.root.site = Folder(id='site')
site = self.root.site
- cc = site.cookie_authentication = CookieCrumbler()
+ cc = CookieCrumbler()
+ getSiteManager().registerUtility(cc, ICookieCrumbler)
if use_changed:
cc.auth_cookie = 'value1'
@@ -158,7 +161,7 @@
import importCookieCrumbler
site = self._initSite()
- cc = site.cookie_authentication
+ cc = getSiteManager().getUtility(ICookieCrumbler)
context = DummyImportContext(site)
context._files['cookieauth.xml'] = _CHANGED_EXPORT
@@ -177,7 +180,7 @@
import importCookieCrumbler
site = self._initSite()
- cc = site.cookie_authentication
+ cc = getSiteManager().getUtility(ICookieCrumbler)
context = DummyImportContext(site)
context._files['cookieauth.xml'] = _CMF22_IMPORT
Modified: Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_mailhost.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_mailhost.py 2011-09-13 09:02:57 UTC (rev 122783)
+++ Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_mailhost.py 2011-09-13 09:19:30 UTC (rev 122784)
@@ -47,9 +47,8 @@
self.root.site = Folder(id='site')
site = self.root.site
- mh = site.MailHost = MailHost('MailHost')
- sm = getSiteManager()
- sm.registerUtility(site.MailHost, IMailHost)
+ mh = MailHost('MailHost')
+ getSiteManager().registerUtility(mh, IMailHost)
if use_changed:
mh.smtp_port='1'
@@ -99,7 +98,7 @@
from Products.CMFCore.exportimport.mailhost import importMailHost
site = self._initSite()
- mh = site.MailHost
+ mh = getSiteManager().getUtility(IMailHost)
context = DummyImportContext(site)
context._files['mailhost.xml'] = _CHANGED_EXPORT
Modified: Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_memberdata.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_memberdata.py 2011-09-13 09:02:57 UTC (rev 122783)
+++ Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_memberdata.py 2011-09-13 09:19:30 UTC (rev 122784)
@@ -18,12 +18,14 @@
from DateTime.DateTime import DateTime
from OFS.Folder import Folder
+from zope.component import getSiteManager
from Products.GenericSetup.testing import BodyAdapterTestCase
from Products.GenericSetup.tests.common import BaseRegistryTests
from Products.GenericSetup.tests.common import DummyExportContext
from Products.GenericSetup.tests.common import DummyImportContext
+from Products.CMFCore.interfaces import IMemberDataTool
from Products.CMFCore.MemberDataTool import MemberDataTool
from Products.CMFCore.testing import ExportImportZCMLLayer
@@ -85,7 +87,8 @@
def _initSite(self, use_changed=False):
self.root.site = Folder(id='site')
site = self.root.site
- mdtool = site.portal_memberdata = MemberDataTool()
+ mdtool = MemberDataTool()
+ getSiteManager().registerUtility(mdtool, IMemberDataTool)
if use_changed:
mdtool._updateProperty('email', 'value1')
@@ -141,7 +144,7 @@
import importMemberDataTool
site = self._initSite()
- mdtool = site.portal_memberdata
+ mdtool = getSiteManager().getUtility(IMemberDataTool)
context = DummyImportContext(site)
context._files['memberdata.xml'] = _CHANGED_EXPORT
Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_ActionInformation.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_ActionInformation.py 2011-09-13 09:02:57 UTC (rev 122783)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_ActionInformation.py 2011-09-13 09:19:30 UTC (rev 122784)
@@ -18,10 +18,13 @@
from OFS.Folder import manage_addFolder
from Products.PythonScripts.PythonScript import manage_addPythonScript
+from zope.component import getSiteManager
from zope.interface.verify import verifyClass
+from zope.testing.cleanup import cleanUp
from Products.CMFCore.Expression import createExprContext
from Products.CMFCore.Expression import Expression
+from Products.CMFCore.interfaces import IMembershipTool
from Products.CMFCore.testing import FunctionalZCMLLayer
from Products.CMFCore.tests.base.dummy import DummyContent
from Products.CMFCore.tests.base.dummy import DummySite
@@ -231,9 +234,14 @@
def setUp(self):
SecurityTest.setUp(self)
- self.site = DummySite('site').__of__(self.root)
- self.site._setObject( 'portal_membership', DummyMembershipTool() )
+ self.site = DummySite('site').__of__(self.app)
+ sm = getSiteManager()
+ sm.registerUtility(DummyMembershipTool(), IMembershipTool)
+ def tearDown(self):
+ cleanUp()
+ SecurityTest.tearDown(self)
+
def _makeOne(self, *args, **kw):
from Products.CMFCore.ActionInformation import ActionInfo
@@ -345,13 +353,17 @@
def setUp(self):
TransactionalTest.setUp(self)
- root = self.root
- root._setObject('portal', DummyContent('portal', 'url_portal'))
- portal = self.portal = root.portal
- portal.portal_membership = DummyMembershipTool()
+ self.app._setObject('portal', DummyContent('portal'))
+ self.portal = self.app.portal
+ sm = getSiteManager()
+ sm.registerUtility(DummyMembershipTool(), IMembershipTool)
self.folder = DummyContent('foo', 'url_foo')
self.object = DummyContent('bar', 'url_bar')
+ def tearDown(self):
+ getSiteManager().unregisterUtility(provided=IMembershipTool)
+ TransactionalTest.tearDown(self)
+
def _makeOne(self, *args, **kw):
from Products.CMFCore.ActionInformation import ActionInformation
@@ -389,7 +401,6 @@
self.assertEqual(ai.getPermissions(), ())
def test_setActionExpression_with_string_prefix(self):
- from Products.CMFCore.Expression import Expression
ai = self._makeOne(id='view', category='folder')
ai.setActionExpression('string:blah')
self.failUnless(isinstance(ai.action,Expression))
@@ -430,8 +441,8 @@
portal = self.portal
folder = self.folder
object = self.object
- manage_addPythonScript(self.root, 'test_script')
- script = self.root.test_script
+ manage_addPythonScript(self.app, 'test_script')
+ script = self.app.test_script
script.ZPythonScript_edit('', 'return context.getId()')
ai = self._makeOne( id='view',
title='View',
Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_ActionProviderBase.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_ActionProviderBase.py 2011-09-13 09:02:57 UTC (rev 122783)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_ActionProviderBase.py 2011-09-13 09:19:30 UTC (rev 122784)
@@ -16,9 +16,11 @@
import unittest
import Testing
+from zope.component import getSiteManager
from zope.interface.verify import verifyClass
from zope.testing.cleanup import cleanUp
+from Products.CMFCore.interfaces import IMembershipTool
from Products.CMFCore.tests.base.dummy import DummySite
from Products.CMFCore.tests.base.dummy import DummyTool
from Products.CMFCore.tests.base.testcase import SecurityTest
@@ -65,8 +67,8 @@
self._trap_warning_output()
SecurityTest.setUp(self)
self.site = DummySite('site').__of__(self.root)
- utool = self.site._setObject( 'portal_url', DummyTool() )
- mtool = self.site._setObject( 'portal_membership', DummyTool() )
+ self.site._setObject('portal_url', DummyTool())
+ getSiteManager().registerUtility(DummyTool(), IMembershipTool)
def tearDown(self):
cleanUp()
Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_ActionsTool.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_ActionsTool.py 2011-09-13 09:02:57 UTC (rev 122783)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_ActionsTool.py 2011-09-13 09:19:30 UTC (rev 122784)
@@ -25,6 +25,7 @@
from Products.CMFCore.ActionInformation import ActionCategory
from Products.CMFCore.ActionInformation import ActionInformation
from Products.CMFCore.Expression import Expression
+from Products.CMFCore.interfaces import IMembershipTool
from Products.CMFCore.interfaces import ISiteRoot
from Products.CMFCore.MembershipTool import MembershipTool
from Products.CMFCore.tests.base.security import OmnipotentUser
@@ -127,20 +128,22 @@
def setUp(self):
SecurityTest.setUp(self)
- root = self.root
sm = getSiteManager()
- sm.registerUtility(root, ISiteRoot)
- root._setObject( 'portal_actions', self._makeOne() )
- root._setObject( 'portal_url', URLTool() )
- root._setObject( 'foo', URLTool() )
- root._setObject('portal_membership', MembershipTool())
- self.tool = root.portal_actions
+ sm.registerUtility(self.app, ISiteRoot)
+ self.app._setObject('portal_actions', self._makeOne())
+ self.app._setObject('portal_url', URLTool())
+ self.app._setObject('foo', URLTool())
+ sm.registerUtility(MembershipTool(), IMembershipTool)
+ self.tool = self.app.portal_actions
self.tool.action_providers = ('portal_actions',)
+ def tearDown(self):
+ cleanUp()
+ SecurityTest.tearDown(self)
+
def test_listActionInformationActions(self):
# Check that listFilteredActionsFor works for objects that return
# ActionInformation objects
- root = self.root
tool = self.tool
tool._actions = (
ActionInformation(id='folderContents',
@@ -159,7 +162,7 @@
)
newSecurityManager(None, OmnipotentUser().__of__(self.app.acl_users))
- self.assertEqual(tool.listFilteredActionsFor(root.foo),
+ self.assertEqual(tool.listFilteredActionsFor(self.app.foo),
{'workflow': [],
'user': [],
'object': [],
@@ -175,11 +178,7 @@
'link_target': '_top'}],
'global': []})
- def tearDown(self):
- cleanUp()
- SecurityTest.tearDown(self)
-
def test_suite():
return unittest.TestSuite((
unittest.makeSuite(ActionsToolTests),
Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_CachingPolicyManager.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_CachingPolicyManager.py 2011-09-13 09:02:57 UTC (rev 122783)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_CachingPolicyManager.py 2011-09-13 09:19:30 UTC (rev 122784)
@@ -25,17 +25,19 @@
from App.Common import rfc1123_date
from DateTime.DateTime import DateTime
from OFS.Cache import Cacheable
+from zope.component import getSiteManager
from zope.interface.verify import verifyClass
from Products.CMFCore.FSDTMLMethod import FSDTMLMethod
from Products.CMFCore.FSPageTemplate import FSPageTemplate
+from Products.CMFCore.interfaces import IMembershipTool
from Products.CMFCore.testing import FunctionalZCMLLayer
from Products.CMFCore.testing import TraversingZCMLLayer
from Products.CMFCore.tests.base.dummy import DummyContent
from Products.CMFCore.tests.base.dummy import DummySite
from Products.CMFCore.tests.base.dummy import DummyTool
from Products.CMFCore.tests.base.testcase import FSDVTest
-from Products.CMFCore.tests.base.testcase import RequestTest
+from Products.CMFCore.tests.base.testcase import TransactionalTest
ACCLARK = DateTime( '2001/01/01' )
portal_owner = 'portal_owner'
@@ -103,6 +105,7 @@
def setUp(self):
self._epoch = DateTime(0)
+ getSiteManager().registerUtility(DummyTool(), IMembershipTool)
def test_interfaces(self):
from Products.CMFCore.CachingPolicyManager import CachingPolicy
@@ -432,6 +435,7 @@
def setUp(self):
self._epoch = DateTime()
+ getSiteManager().registerUtility(DummyTool(), IMembershipTool)
def assertEqualDelta( self, lhs, rhs, delta ):
self.failUnless( abs( lhs - rhs ) <= delta )
@@ -627,28 +631,29 @@
self.assertEqual( headers[2][1] , 'max-age=86400' )
-class CachingPolicyManager304Tests(RequestTest, FSDVTest):
+class CachingPolicyManager304Tests(TransactionalTest, FSDVTest):
layer = FunctionalZCMLLayer
def setUp(self):
from Products.CMFCore import CachingPolicyManager
- RequestTest.setUp(self)
+ TransactionalTest.setUp(self)
FSDVTest.setUp(self)
now = DateTime()
# Create a fake portal and the tools we need
- self.portal = DummySite(id='portal').__of__(self.root)
+ self.portal = DummySite(id='portal').__of__(self.app)
self.portal._setObject('portal_types', DummyTool())
+ getSiteManager().registerUtility(DummyTool(), IMembershipTool)
# This is a FSPageTemplate that will be used as the View for
# our content objects. It doesn't matter what it returns.
path = os.path.join(self.skin_path_name, 'testPT2.pt')
self.portal._setObject('dummy_view', FSPageTemplate('dummy_view', path))
- uf = self.root.acl_users
+ uf = self.app.acl_users
password = 'secret'
uf.userFolderAddUser(portal_owner, password, ['Manager'], [])
user = uf.getUserById(portal_owner)
@@ -708,7 +713,8 @@
enable_304s = 0)
def tearDown(self):
- RequestTest.tearDown(self)
+ getSiteManager().unregisterUtility(provided=IMembershipTool)
+ TransactionalTest.tearDown(self)
FSDVTest.tearDown(self)
def _cleanup(self):
@@ -843,7 +849,6 @@
self._cleanup()
def testConditionalGETDisabled(self):
- yesterday = DateTime() - 1
doc3 = self.portal.doc3
request = doc3.REQUEST
response = request.RESPONSE
@@ -876,23 +881,25 @@
path = path_join(self.skin_path_name, filename)
return FSDTMLMethod( id, path )
-class NestedTemplateTests( RequestTest, FSObjMaker ):
+class NestedTemplateTests(TransactionalTest, FSObjMaker):
+
layer = TraversingZCMLLayer
def setUp(self):
+ from Products.CMFCore import CachingPolicyManager
+
FSObjMaker.setUp(self)
- RequestTest.setUp(self)
+ TransactionalTest.setUp(self)
# Create a fake portal and the tools we need
- self.portal = DummySite(id='portal').__of__(self.root)
+ self.portal = DummySite(id='portal').__of__(self.app)
self.portal._setObject('portal_types', DummyTool())
-
- from Products.CMFCore import CachingPolicyManager
CachingPolicyManager.manage_addCachingPolicyManager(self.portal)
+ getSiteManager().registerUtility(DummyTool(), IMembershipTool)
def tearDown(self):
- RequestTest.tearDown(self)
+ TransactionalTest.tearDown(self)
FSObjMaker.tearDown(self)
def test_subtemplate_cpm_1( self ):
@@ -1003,7 +1010,7 @@
portal._setObject('nested_view_1', nested_view_1)
portal._setObject('nested_view_2', nested_view_2)
- data = portal.doc1()
+ portal.doc1()
# no headers should be added by the CPM if all is well
headers = [x.lower() for x in self.RESPONSE.headers.keys()]
@@ -1195,35 +1202,40 @@
)
-class OFSCacheTests(RequestTest):
+class OFSCacheTests(TransactionalTest):
layer = FunctionalZCMLLayer
def setUp(self):
from Products.CMFCore import CachingPolicyManager
- RequestTest.setUp(self)
+ TransactionalTest.setUp(self)
# Create a fake portal and the tools we need
- self.portal = DummySite(id='portal').__of__(self.root)
+ self.portal = DummySite(id='portal').__of__(self.app)
self.portal._setObject('doc1', CacheableDummyContent('doc1'))
self.portal._setObject('doc2', CacheableDummyContent('doc2'))
CachingPolicyManager.manage_addCachingPolicyManager(self.portal)
cpm = self.portal.caching_policy_manager
+ getSiteManager().registerUtility(DummyTool(), IMembershipTool)
# This policy only applies to doc1. It will not emit any ETag header
# but it enables If-modified-since handling.
- cpm.addPolicy(policy_id = 'policy_1',
- predicate = 'python:object.getId()=="doc1"',
- mtime_func = '',
- max_age_secs = 100,
- no_cache = 0,
- no_store = 0,
- must_revalidate = 0,
- vary = 'doc1',
- etag_func = '',
- enable_304s = 0)
+ cpm.addPolicy(policy_id='policy_1',
+ predicate='python:object.getId()=="doc1"',
+ mtime_func='',
+ max_age_secs=100,
+ no_cache=0,
+ no_store=0,
+ must_revalidate=0,
+ vary='doc1',
+ etag_func='',
+ enable_304s=0)
+ def tearDown(self):
+ getSiteManager().unregisterUtility(provided=IMembershipTool)
+ TransactionalTest.tearDown(self)
+
def test_empty(self):
from Products.CMFCore.CachingPolicyManager import CPMCache
Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_DynamicType.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_DynamicType.py 2011-09-13 09:02:57 UTC (rev 122783)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_DynamicType.py 2011-09-13 09:19:30 UTC (rev 122784)
@@ -20,6 +20,7 @@
from Acquisition import Implicit
from Products.Five.browser import BrowserView
+from zope.component import getSiteManager
from zope.component import provideAdapter
from zope.interface import alsoProvides
from zope.interface.verify import verifyClass
@@ -27,13 +28,14 @@
from zope.publisher.interfaces.browser import IBrowserView
try:
from zope.publisher.interfaces import IDefaultViewName
-except ImportError: # zope.component had this before the ZTK
+except ImportError: # BBB: zope.component had this before the ZTK
from zope.component.interfaces import IDefaultViewName
from zope.testing.cleanup import cleanUp
from ZPublisher.HTTPRequest import HTTPRequest
from ZPublisher.HTTPResponse import HTTPResponse
from Products.CMFCore.DynamicType import DynamicType
+from Products.CMFCore.interfaces import IMembershipTool
from Products.CMFCore.tests.base.dummy import DummyObject
from Products.CMFCore.tests.base.dummy import DummySite
from Products.CMFCore.tests.base.dummy import DummyTool
@@ -151,7 +153,7 @@
def setUp(self):
SecurityTest.setUp(self)
self.site = DummySite('site').__of__(self.root)
- self.site._setObject( 'portal_membership', DummyTool() )
+ getSiteManager().registerUtility(DummyTool(), IMembershipTool)
self.site._setObject( 'portal_types', TypesTool() )
self.site._setObject( 'portal_url', DummyTool() )
fti = FTIDATA_CMF[0].copy()
Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_Expression.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_Expression.py 2011-09-13 09:02:57 UTC (rev 122783)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_Expression.py 2011-09-13 09:19:30 UTC (rev 122784)
@@ -16,9 +16,13 @@
import unittest
import Testing
+from zope.component import getSiteManager
+from zope.testing.cleanup import cleanUp
+
from Products.CMFCore.ActionInformation import ActionInformation
from Products.CMFCore.Expression import createExprContext
from Products.CMFCore.Expression import Expression
+from Products.CMFCore.interfaces import IMembershipTool
from Products.CMFCore.tests.base.dummy import DummyContent
from Products.CMFCore.tests.base.dummy import DummyTool as DummyMembershipTool
from Products.CMFCore.tests.base.testcase import SecurityTest
@@ -43,20 +47,27 @@
, category='global'
, visible=1)
+ def tearDown(self):
+ cleanUp()
+ SecurityTest.tearDown(self)
+
def test_anonymous_ec(self):
- self.portal.portal_membership = DummyMembershipTool()
+ sm = getSiteManager()
+ sm.registerUtility(DummyMembershipTool(), IMembershipTool)
ec = createExprContext(self.folder, self.portal, self.object)
member = ec.contexts['member']
self.failIf(member)
def test_authenticatedUser_ec(self):
- self.portal.portal_membership = DummyMembershipTool(anon=0)
+ sm = getSiteManager()
+ sm.registerUtility(DummyMembershipTool(anon=0), IMembershipTool)
ec = createExprContext(self.folder, self.portal, self.object)
member = ec.contexts['member']
self.assertEqual(member.getId(), 'dummy')
def test_ec_context(self):
- self.portal.portal_membership = DummyMembershipTool()
+ sm = getSiteManager()
+ sm.registerUtility(DummyMembershipTool(), IMembershipTool)
ec = createExprContext(self.folder, self.portal, self.object)
object = ec.contexts['object']
portal = ec.contexts['portal']
Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_MemberDataTool.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_MemberDataTool.py 2011-09-13 09:02:57 UTC (rev 122783)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_MemberDataTool.py 2011-09-13 09:19:30 UTC (rev 122784)
@@ -19,9 +19,12 @@
import Acquisition
from AccessControl.SecurityManagement import newSecurityManager
from DateTime.DateTime import DateTime
+from zope.component import getSiteManager
from zope.interface.verify import verifyClass
+from zope.testing.cleanup import cleanUp
from Products.CMFCore.exceptions import BadRequest
+from Products.CMFCore.interfaces import IMembershipTool
from Products.CMFCore.tests.base.security import DummyUser as BaseDummyUser
@@ -64,6 +67,9 @@
def _makeOne(self, *args, **kw):
return self._getTargetClass()(*args, **kw)
+ def tearDown(self):
+ cleanUp()
+
def test_interfaces(self):
from Products.CMFCore.interfaces import IMemberDataTool
@@ -93,7 +99,8 @@
from Products.CMFCore.MembershipTool import MembershipTool
folder = Folder('test')
folder._setObject('portal_memberdata', self._makeOne())
- folder._setObject('portal_membership', MembershipTool())
+ sm = getSiteManager()
+ sm.registerUtility(MembershipTool().__of__(folder), IMembershipTool)
folder._setObject('acl_users', DummyUserFolder())
tool = folder.portal_memberdata
@@ -134,9 +141,13 @@
self.site = Folder('test')
self.site._setObject('portal_memberdata', MemberDataTool())
- self.site._setObject('portal_membership', MembershipTool())
+ sm = getSiteManager()
+ sm.registerUtility(MembershipTool(), IMembershipTool)
self.site._setObject('acl_users', DummyUserFolder())
+ def tearDown(self):
+ cleanUp()
+
def test_interfaces(self):
from AccessControl.interfaces import IUser
from Products.CMFCore.interfaces import IMember
Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_MembershipTool.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_MembershipTool.py 2011-09-13 09:02:57 UTC (rev 122783)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_MembershipTool.py 2011-09-13 09:19:30 UTC (rev 122784)
@@ -23,6 +23,7 @@
from zope.testing.cleanup import cleanUp
from Products.CMFCore.CMFBTreeFolder import CMFBTreeFolder
+from Products.CMFCore.interfaces import IMemberDataTool
from Products.CMFCore.interfaces import ISiteRoot
from Products.CMFCore.MemberDataTool import MemberDataTool
from Products.CMFCore.PortalFolder import PortalFolder
@@ -175,9 +176,10 @@
sm = getSiteManager()
sm.registerUtility(site, ISiteRoot)
mtool = site.portal_membership
- members = site._setObject( 'Members', PortalFolder('Members') )
- acl_users = site._setObject( 'acl_users', DummyUserFolder() )
- mdtool = site._setObject( 'portal_memberdata', MemberDataTool() )
+ members = site._setObject('Members', PortalFolder('Members'))
+ acl_users = site._setObject('acl_users', DummyUserFolder())
+ mdtool = MemberDataTool()
+ sm.registerUtility(mdtool, IMemberDataTool)
newSecurityManager(None, acl_users.all_powerful_Oz)
self.assertEqual( acl_users.getUserById('user_foo'),
@@ -200,12 +202,13 @@
# http://www.zope.org/Collectors/CMF/481
# Make sure we get the right exception
site = self._makeSite()
+ sm = getSiteManager()
+ sm.registerUtility(site, ISiteRoot)
mtool = site.portal_membership
- members = site._setObject( 'Members', PortalFolder('Members') )
- acl_users = site._setObject( 'acl_users', DummyUserFolder() )
- utool = site._setObject( 'portal_url', DummyTool() )
- wtool = site._setObject( 'portal_workflow', DummyTool() )
- mdtool = site._setObject( 'portal_memberdata', MemberDataTool() )
+ members = site._setObject('Members', PortalFolder('Members'))
+ acl_users = site._setObject('acl_users', DummyUserFolder())
+ mdtool = MemberDataTool()
+ sm.registerUtility(mdtool, IMemberDataTool)
newSecurityManager(None, acl_users.all_powerful_Oz)
self.assertEqual( acl_users.getUserById('user_foo'),
@@ -228,6 +231,7 @@
# Cleanup
DummyUserFolder.userFolderDelUsers = deletion_method
+ cleanUp()
def test_getMemberById_nonesuch(self):
INVALID_USER_ID = 'nonesuch'
Modified: Products.CMFCore/trunk/setup.py
===================================================================
--- Products.CMFCore/trunk/setup.py 2011-09-13 09:02:57 UTC (rev 122783)
+++ Products.CMFCore/trunk/setup.py 2011-09-13 09:19:30 UTC (rev 122784)
@@ -47,6 +47,7 @@
install_requires=[
'setuptools',
'Zope2 >= 2.13.4',
+ 'five.globalrequest',
'five.localsitemanager',
'Products.BTreeFolder2',
'Products.GenericSetup',
More information about the checkins
mailing list