[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/ - converted several tools into utilities
Yvo Schubbe
y.2011 at wcm-solutions.de
Tue Sep 13 04:22:16 EST 2011
Log message for revision 122785:
- converted several tools into utilities
Changed:
U Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt
UU Products.CMFDefault/trunk/Products/CMFDefault/DefaultWorkflow.py
U Products.CMFDefault/trunk/Products/CMFDefault/RegistrationTool.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/tests/test_syndication.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/content/folder.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/content/tests/test_folder.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/authentication.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/join.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/password.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/preferences.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/tests/test_members.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/search/interfaces.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/search/search.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/search/tests/test_search.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/tests/test_icons.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/tests/test_ursa.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/ursa.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/utils.py
U Products.CMFDefault/trunk/Products/CMFDefault/profiles/default/componentregistry.xml
UU Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/addtoFavorites.py
U Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/change_password.py
U Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/folder_localrole_edit.py
U Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/logout.py
U Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/members_add_control.py
U Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/members_delete_control.py
UU Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/validatePassword.py
U Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/folder_contents.py
U Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/getMainGlobals.py
U Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/join_form.py
U Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/logged_in.py
U Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/members_delete_form.py
U Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/members_manage_form.py
UU Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/password_form.py
U Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/search_form.py
U Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/setup_talkback_tree.py
U Products.CMFDefault/trunk/Products/CMFDefault/tests/RegistrationTool.txt
U Products.CMFDefault/trunk/Products/CMFDefault/tests/test_RegistrationTool.py
U Products.CMFDefault/trunk/Products/CMFDefault/upgrade/configure.zcml
U Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to23.py
-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt 2011-09-13 09:22:16 UTC (rev 122785)
@@ -4,6 +4,10 @@
2.3.0-alpha (unreleased)
------------------------
+- tools: Converted several tools into utilities.
+ CookieCrumbler, MemberDataTool, MembershipTool and RegistrationTool are now
+ local utilities.
+
- skins and browser views: setRedirect now checks Action conditions.
- Actions: Added 'global/members_register' Action for redirects.
Modified: Products.CMFDefault/trunk/Products/CMFDefault/DefaultWorkflow.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/DefaultWorkflow.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/DefaultWorkflow.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -11,8 +11,6 @@
#
##############################################################################
""" A simple submit/review/publish workflow.
-
-$Id$
"""
from AccessControl.SecurityInfo import ClassSecurityInfo
@@ -21,8 +19,10 @@
from Acquisition import aq_parent
from App.class_init import InitializeClass
from DateTime.DateTime import DateTime
+from zope.component import getUtility
from zope.interface import implements
+from Products.CMFCore.interfaces import IMembershipTool
from Products.CMFCore.interfaces import IWorkflowDefinition
from Products.CMFCore.utils import _checkPermission
from Products.CMFCore.utils import _modifyPermissionMappings
@@ -94,8 +94,8 @@
content = info.object
content_url = info.object_url
content_creator = content.Creator()
- pm = getToolByName(self, 'portal_membership')
- current_user = pm.getAuthenticatedMember().getId()
+ mtool = getUtility(IMembershipTool)
+ current_user = mtool.getAuthenticatedMember().getId()
review_state = self.getReviewStateOf(content)
actions = []
@@ -198,8 +198,8 @@
elif review_state == 'private':
raise AccessControl_Unauthorized('Already private')
content_creator = ob.Creator()
- pm = getToolByName(self, 'portal_membership')
- current_user = pm.getAuthenticatedMember().getId()
+ mtool = getUtility(IMembershipTool)
+ current_user = mtool.getAuthenticatedMember().getId()
if (content_creator != current_user) and not allow_review:
raise AccessControl_Unauthorized('Not creator or reviewer')
self.setReviewStateOf(ob, 'private', action, comment)
@@ -245,8 +245,8 @@
security.declarePrivate('setReviewStateOf')
def setReviewStateOf(self, ob, review_state, action, comment):
tool = aq_parent(aq_inner(self))
- pm = getToolByName(self, 'portal_membership')
- current_user = pm.getAuthenticatedMember().getId()
+ mtool = getUtility(IMembershipTool)
+ current_user = mtool.getAuthenticatedMember().getId()
status = {
'actor': current_user,
'action': action,
Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/DefaultWorkflow.py
___________________________________________________________________
Deleted: svn:keywords
- Author Date Id Revision
Modified: Products.CMFDefault/trunk/Products/CMFDefault/RegistrationTool.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/RegistrationTool.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/RegistrationTool.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -21,9 +21,9 @@
from zope.component import getUtility
from zope.schema import ValidationError
+from Products.CMFCore.interfaces import IMembershipTool
from Products.CMFCore.RegistrationTool import RegistrationTool as BaseTool
from Products.CMFCore.utils import _checkPermission
-from Products.CMFCore.utils import getToolByName
from Products.CMFDefault.permissions import ManagePortal
from Products.CMFDefault.utils import checkEmailAddress
from Products.CMFDefault.utils import Message as _
@@ -124,10 +124,8 @@
o Raise an exception if user ID is not found.
"""
- # XXX: this method violates the rules for tools/utilities:
- # it depends on a non-utility tool
- membership = getToolByName(self, 'portal_membership')
- member = membership.getMemberById(forgotten_userid)
+ mtool = getUtility(IMembershipTool)
+ member = mtool.getMemberById(forgotten_userid)
if member is None:
raise ValueError(_(u'The username you entered could not be '
@@ -158,8 +156,8 @@
if REQUEST is None:
raise ValueError(u"'REQUEST' argument is missing.")
- membership = getToolByName( self, 'portal_membership' )
- member = membership.getMemberById( new_member_id )
+ mtool = getUtility(IMembershipTool)
+ member = mtool.getMemberById(new_member_id)
if member is None:
raise ValueError(_(u'The username you entered could not be '
@@ -193,12 +191,10 @@
o Checks should be done before this method is called using
testPropertiesValidity and testPasswordValidity
"""
- # XXX: this method violates the rules for tools/utilities:
- # it depends on a non-utility tool
- mtool = getToolByName(self, 'portal_membership')
+ mtool = getUtility(IMembershipTool)
member = mtool.getMemberById(member_id)
member.setMemberProperties(properties)
- member.setSecurityProfile(password,roles,domains)
+ member.setSecurityProfile(password, roles, domains)
return member
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/tests/test_syndication.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/tests/test_syndication.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/tests/test_syndication.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -18,8 +18,10 @@
from zope.component import getSiteManager
from zope.i18n.interfaces import IUserPreferredCharsets
from zope.interface import alsoProvides
+from zope.testing.cleanup import cleanUp
from Products.CMFCore.interfaces import IFolderish
+from Products.CMFCore.interfaces import IMembershipTool
from Products.CMFCore.interfaces import ISyndicationInfo
from Products.CMFCore.tests.base.dummy import DummyFolder
from Products.CMFCore.tests.base.dummy import DummySite
@@ -51,8 +53,11 @@
site.portal_syndication = DummySyndicationTool()
site._setObject('portal_actions', DummyTool())
site._setObject('portal_url', DummyTool())
- site._setObject('portal_membership', DummyTool())
+ getSiteManager().registerUtility(DummyTool(), IMembershipTool)
+ def tearDown(self):
+ cleanUp()
+
def _getTargetClass(self):
from Products.CMFDefault.browser.admin.syndication import Site
request = DummyRequest(ACTUAL_URL="http://example.com")
@@ -115,13 +120,15 @@
self.site = site = DummySite('site')
sm = getSiteManager()
- info = SyndicationInfo
- sm.registerAdapter(info, [IFolderish], ISyndicationInfo)
+ sm.registerAdapter(SyndicationInfo, [IFolderish], ISyndicationInfo)
site.portal_syndication = DummySyndicationTool()
site._setObject('portal_actions', DummyTool())
site._setObject('portal_url', DummyTool())
- site._setObject('portal_membership', DummyTool())
+ sm.registerUtility(DummyTool(), IMembershipTool)
+ def tearDown(self):
+ cleanUp()
+
def _getTargetClass(self):
from Products.CMFDefault.browser.admin.syndication import Syndicate
self.site._setObject('folder', DummyFolder('Folder'))
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/content/folder.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/content/folder.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/content/folder.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -17,6 +17,7 @@
import urllib
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
+from zope.component import getUtility
from zope.formlib import form
from zope.schema.vocabulary import SimpleTerm
from zope.schema.vocabulary import SimpleVocabulary
@@ -25,6 +26,7 @@
from ZTUtils import LazyFilter
from Products.CMFCore.interfaces import IDynamicType
+from Products.CMFCore.interfaces import IMembershipTool
from Products.CMFDefault.browser.utils import decode
from Products.CMFDefault.browser.utils import memoize
from Products.CMFDefault.browser.utils import ViewBase
@@ -349,7 +351,7 @@
def up_info(self):
"""Link to the contens view of the parent object"""
up_obj = self.context.aq_inner.aq_parent
- mtool = self._getTool('portal_membership')
+ mtool = getUtility(IMembershipTool)
allowed = mtool.checkPermission(ListFolderContents, up_obj)
if allowed:
if IDynamicType.providedBy(up_obj):
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/content/tests/test_folder.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/content/tests/test_folder.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/content/tests/test_folder.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -14,23 +14,21 @@
"""
import unittest
-
-from AccessControl.SecurityManagement import newSecurityManager
-from AccessControl.User import UnrestrictedUser
from Testing import ZopeTestCase
from zope.component import getSiteManager
from zope.publisher.browser import TestRequest
from zope.publisher.interfaces.browser import IBrowserPublisher
+from zope.testing.cleanup import cleanUp
+from Products.CMFCore.interfaces import IMembershipTool
+from Products.CMFCore.interfaces import IPropertiesTool
from Products.CMFCore.PortalFolder import PortalFolder
-from Products.CMFCore.tests.base.dummy import DummySite, DummyTool
-from Products.CMFCore.tests.base.dummy import DummyUserFolder, DummyContent
-from Products.CMFCore.interfaces import IPropertiesTool
-
-from Products.CMFDefault.browser.content.folder import (
- ContentsView, FolderView
- )
+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.CMFDefault.browser.content.folder import ContentsView
+from Products.CMFDefault.browser.content.folder import FolderView
from Products.CMFDefault.browser.content.tests.utils import clearVocabulary
from Products.CMFDefault.browser.content.tests.utils import setupVocabulary
from Products.CMFDefault.testing import FunctionalLayer
@@ -41,15 +39,17 @@
def setUp(self):
"""Setup a site"""
self.site = site = DummySite('site')
- self.sm = getSiteManager()
- site._setObject('portal_membership', DummyTool())
- ptool = site._setObject('portal_properties', DummyTool())
- self.sm.registerUtility(ptool, IPropertiesTool)
+ sm = getSiteManager()
+ sm.registerUtility(DummyTool(), IMembershipTool)
+ sm.registerUtility(DummyTool().__of__(site), IPropertiesTool)
site._setObject('portal_types', DummyTool())
site._setObject('portal_url', DummyTool())
folder = PortalFolder('test_folder')
self.folder = site._setObject('test_folder', folder)
+ def tearDown(self):
+ cleanUp()
+
def _make_one(self, name="DummyItem"):
content = DummyContent(name)
content.portal_type = "Dummy Content"
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/authentication.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/authentication.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/authentication.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -20,6 +20,8 @@
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
from zExceptions import Forbidden
from zExceptions import Redirect
+from zope.component import getUtility
+from zope.component import queryUtility
from zope.formlib import form
from zope.formlib.widgets import TextWidget
from zope.interface import implements
@@ -30,23 +32,25 @@
from zope.schema import TextLine
from zope.schema import URI
from zope.schema.interfaces import ISource
-from zope.site.hooks import getSite
from Products.CMFCore.CookieCrumbler import ATTEMPT_LOGIN
from Products.CMFCore.CookieCrumbler import ATTEMPT_NONE
+from Products.CMFCore.interfaces import ICookieCrumbler
+from Products.CMFCore.interfaces import IMembershipTool
+from Products.CMFCore.interfaces import IRegistrationTool
from Products.CMFCore.utils import getToolByName
+from Products.CMFDefault.browser.utils import ViewBase, memoize
from Products.CMFDefault.formlib.form import EditFormBase
from Products.CMFDefault.utils import Message as _
-from Products.CMFDefault.browser.utils import ViewBase, memoize
def _expireAuthCookie(view):
- try:
- cctool = getToolByName(view, 'cookie_authentication')
+ cctool = queryUtility(ICookieCrumbler)
+ if cctool is not None:
method = cctool.getCookieMethod('expireAuthCookie',
cctool.defaultExpireAuthCookie)
method(view.request.response, cctool.auth_cookie)
- except AttributeError:
+ else:
view.request.response.expireCookie('__ac', path='/')
@@ -98,8 +102,7 @@
implements(ISource)
def __contains__(self, value):
- rich_context = getSite()
- mtool = getToolByName(rich_context, 'portal_membership')
+ mtool = getUtility(IMembershipTool)
if mtool.getMemberById(value):
return True
candidates = mtool.searchMembers('email', value)
@@ -165,12 +168,12 @@
failure='handle_failure'))
def setUpWidgets(self, ignore_request=False):
- try:
- cctool = self._getTool('cookie_authentication')
+ cctool = queryUtility(ICookieCrumbler)
+ if cctool is not None:
ac_name_id = cctool.name_cookie
ac_password_id = cctool.pw_cookie
ac_persistent_id = cctool.persist_cookie
- except AttributeError:
+ else:
ac_name_id = '__ac_name'
ac_password_id = '__ac_password'
ac_persistent_id = '__ac_persistent'
@@ -192,7 +195,7 @@
self.widgets['persistent'].name = ac_persistent_id
def handle_login_validate(self, action, data):
- mtool = self._getTool('portal_membership')
+ mtool = getUtility(IMembershipTool)
if mtool.isAnonymousUser():
_expireAuthCookie(self)
return (_(u'Login failure'),)
@@ -223,7 +226,7 @@
def __call__(self):
self.set_skin_cookie()
- mtool = self._getTool('portal_membership')
+ mtool = getUtility(IMembershipTool)
mtool.createMemberArea()
member = mtool.getAuthenticatedMember()
now = DateTime()
@@ -263,10 +266,10 @@
failure='handle_failure'))
def setUpWidgets(self, ignore_request=False):
- try:
- cctool = self._getTool('cookie_authentication')
+ cctool = queryUtility(ICookieCrumbler)
+ if cctool is not None:
ac_name_id = cctool.name_cookie
- except AttributeError:
+ else:
ac_name_id = '__ac_name'
ac_name = self.request.get(ac_name_id)
if ac_name and not self.request.has_key('%s.name' % self.prefix):
@@ -275,14 +278,14 @@
self).setUpWidgets(ignore_request=ignore_request)
def handle_send_success(self, action, data):
- mtool = self._getTool('portal_membership')
+ mtool = getUtility(IMembershipTool)
if not mtool.getMemberById(data['name']):
candidates = mtool.searchMembers('email', data['name'])
for candidate in candidates:
if candidate['email'].lower() == data['name'].lower():
data['name'] = candidate['username']
break
- rtool = self._getTool('portal_registration')
+ rtool = getUtility(IRegistrationTool)
rtool.mailPassword(data['name'], self.request)
self.status = _(u'Your password has been mailed to you.')
return self._setRedirect('portal_actions', 'user/login')
@@ -296,7 +299,7 @@
@memoize
def logged_in(self):
"""Check whether the user is (still logged in)"""
- mtool = self._getTool('portal_membership')
+ mtool = getUtility(IMembershipTool)
return not mtool.isAnonymousUser()
@memoize
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/join.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/join.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/join.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -23,7 +23,9 @@
from zope.schema import Bool
from zope.schema import Password
+from Products.CMFCore.interfaces import IMembershipTool
from Products.CMFCore.interfaces import IPropertiesTool
+from Products.CMFCore.interfaces import IRegistrationTool
from Products.CMFDefault.browser.utils import memoize
from Products.CMFDefault.formlib.form import EditFormBase
from Products.CMFDefault.formlib.schema import EmailLine
@@ -97,13 +99,13 @@
@property
@memoize
def isAnon(self):
- mtool = self._getTool('portal_membership')
+ mtool = getUtility(IMembershipTool)
return mtool.isAnonymousUser()
@property
@memoize
def isManager(self):
- mtool = self._getTool('portal_membership')
+ mtool = getUtility(IMembershipTool)
return mtool.checkPermission(ManageUsers, mtool)
@property
@@ -126,7 +128,7 @@
errors = self.validate(action, data)
if errors:
return errors
- rtool = self._getTool('portal_registration')
+ rtool = getUtility(IRegistrationTool)
if self.validate_email:
data['password'] = rtool.generatePassword()
else:
@@ -141,7 +143,7 @@
def add_member(self, data):
"""Add new member and notify if requested or required"""
- rtool = self._getTool('portal_registration')
+ rtool = getUtility(IRegistrationTool)
rtool.addMember(
id=data['member_id'],
password=data['password'],
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -14,6 +14,7 @@
"""
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
+from zope.component import getUtility
from zope.formlib import form
from zope.interface import Interface
from zope.schema import Bool
@@ -22,6 +23,7 @@
from zope.sequencesort.ssort import sort
from ZTUtils import LazyFilter
+from Products.CMFCore.interfaces import IMembershipTool
from Products.CMFDefault.browser.content.folder import BatchViewBase
from Products.CMFDefault.browser.content.interfaces import IBatchForm
from Products.CMFDefault.browser.utils import memoize
@@ -113,7 +115,7 @@
@memoize
def _get_items(self):
- mtool = self._getTool('portal_membership')
+ mtool = getUtility(IMembershipTool)
return mtool.listMembers()
def members_exist(self, action=None):
@@ -130,7 +132,7 @@
"""Create content field objects only for batched items
Also create pseudo-widget for each item
"""
- mtool = self._getTool('portal_membership')
+ mtool = getUtility(IMembershipTool)
f = IMemberItem['select']
members = []
fields = form.FormFields()
@@ -168,7 +170,7 @@
def handle_delete(self, action, data):
"""Delete selected members"""
- mtool = self._getTool('portal_membership')
+ mtool = getUtility(IMembershipTool)
mtool.deleteMembers(self._get_ids(data))
self.status = _(u"Selected members deleted.")
self._setRedirect('portal_actions', "global/manage_members")
@@ -189,7 +191,7 @@
@property
@memoize
def mtool(self):
- return self._getTool('portal_membership')
+ return getUtility(IMembershipTool)
@memoize
def isUserManager(self):
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/password.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/password.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/password.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -24,6 +24,7 @@
from zope.schema import Password
from Products.CMFCore.interfaces import IMember
+from Products.CMFCore.interfaces import IMembershipTool
from Products.CMFCore.interfaces import IPropertiesTool
from Products.CMFCore.interfaces import ISiteRoot
from Products.CMFDefault.browser.utils import decode
@@ -116,7 +117,7 @@
@memoize
def getContent(self):
- mtool = self._getTool('portal_membership')
+ mtool = getUtility(IMembershipTool)
member = mtool.getAuthenticatedMember()
return PasswordSchemaAdapter(member)
@@ -128,7 +129,7 @@
changes = super(PasswordFormView, self).applyChanges(data)
if self.getContent().last_login_time == DateTime('1999/01/01'):
self.getContent().last_login_time = DateTime('2000/01/01')
- mtool = self._getTool('portal_membership')
+ mtool = getUtility(IMembershipTool)
mtool.credentialsChanged(self.getContent().context.getPassword(),
self.request)
return changes
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/preferences.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/preferences.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/preferences.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -24,6 +24,7 @@
from zope.schema.vocabulary import SimpleVocabulary
from Products.CMFCore.interfaces import IMember
+from Products.CMFCore.interfaces import IMembershipTool
from Products.CMFCore.interfaces import IPropertiesTool
from Products.CMFCore.utils import getToolByName
from Products.CMFDefault.browser.utils import memoize
@@ -115,7 +116,7 @@
@memoize
def getContent(self):
- mtool = self._getTool('portal_membership')
+ mtool = getUtility(IMembershipTool)
member = mtool.getAuthenticatedMember()
return PreferencesSchemaAdapter(member)
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/tests/test_members.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/tests/test_members.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/tests/test_members.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -13,18 +13,18 @@
""" Tests for membership views """
import unittest
-
from Testing import ZopeTestCase
+from DateTime.DateTime import DateTime
from zope.component import getSiteManager
from zope.publisher.browser import TestRequest
from zope.publisher.interfaces.browser import IBrowserPublisher
-from DateTime.DateTime import DateTime
+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.dummy import DummyUser
-
from Products.CMFDefault.browser.membership.members import Manage
from Products.CMFDefault.browser.membership.members import MemberProxy
from Products.CMFDefault.testing import FunctionalLayer
@@ -67,11 +67,14 @@
def setUp(self):
"""Setup a site"""
self.site = site = DummySite('site')
- self.sm = getSiteManager()
- self.mtool = site._setObject('portal_membership', DummyMemberTool())
+ self.mtool = DummyMemberTool()
+ getSiteManager().registerUtility(self.mtool, IMembershipTool)
site._setObject('portal_actions', DummyTool())
site._setObject('portal_url', DummyTool())
+ def tearDown(self):
+ cleanUp()
+
def _make_one(self, name="DummyUser"):
user = DummyUser(name)
self.mtool.addMember(user)
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/search/interfaces.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/search/interfaces.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/search/interfaces.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -17,6 +17,7 @@
from datetime import timedelta
from DateTime import DateTime
+from zope.component import getUtility
from zope.interface import directlyProvides
from zope.interface import Interface
from zope.schema import ASCIILine
@@ -24,9 +25,10 @@
from zope.schema import List
from zope.schema import TextLine
from zope.schema.interfaces import IContextSourceBinder
+from zope.schema.vocabulary import SimpleTerm
from zope.schema.vocabulary import SimpleVocabulary
-from zope.schema.vocabulary import SimpleTerm
+from Products.CMFCore.interfaces import IMembershipTool
from Products.CMFCore.utils import getToolByName
from Products.CMFDefault.utils import Message as _
@@ -50,7 +52,7 @@
def date_vocab(context):
"""Provides a list of dates for searching with"""
- mtool = getToolByName(context, 'portal_membership')
+ mtool = getUtility(IMembershipTool)
dates = [SimpleTerm(date(1970, 1, 1), date(1970, 1, 1), _(u'Ever'))]
if not mtool.isAnonymousUser():
member = mtool.getAuthenticatedMember()
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/search/search.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/search/search.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/search/search.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -11,21 +11,22 @@
#
##############################################################################
"""Search views"""
+
import datetime
+from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
+from zope.component import getUtility
from zope.formlib import form
-from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
-
+from .interfaces import ISearchSchema
+from Products.CMFCore.interfaces import IMembershipTool
+from Products.CMFDefault.browser.content.folder import BatchViewBase
+from Products.CMFDefault.browser.content.interfaces import IBatchForm
+from Products.CMFDefault.browser.utils import memoize
from Products.CMFDefault.formlib.form import EditFormBase
from Products.CMFDefault.formlib.widgets import ChoiceMultiSelectWidget
from Products.CMFDefault.utils import Message as _
-from Products.CMFDefault.browser.utils import memoize
-from Products.CMFDefault.browser.content.interfaces import IBatchForm
-from Products.CMFDefault.browser.content.folder import BatchViewBase
-from interfaces import ISearchSchema
-
EPOCH = datetime.date(1970, 1, 1)
@@ -76,7 +77,7 @@
@property
@memoize
def is_anonymous(self):
- mtool = self._getTool('portal_membership')
+ mtool = getUtility(IMembershipTool)
return mtool.isAnonymousUser()
@memoize
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/search/tests/test_search.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/search/tests/test_search.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/search/tests/test_search.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -14,16 +14,24 @@
import unittest
-from Products.CMFCore.tests.base.dummy import DummySite, DummyTool
-from Products.CMFDefault.browser.test_utils import DummyRequest, DummyResponse
+from zope.component import getSiteManager
+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.CMFDefault.browser.test_utils import DummyRequest
+
class SearchFormTests(unittest.TestCase):
def setUp(self):
- self.site = site = DummySite('site')
- site._setObject('portal_membership', DummyTool())
+ self.site = DummySite('site')
+ getSiteManager().registerUtility(DummyTool(), IMembershipTool)
+ def tearDown(self):
+ cleanUp()
+
def _getTargetClass(self):
from Products.CMFDefault.browser.search.search import Search
return Search(self.site, DummyRequest())
@@ -35,7 +43,7 @@
def test_is_not_anonymous(self):
view = self._getTargetClass()
- self.site.portal_membership.anon = 0
+ getSiteManager().getUtility(IMembershipTool).anon = 0
self.assertFalse(view.is_anonymous)
self.assertNotEqual(view.search_fields.get('review_state'), None)
@@ -59,6 +67,7 @@
view.handle_search('search', {})
self.assertEqual(view.template.filename, view.results.filename)
+
def test_suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(SearchFormTests))
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/tests/test_icons.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/tests/test_icons.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/tests/test_icons.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -16,11 +16,14 @@
import unittest
from zope.component.testing import PlacelessSetup
-from test_ursa import (
- DummyRequest, DummySite, DummyContext,
- DummyPropertiesTool, DummyURLTool, DummyActionsTool
- )
+from .test_ursa import DummyActionsTool
+from .test_ursa import DummyContext
+from .test_ursa import DummyPropertiesTool
+from .test_ursa import DummyRequest
+from .test_ursa import DummyURLTool
+from Products.CMFCore.interfaces import IMembershipTool
+
class AbsolutIconsTests(unittest.TestCase, PlacelessSetup):
def setUp(self):
@@ -49,7 +52,7 @@
if types is not None:
site.portal_types = DummyTypesTool(types)
site.portal_url = DummyURLTool(site)
- site.portal_membership = DummyMembershipTool()
+ sm.registerUtility(DummyMembershipTool(), IMembershipTool)
if actions is not None:
site.portal_actions = DummyActionsTool(actions)
site.absolute_url = lambda: 'http://example.com'
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/tests/test_ursa.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/tests/test_ursa.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/tests/test_ursa.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -14,9 +14,14 @@
"""
import unittest
+
+from zope.component import getSiteManager
from zope.component.testing import PlacelessSetup
+from Products.CMFCore.interfaces import IMembershipTool
+from Products.CMFCore.interfaces import IPropertiesTool
+
class UrsineGlobalsTests(unittest.TestCase, PlacelessSetup):
def setUp(self):
@@ -37,12 +42,12 @@
return self._getTargetClass()(context, request)
def _makeContext(self):
- from zope.component import getSiteManager
- from Products.CMFCore.interfaces import IPropertiesTool
context = DummyContext()
+ sm = getSiteManager()
tool = context.portal_properties = DummyPropertiesTool()
- sm = getSiteManager()
sm.registerUtility(tool, IPropertiesTool)
+ tool = context.portal_membership = DummyMembershipTool()
+ sm.registerUtility(tool, IMembershipTool)
return context
def test_ctor_wo_def_charset_doesnt_set_content_type(self):
@@ -92,7 +97,7 @@
def test_mtool(self):
view = self._makeOne()
- tool = view.context.portal_membership = DummyMembershipTool()
+ tool = view.context.portal_membership
self.failUnless(view.mtool is tool)
def test_atool(self):
@@ -225,7 +230,9 @@
def test_breadcrumbs_at_root(self):
PATHS_TO_CONTEXTS = []
site = DummySite(PATHS_TO_CONTEXTS)
+ sm = getSiteManager()
ptool = site.portal_properties = DummyPropertiesTool()
+ sm.registerUtility(ptool, IPropertiesTool)
ptool.title = lambda: 'SITE'
utool = site.portal_url = DummyURLTool(site, PATHS_TO_CONTEXTS)
utool.__call__ = lambda: 'http://example.com/'
@@ -247,7 +254,9 @@
(('parent', 'child'), context),
]
site = DummySite(PATHS_TO_CONTEXTS)
+ sm = getSiteManager()
ptool = context.portal_properties = DummyPropertiesTool()
+ sm.registerUtility(ptool, IPropertiesTool)
ptool.title = lambda: 'SITE'
utool = context.portal_url = DummyURLTool(site, PATHS_TO_CONTEXTS)
utool.__call__ = lambda: 'http://example.com/'
@@ -269,39 +278,39 @@
def test_member(self):
view = self._makeOne()
- tool = view.context.portal_membership = DummyMembershipTool()
+ tool = view.context.portal_membership
member = DummyUser()
tool.getAuthenticatedMember = lambda: member
self.failUnless(view.member is member)
def test_membersfolder(self):
view = self._makeOne()
- tool = view.context.portal_membership = DummyMembershipTool()
+ tool = view.context.portal_membership
membersfolder = object()
tool.getMembersFolder = lambda: membersfolder
self.failUnless(view.membersfolder is membersfolder)
def test_isAnon_tool_returns_True(self):
view = self._makeOne()
- tool = view.context.portal_membership = DummyMembershipTool()
+ tool = view.context.portal_membership
tool.isAnonymousUser = lambda: True
self.failUnless(view.isAnon)
def test_isAnon_tool_returns_False(self):
view = self._makeOne()
- tool = view.context.portal_membership = DummyMembershipTool()
+ tool = view.context.portal_membership
tool.isAnonymousUser = lambda: False
self.failIf(view.isAnon)
def test_membername_anonymous(self):
view = self._makeOne()
- tool = view.context.portal_membership = DummyMembershipTool()
+ tool = view.context.portal_membership
tool.isAnonymousUser = lambda: True
self.assertEqual(view.membername, u'Guest')
def test_membername_not_anonymous(self):
view = self._makeOne()
- tool = view.context.portal_membership = DummyMembershipTool()
+ tool = view.context.portal_membership
tool.isAnonymousUser = lambda: False
member = DummyUser()
member.getProperty = lambda x: 'John Smith'
@@ -310,7 +319,7 @@
def test_membername_not_anonymous_wo_fullname(self):
view = self._makeOne()
- tool = view.context.portal_membership = DummyMembershipTool()
+ tool = view.context.portal_membership
tool.isAnonymousUser = lambda: False
member = DummyUser()
member.getId = lambda: 'luser'
@@ -394,6 +403,7 @@
tool = view.context.portal_actions = DummyActionsTool(ACTIONS)
self.assertEqual(view.workflow_actions, ACTIONS['workflow'])
+
class DummyContext:
pass
@@ -471,6 +481,7 @@
def __init__(self):
self.RESPONSE = DummyResponse()
+
def test_suite():
return unittest.TestSuite((
unittest.makeSuite(UrsineGlobalsTests),
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/ursa.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/ursa.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/skins/ursa.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -13,12 +13,17 @@
"""
"""
+from zope.component import getUtility
+
+from Products.CMFCore.interfaces import IMembershipTool
+from Products.CMFCore.interfaces import IPropertiesTool
from Products.CMFCore.utils import getToolByName
+from Products.CMFDefault.browser.utils import memoize
+from Products.CMFDefault.browser.utils import ViewBase
+from Products.CMFDefault.utils import decode
from Products.CMFDefault.utils import Message as _
-from Products.CMFDefault.utils import decode
-from Products.CMFDefault.browser.utils import ViewBase
-from Products.CMFDefault.browser.utils import memoize
+
class UrsineGlobals(ViewBase):
""" Provide lazy / efficient template-level globals.
@@ -38,7 +43,7 @@
@property
@memoize
def ptool(self):
- return self._getTool('portal_properties')
+ return getUtility(IPropertiesTool)
@property
@memoize
@@ -48,7 +53,7 @@
@property
@memoize
def mtool(self):
- return self._getTool('portal_membership')
+ return getUtility(IMembershipTool)
@property
@memoize
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/utils.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/utils.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/utils.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -18,6 +18,7 @@
from Products.Five import BrowserView
from zope.component import getUtility
+from Products.CMFCore.interfaces import IMembershipTool
from Products.CMFCore.interfaces import IPropertiesTool
from Products.CMFCore.utils import getToolByName
from Products.CMFDefault.permissions import View
@@ -69,7 +70,7 @@
@memoize
def _checkPermission(self, permission):
- mtool = self._getTool('portal_membership')
+ mtool = getUtility(IMembershipTool)
return mtool.checkPermission(permission, self.context)
@memoize
Modified: Products.CMFDefault/trunk/Products/CMFDefault/profiles/default/componentregistry.xml
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/profiles/default/componentregistry.xml 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/profiles/default/componentregistry.xml 2011-09-13 09:22:16 UTC (rev 122785)
@@ -3,12 +3,20 @@
<adapters/>
<subscribers/>
<utilities>
+ <utility interface="Products.CMFCore.interfaces.ICookieCrumbler"
+ object="cookie_authentication"/>
<utility interface="Products.CMFCore.interfaces.IDiscussionTool"
object="portal_discussion"/>
+ <utility interface="Products.CMFCore.interfaces.IMemberDataTool"
+ object="portal_memberdata"/>
+ <utility interface="Products.CMFCore.interfaces.IMembershipTool"
+ object="portal_membership"/>
<utility interface="Products.CMFCore.interfaces.IMetadataTool"
object="portal_metadata"/>
<utility interface="Products.CMFCore.interfaces.IPropertiesTool"
object="portal_properties"/>
+ <utility interface="Products.CMFCore.interfaces.IRegistrationTool"
+ object="portal_registration"/>
<utility interface="Products.CMFCore.interfaces.ISiteRoot" object=""/>
<utility interface="Products.CMFCore.interfaces.ISyndicationTool"
object="portal_syndication"/>
Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/addtoFavorites.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/addtoFavorites.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/addtoFavorites.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -1,8 +1,8 @@
##parameters=
##
-from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.utils import getUtilityByInterfaceName
-mtool = getToolByName(script, 'portal_membership')
+mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
home = mtool.getHomeFolder()
if not hasattr(home, 'Favorites'):
Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/addtoFavorites.py
___________________________________________________________________
Deleted: svn:keywords
- Author Date Id Revision
Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/change_password.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/change_password.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/change_password.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -1,11 +1,11 @@
##parameters=password, confirm, domains=None, **kw
##title=Action to change password
##
-from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.utils import getUtilityByInterfaceName
from Products.CMFDefault.utils import Message as _
-mtool = getToolByName(script, 'portal_membership')
-rtool = getToolByName(script, 'portal_registration')
+mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
+rtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IRegistrationTool')
result = rtool.testPasswordValidity(password, confirm)
if result:
Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/folder_localrole_edit.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/folder_localrole_edit.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/folder_localrole_edit.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -1,10 +1,10 @@
##parameters=change_type
##title=Set local roles
##
-from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.utils import getUtilityByInterfaceName
from Products.CMFDefault.utils import Message as _
-mtool = getToolByName(script, 'portal_membership')
+mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
if change_type == 'add':
mtool.setLocalRoles(obj=context,
Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/logout.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/logout.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/logout.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -2,6 +2,7 @@
##title=Logout handler
##parameters=
from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.utils import getUtilityByInterfaceName
stool = getToolByName(context, 'portal_skins')
utool = getToolByName(context, 'portal_url')
@@ -9,7 +10,7 @@
stool.clearSkinCookie()
try:
- cctool = getToolByName(context, 'cookie_authentication')
+ cctool = getUtilityByInterfaceName('Products.CMFCore.interfaces.ICookieCrumbler')
cctool.logout(REQUEST.RESPONSE)
except AttributeError:
REQUEST.RESPONSE.expireCookie('__ac', path='/')
Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/members_add_control.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/members_add_control.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/members_add_control.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -2,13 +2,12 @@
##title=Add a member
##
from Products.CMFCore.utils import getUtilityByInterfaceName
-from Products.CMFCore.utils import getToolByName
from Products.CMFDefault.permissions import ManageUsers
from Products.CMFDefault.utils import Message as _
-mtool = getToolByName(script, 'portal_membership')
+mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
ptool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool')
-rtool = getToolByName(script, 'portal_registration')
+rtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IRegistrationTool')
try:
rtool.addMember( id=member_id, password=password,
Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/members_delete_control.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/members_delete_control.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/members_delete_control.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -1,10 +1,10 @@
##parameters=ids, **kw
##title=Delete members
##
-from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.utils import getUtilityByInterfaceName
from Products.CMFDefault.utils import Message as _
-mtool = getToolByName(script, 'portal_membership')
+mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
mtool.deleteMembers(ids, REQUEST=context.REQUEST)
Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/validatePassword.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/validatePassword.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/validatePassword.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -1,12 +1,9 @@
-## Script (Python) "validatePassword"
##parameters=password='', confirm='', **kw
-##title=
##
from Products.CMFCore.utils import getUtilityByInterfaceName
-from Products.CMFCore.utils import getToolByName
ptool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool')
-rtool = getToolByName(script, 'portal_registration')
+rtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IRegistrationTool')
if ptool.getProperty('validate_email'):
password = rtool.generatePassword()
Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_control/validatePassword.py
___________________________________________________________________
Deleted: svn:keywords
- Author Date Id Revision
Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/folder_contents.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/folder_contents.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/folder_contents.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -3,6 +3,7 @@
from ZTUtils import Batch
from ZTUtils import make_query
from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.utils import getUtilityByInterfaceName
from Products.CMFDefault.permissions import AddPortalContent
from Products.CMFDefault.permissions import DeleteObjects
from Products.CMFDefault.permissions import ListFolderContents
@@ -12,7 +13,7 @@
from Products.CMFDefault.utils import html_marshal
from Products.CMFDefault.utils import Message as _
-mtool = getToolByName(script, 'portal_membership')
+mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
utool = getToolByName(script, 'portal_url')
portal_url = utool()
Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/getMainGlobals.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/getMainGlobals.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/getMainGlobals.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -7,7 +7,7 @@
atool = getToolByName(script, 'portal_actions')
caltool = getToolByName(script, 'portal_calendar', None)
-mtool = getToolByName(script, 'portal_membership')
+mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
ptool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool')
utool = getToolByName(script, 'portal_url')
wtool = getToolByName(script, 'portal_workflow')
Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/join_form.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/join_form.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/join_form.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -7,7 +7,7 @@
from Products.CMFDefault.utils import Message as _
atool = getToolByName(script, 'portal_actions')
-mtool = getToolByName(script, 'portal_membership')
+mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
ptool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool')
utool = getToolByName(script, 'portal_url')
portal_url = utool()
Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/logged_in.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/logged_in.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/logged_in.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -6,7 +6,7 @@
from Products.CMFDefault.utils import Message as _
atool = getToolByName(script, 'portal_actions')
-mtool = getToolByName(script, 'portal_membership')
+mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
ptool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool')
stool = getToolByName(script, 'portal_skins')
Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/members_delete_form.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/members_delete_form.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/members_delete_form.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -1,12 +1,13 @@
##parameters=ids, b_start=0, delete='', cancel=''
##
from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.utils import getUtilityByInterfaceName
from Products.CMFDefault.utils import decode
from Products.CMFDefault.utils import html_marshal
from Products.CMFDefault.utils import Message as _
atool = getToolByName(script, 'portal_actions')
-mtool = getToolByName(script, 'portal_membership')
+mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
form = context.REQUEST.form
Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/members_manage_form.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/members_manage_form.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/members_manage_form.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -2,12 +2,13 @@
##
from ZTUtils import Batch
from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.utils import getUtilityByInterfaceName
from Products.CMFDefault.utils import decode
from Products.CMFDefault.utils import html_marshal
from Products.CMFDefault.utils import Message as _
atool = getToolByName(script, 'portal_actions')
-mtool = getToolByName(script, 'portal_membership')
+mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
form = context.REQUEST.form
Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/password_form.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/password_form.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/password_form.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -6,7 +6,7 @@
from Products.CMFDefault.utils import Message as _
atool = getToolByName(script, 'portal_actions')
-mtool = getToolByName(script, 'portal_membership')
+mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
ptool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool')
utool = getToolByName(script, 'portal_url')
member = mtool.getAuthenticatedMember()
Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/password_form.py
___________________________________________________________________
Deleted: svn:keywords
- Id
Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/search_form.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/search_form.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/search_form.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -1,12 +1,13 @@
##parameters=search=''
##
from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.utils import getUtilityByInterfaceName
from Products.CMFDefault.permissions import ReviewPortalContent
from Products.CMFDefault.utils import decode
from Products.CMFDefault.utils import Message as _
ctool = getToolByName(script, 'portal_catalog')
-mtool = getToolByName(script, 'portal_membership')
+mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
ttool = getToolByName(script, 'portal_types')
utool = getToolByName(script, 'portal_url')
portal_url = utool()
Modified: Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/setup_talkback_tree.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/setup_talkback_tree.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/skins/zpt_generic/setup_talkback_tree.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -2,11 +2,11 @@
##title=Standard Tree
##
from ZTUtils import SimpleTreeMaker
-from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.utils import getUtilityByInterfaceName
from Products.CMFDefault.permissions import ManagePortal
from Products.CMFDefault.utils import decode
-mtool = getToolByName(script, 'portal_membership')
+mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
tm = SimpleTreeMaker('tb_tree')
def getKids(object):
Modified: Products.CMFDefault/trunk/Products/CMFDefault/tests/RegistrationTool.txt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/tests/RegistrationTool.txt 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/tests/RegistrationTool.txt 2011-09-13 09:22:16 UTC (rev 122785)
@@ -29,13 +29,14 @@
>>> from zope.component import getSiteManager
>>> from zope.component import getUtility
>>> from zope.site.hooks import setSite
+ >>> from Products.CMFCore.interfaces import IMembershipTool
>>> from Products.MailHost.interfaces import IMailHost
>>> setSite(app.site)
>>> app.site.setupCurrentSkin(app.REQUEST)
>>> sm = getSiteManager()
>>> sm.registerUtility(MailHost(), IMailHost)
+ >>> sm.registerUtility(MembershipTool(), IMembershipTool)
>>> rtool = app.site.portal_registration
- >>> rtool.portal_membership = MembershipTool()
>>> rtool.password_email = password_email
>>> rtool.mail_password_response = mail_password_response
>>> rtool.registered_email = registered_email
@@ -57,7 +58,7 @@
Now we have to restore the normal MembershipTool::
- >>> del rtool.portal_membership
+ >>> sm.registerUtility(app.site.portal_membership, IMembershipTool)
password_email and registered_email
-----------------------------------
Modified: Products.CMFDefault/trunk/Products/CMFDefault/tests/test_RegistrationTool.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/tests/test_RegistrationTool.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/tests/test_RegistrationTool.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -17,10 +17,12 @@
from Testing import ZopeTestCase
from Acquisition import Implicit
+from zope.component import getSiteManager
from zope.interface.verify import verifyClass
from zope.testing.cleanup import cleanUp
-from Products.CMFCore.tests.base.testcase import RequestTest
+from Products.CMFCore.interfaces import IMembershipTool
+from Products.CMFCore.tests.base.testcase import TransactionalTest
from Products.CMFDefault.testing import FunctionalLayer
@@ -30,7 +32,7 @@
return None
-class RegistrationToolTests(RequestTest):
+class RegistrationToolTests(TransactionalTest):
def _getTargetClass(self):
from Products.CMFDefault.RegistrationTool import RegistrationTool
@@ -42,14 +44,14 @@
def tearDown(self):
cleanUp()
- RequestTest.tearDown(self)
+ TransactionalTest.tearDown(self)
def test_interfaces(self):
from Products.CMFCore.interfaces import IRegistrationTool
verifyClass(IRegistrationTool, self._getTargetClass())
- def test_spamcannon_collector_243( self ):
+ def test_spamcannon_collector_243(self):
INJECTED_HEADERS = """
To:someone at example.com
@@ -61,7 +63,7 @@
"""
rtool = self._makeOne().__of__(self.app)
- self.app.portal_membership = FauxMembershipTool()
+ getSiteManager().registerUtility(FauxMembershipTool(), IMembershipTool)
props = { 'email' : INJECTED_HEADERS
, 'username' : 'username'
Modified: Products.CMFDefault/trunk/Products/CMFDefault/upgrade/configure.zcml
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/upgrade/configure.zcml 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/upgrade/configure.zcml 2011-09-13 09:22:16 UTC (rev 122785)
@@ -224,6 +224,13 @@
checker=".to23.check_member_data_tool"
/>
+ <genericsetup:upgradeStep
+ title="Upgrade root site manager"
+ description="Add utility registrations if missing."
+ handler=".to23.upgrade_root_site_manager"
+ checker=".to23.check_root_site_manager"
+ />
+
</genericsetup:upgradeSteps>
<genericsetup:upgradeStep
Modified: Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to23.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to23.py 2011-09-13 09:19:30 UTC (rev 122784)
+++ Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to23.py 2011-09-13 09:22:16 UTC (rev 122785)
@@ -15,12 +15,14 @@
import logging
-from zope.component import getMultiAdapter
-
from Acquisition import aq_base
from Acquisition import aq_inner
from Acquisition import aq_parent
from OFS.userfolder import UserFolder
+from zope.component import getMultiAdapter
+from zope.component.interfaces import ComponentLookupError
+from zope.dottedname.resolve import resolve
+
from Products.CMFCore.utils import getToolByName
from Products.GenericSetup.context import SetupEnviron
from Products.GenericSetup.interfaces import IBody
@@ -259,3 +261,54 @@
if changed:
mdtool._p_changed = True
logger.info("Member data tool property modes fixed.")
+
+_TOOL_UTILITIES = (
+ ('cookie_authentication', 'Products.CMFCore.interfaces.ICookieCrumbler'),
+ ('portal_memberdata', 'Products.CMFCore.interfaces.IMemberDataTool'),
+ ('portal_membership', 'Products.CMFCore.interfaces.IMembershipTool'),
+ ('portal_registration', 'Products.CMFCore.interfaces.IRegistrationTool'),
+)
+
+def check_root_site_manager(tool):
+ """2.2.x to 2.3.0 upgrade step checker
+ """
+ portal = aq_parent(aq_inner(tool))
+ try:
+ sm = portal.getSiteManager()
+ except ComponentLookupError:
+ return True
+
+ for tool_id, tool_interface in _TOOL_UTILITIES:
+ tool_obj = getToolByName(portal, tool_id, default=None)
+ try:
+ iface = resolve(tool_interface)
+ except ImportError:
+ continue
+
+ if tool_obj is not None and sm.queryUtility(iface) is None:
+ return True
+
+ return False
+
+def upgrade_root_site_manager(tool):
+ """2.2.x to 2.3.0 upgrade step handler
+ """
+ logger = logging.getLogger('GenericSetup.upgrade')
+ portal = aq_parent(aq_inner(tool))
+ try:
+ sm = portal.getSiteManager()
+ except ComponentLookupError:
+ logger.warning("Site manager missing.")
+ return
+
+ for tool_id, tool_interface in _TOOL_UTILITIES:
+ tool_obj = getToolByName(portal, tool_id, default=None)
+ try:
+ iface = resolve(tool_interface)
+ except ImportError:
+ continue
+
+ if tool_obj is not None and sm.queryUtility(iface) is None:
+ sm.registerUtility(tool_obj, iface)
+ logger.info('Registered %s for interface %s' % (tool_id,
+ tool_interface))
More information about the checkins
mailing list