[Checkins] SVN: Products.CMFCore/trunk/Products/CMFCore/ - converted one more tool
Yvo Schubbe
y.2011 at wcm-solutions.de
Fri Sep 23 09:35:09 EST 2011
Log message for revision 122908:
- converted one more tool
Changed:
U Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt
U Products.CMFCore/trunk/Products/CMFCore/CachingPolicyManager.py
UU Products.CMFCore/trunk/Products/CMFCore/ContentTypeRegistry.py
U Products.CMFCore/trunk/Products/CMFCore/DynamicType.py
UU Products.CMFCore/trunk/Products/CMFCore/PortalFolder.py
U Products.CMFCore/trunk/Products/CMFCore/TypesTool.py
U Products.CMFCore/trunk/Products/CMFCore/WorkflowTool.py
UU Products.CMFCore/trunk/Products/CMFCore/exportimport/content.py
U Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_content.py
U Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_typeinfo.py
UU Products.CMFCore/trunk/Products/CMFCore/exportimport/typeinfo.py
UU Products.CMFCore/trunk/Products/CMFCore/namespace.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_OpaqueItems.py
U Products.CMFCore/trunk/Products/CMFCore/tests/test_PortalContent.py
U Products.CMFCore/trunk/Products/CMFCore/tests/test_PortalFolder.py
U Products.CMFCore/trunk/Products/CMFCore/tests/test_WorkflowTool.py
-=-
Modified: Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt 2011-09-23 14:20:30 UTC (rev 122907)
+++ Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt 2011-09-23 14:35:09 UTC (rev 122908)
@@ -9,8 +9,8 @@
- tools: Converted several tools into utilities.
ActionsTool, CatalogTool, CookieCrumbler, MemberDataTool, MembershipTool,
- RegistrationTool, SkinsTool, URLTool and WorkflowTool are now local
- utilities.
+ RegistrationTool, SkinsTool, TypesTool, URLTool and WorkflowTool are now
+ local utilities.
- MemberDataTool: Changed property modes to 'w' and added 'fullname' property.
Modified: Products.CMFCore/trunk/Products/CMFCore/CachingPolicyManager.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/CachingPolicyManager.py 2011-09-23 14:20:30 UTC (rev 122907)
+++ Products.CMFCore/trunk/Products/CMFCore/CachingPolicyManager.py 2011-09-23 14:35:09 UTC (rev 122908)
@@ -818,34 +818,30 @@
#
# 'portal_caching' interface methods
#
- security.declareProtected( View, 'getHTTPCachingHeaders' )
- def getHTTPCachingHeaders( self, content, view_method, keywords, time=None):
+ security.declareProtected(View, 'getHTTPCachingHeaders')
+ def getHTTPCachingHeaders(self, content, view_method, keywords, time=None):
"""
Return a list of HTTP caching headers based on 'content',
'view_method', and 'keywords'.
"""
- # XXX: this method violates the rules for tools/utilities:
- # createCPContext depends on a non-utility tool
- context = createCPContext( content, view_method, keywords, time=time )
- for policy_id, policy in self.listPolicies():
+ context = createCPContext(content, view_method, keywords, time=time)
+ for _policy_id, policy in self.listPolicies():
- headers = policy.getHeaders( context )
+ headers = policy.getHeaders(context)
if headers:
return headers
return ()
- security.declareProtected( View, 'getModTimeAndETag' )
- def getModTimeAndETag( self, content, view_method, keywords, time=None):
+ security.declareProtected(View, 'getModTimeAndETag')
+ def getModTimeAndETag(self, content, view_method, keywords, time=None):
""" Return the modification time and ETag for the content object,
view method, and keywords as the tuple (modification_time, etag,
set_last_modified_header), where modification_time is a DateTime,
or None.
"""
- # XXX: this method violates the rules for tools/utilities:
- # createCPContext depends on a non-utility tool
- context = createCPContext( content, view_method, keywords, time=time )
- for policy_id, policy in self.listPolicies():
+ context = createCPContext(content, view_method, keywords, time=time)
+ for _policy_id, policy in self.listPolicies():
if policy.getEnable304s() and policy.testPredicate(context):
last_modified = policy._mtime_func(context)
Modified: Products.CMFCore/trunk/Products/CMFCore/ContentTypeRegistry.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/ContentTypeRegistry.py 2011-09-23 14:20:30 UTC (rev 122907)
+++ Products.CMFCore/trunk/Products/CMFCore/ContentTypeRegistry.py 2011-09-23 14:35:09 UTC (rev 122908)
@@ -11,8 +11,6 @@
#
##############################################################################
""" Basic Site content type registry
-
-$Id$
"""
import os
@@ -24,14 +22,15 @@
from App.special_dtml import DTMLFile
from OFS.SimpleItem import SimpleItem
from Persistence import PersistentMapping
+from zope.component import getUtility
from zope.interface import implements
from ZPublisher.mapply import mapply
from Products.CMFCore.interfaces import IContentTypeRegistry
from Products.CMFCore.interfaces import IContentTypeRegistryPredicate
+from Products.CMFCore.interfaces import ITypesTool
from Products.CMFCore.permissions import ManagePortal
from Products.CMFCore.utils import _dtmldir
-from Products.CMFCore.utils import getToolByName
class MajorMinorPredicate( SimpleItem ):
@@ -168,7 +167,7 @@
if self.extensions is None:
return 0
- base, ext = os.path.splitext( name )
+ _base, ext = os.path.splitext(name)
if ext and ext[ 0 ] == '.':
ext = ext[ 1: ]
@@ -426,26 +425,23 @@
+ '?manage_tabs_message=Predicate+removed.'
)
- security.declareProtected( ManagePortal, 'manage_testRegistry' )
- manage_testRegistry = DTMLFile( 'registryTest', _dtmldir )
+ security.declareProtected(ManagePortal, 'manage_testRegistry')
+ manage_testRegistry = DTMLFile('registryTest', _dtmldir)
- security.declareProtected( ManagePortal, 'doTestRegistry' )
- def doTestRegistry( self, name, content_type, body, REQUEST ):
+ security.declareProtected(ManagePortal, 'doTestRegistry')
+ def doTestRegistry(self, name, content_type, body, REQUEST):
"""
"""
- # XXX: this method violates the rules for tools/utilities:
- # it depends on a non-utility tool
- typeName = self.findTypeName( name, content_type, body )
+ typeName = self.findTypeName(name, content_type, body)
if typeName is None:
typeName = '<unknown>'
else:
- types_tool = getToolByName(self, 'portal_types')
- typeName = types_tool.getTypeInfo(typeName).Title()
- REQUEST[ 'RESPONSE' ].redirect( self.absolute_url()
- + '/manage_testRegistry'
- + '?testResults=Type:+%s'
- % urllib.quote( typeName )
- )
+ ttool = getUtility(ITypesTool)
+ typeName = ttool.getTypeInfo(typeName).Title()
+ REQUEST['RESPONSE'].redirect(self.absolute_url()
+ + '/manage_testRegistry'
+ + '?testResults=Type:+%s'
+ % urllib.quote(typeName))
#
# Predicate manipulation
@@ -532,7 +528,7 @@
"""
Bind the given predicate to a particular type object.
"""
- pred, oldTypeObjName = self.predicates[ predicate_id ]
+ pred, _oldTypeObjName = self.predicates[predicate_id]
self.predicates[ predicate_id ] = ( pred, typeObjectName )
#
Property changes on: Products.CMFCore/trunk/Products/CMFCore/ContentTypeRegistry.py
___________________________________________________________________
Deleted: svn:keywords
- Author Date Id Revision
Modified: Products.CMFCore/trunk/Products/CMFCore/DynamicType.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/DynamicType.py 2011-09-23 14:20:30 UTC (rev 122907)
+++ Products.CMFCore/trunk/Products/CMFCore/DynamicType.py 2011-09-23 14:35:09 UTC (rev 122908)
@@ -18,14 +18,15 @@
from App.class_init import InitializeClass
from zope.component import getUtility
from zope.component import queryMultiAdapter
+from zope.component import queryUtility
from zope.component.interfaces import ComponentLookupError
from zope.interface import implements
from zope.publisher.defaultview import queryDefaultViewName
from Products.CMFCore.Expression import getExprContext
from Products.CMFCore.interfaces import IDynamicType
+from Products.CMFCore.interfaces import ITypesTool
from Products.CMFCore.interfaces import IURLTool
-from Products.CMFCore.utils import getToolByName
class DynamicType:
@@ -68,7 +69,7 @@
def getTypeInfo(self):
""" Get the TypeInformation object specified by the portal type.
"""
- tool = getToolByName(self, 'portal_types', None)
+ tool = queryUtility(ITypesTool)
if tool is None:
return None
return tool.getTypeInfo(self) # Can return None.
Modified: Products.CMFCore/trunk/Products/CMFCore/PortalFolder.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/PortalFolder.py 2011-09-23 14:20:30 UTC (rev 122907)
+++ Products.CMFCore/trunk/Products/CMFCore/PortalFolder.py 2011-09-23 14:35:09 UTC (rev 122908)
@@ -11,8 +11,6 @@
#
##############################################################################
""" PortalFolder: CMF-enabled Folder objects.
-
-$Id$
"""
import base64
@@ -25,6 +23,7 @@
from App.class_init import InitializeClass
from OFS.Folder import Folder
from OFS.OrderSupport import OrderSupport
+from zope.component import getUtility
from zope.component.factory import Factory
from zope.interface import implements
@@ -36,6 +35,7 @@
from Products.CMFCore.interfaces import IFolderish
from Products.CMFCore.interfaces import IMutableMinimalDublinCore
from Products.CMFCore.interfaces import ISiteRoot
+from Products.CMFCore.interfaces import ITypesTool
from Products.CMFCore.permissions import AddPortalContent
from Products.CMFCore.permissions import AddPortalFolders
from Products.CMFCore.permissions import DeleteObjects
@@ -125,9 +125,9 @@
List type info objects for types which can be added in
this folder.
"""
- portal_types = getToolByName(self, 'portal_types')
- myType = portal_types.getTypeInfo(self)
- result = portal_types.listTypeInfo()
+ ttool = getUtility(ITypesTool)
+ myType = ttool.getTypeInfo(self)
+ result = ttool.listTypeInfo()
if myType is not None:
return [t for t in result if myType.allowType(t.getId()) and
@@ -149,8 +149,8 @@
pt = filt.get('portal_type', [])
if isinstance(pt, basestring):
pt = [pt]
- types_tool = getToolByName(self, 'portal_types')
- allowed_types = types_tool.listContentTypes()
+ ttool = getUtility(ITypesTool)
+ allowed_types = ttool.listContentTypes()
if not pt:
pt = allowed_types
else:
@@ -284,14 +284,14 @@
def invokeFactory(self, type_name, id, RESPONSE=None, *args, **kw):
""" Invokes the portal_types tool.
"""
- pt = getToolByName(self, 'portal_types')
- myType = pt.getTypeInfo(self)
+ ttool = getUtility(ITypesTool)
+ myType = ttool.getTypeInfo(self)
if myType is not None:
if not myType.allowType( type_name ):
raise ValueError('Disallowed subobject type: %s' % type_name)
- return pt.constructContent(type_name, self, id, RESPONSE, *args, **kw)
+ return ttool.constructContent(type_name, self, id, RESPONSE, *args, **kw)
security.declareProtected(AddPortalContent, 'checkIdAvailable')
def checkIdAvailable(self, id):
@@ -405,15 +405,15 @@
if type_name is not None:
- pt = getToolByName(self, 'portal_types')
- myType = pt.getTypeInfo(self)
+ ttool = getUtility(ITypesTool)
+ myType = ttool.getTypeInfo(self)
if myType is not None and not myType.allowType(type_name):
raise ValueError('Disallowed subobject type: %s'
% type_name)
# Check for workflow guards
- objType = pt.getTypeInfo(type_name)
+ objType = ttool.getTypeInfo(type_name)
if ( objType is not None and
not objType._checkWorkflowAllowed(self) ):
raise ValueError('Pasting not allowed in this workflow')
Property changes on: Products.CMFCore/trunk/Products/CMFCore/PortalFolder.py
___________________________________________________________________
Deleted: svn:keywords
- Author Date Id Revision
Modified: Products.CMFCore/trunk/Products/CMFCore/TypesTool.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/TypesTool.py 2011-09-23 14:20:30 UTC (rev 122907)
+++ Products.CMFCore/trunk/Products/CMFCore/TypesTool.py 2011-09-23 14:35:09 UTC (rev 122908)
@@ -22,15 +22,16 @@
from Acquisition import aq_get
from App.class_init import InitializeClass
from App.special_dtml import DTMLFile
+from OFS.ObjectManager import IFAwareObjectManager
from OFS.OrderedFolder import OrderedFolder
-from OFS.ObjectManager import IFAwareObjectManager
from Products.PageTemplates.PageTemplateFile import PageTemplateFile
from zope.component import getUtility
from zope.component import queryUtility
from zope.component.interfaces import IFactory
+from zope.container.contained import notifyContainerModified
from zope.container.contained import ObjectAddedEvent
-from zope.container.contained import notifyContainerModified
from zope.event import notify
+from zope.globalrequest import getRequest
from zope.i18nmessageid import Message
from zope.interface import implements
from zope.lifecycleevent import ObjectCreatedEvent
@@ -51,6 +52,7 @@
from Products.CMFCore.utils import _checkPermission
from Products.CMFCore.utils import _dtmldir
from Products.CMFCore.utils import _wwwdir
+from Products.CMFCore.utils import registerToolInterface
from Products.CMFCore.utils import SimpleItemWithProperties
from Products.CMFCore.utils import UniqueObject
@@ -537,8 +539,6 @@
Does not do any security checks.
"""
- # XXX: this method violates the rules for tools/utilities:
- # it depends on self.REQUEST
id = str(id)
if self.product:
@@ -547,7 +547,10 @@
if getattr(aq_base(m), 'isDocTemp', 0):
kw['id'] = id
- newid = m(m.aq_parent, self.REQUEST, *args, **kw)
+ request = aq_get(self, 'REQUEST', None)
+ if request is None:
+ request = getRequest()
+ newid = m(m.aq_parent, request, *args, **kw)
else:
newid = m(id, *args, **kw)
# allow factory to munge ID
@@ -855,10 +858,11 @@
_dict = {}
for ti in self.listTypeInfo():
aliases = ti.getMethodAliases()
- for k, v in aliases.items():
+ for k in aliases.keys():
_dict[k] = 1
rval = _dict.keys()
rval.sort()
return rval
InitializeClass(TypesTool)
+registerToolInterface('portal_types', ITypesTool)
Modified: Products.CMFCore/trunk/Products/CMFCore/WorkflowTool.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/WorkflowTool.py 2011-09-23 14:20:30 UTC (rev 122907)
+++ Products.CMFCore/trunk/Products/CMFCore/WorkflowTool.py 2011-09-23 14:35:09 UTC (rev 122908)
@@ -27,14 +27,14 @@
from zope.component import adapts
from zope.component import getMultiAdapter
from zope.component import queryMultiAdapter
+from zope.component import queryUtility
from zope.event import notify
-from zope.globalrequest import getRequest
from zope.interface import implementer
from zope.interface import implements
-from ZPublisher.BaseRequest import RequestContainer
from Products.CMFCore.ActionProviderBase import ActionProviderBase
from Products.CMFCore.interfaces import IConfigurableWorkflowTool
+from Products.CMFCore.interfaces import ITypesTool
from Products.CMFCore.interfaces import IWorkflowAware
from Products.CMFCore.interfaces import IWorkflowDefinition
from Products.CMFCore.interfaces import IWorkflowHistory
@@ -42,7 +42,6 @@
from Products.CMFCore.interfaces import IWorkflowTool
from Products.CMFCore.permissions import ManagePortal
from Products.CMFCore.utils import _dtmldir
-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
@@ -470,9 +469,7 @@
def getDefaultChainFor(self, ob):
""" Get the default chain, if applicable, for ob.
"""
- request_container = RequestContainer(REQUEST=getRequest())
- rich_context = self.__of__(request_container)
- ttool = getToolByName(rich_context, 'portal_types', None)
+ ttool = queryUtility(ITypesTool)
if ttool is not None and ttool.getTypeInfo(ob) is not None:
return self._default_chain
return ()
@@ -506,9 +503,7 @@
def _listTypeInfo(self):
""" List the portal types which are available.
"""
- request_container = RequestContainer(REQUEST=getRequest())
- rich_context = self.__of__(request_container)
- ttool = getToolByName(rich_context, 'portal_types', None)
+ ttool = queryUtility(ITypesTool)
if ttool is not None:
return ttool.listTypeInfo()
return ()
@@ -549,7 +544,6 @@
security.declarePrivate( '_recursiveUpdateRoleMappings' )
def _recursiveUpdateRoleMappings(self, ob, wfs):
-
""" Update roles-permission mappings recursively, and
reindex special index.
"""
@@ -576,7 +570,7 @@
if hasattr(aq_base(ob), 'objectItems'):
obs = ob.objectItems()
if obs:
- for k, v in obs:
+ for _k, v in obs:
changed = getattr(v, '_p_changed', 0)
count = count + self._recursiveUpdateRoleMappings(v, wfs)
if changed is None:
Modified: Products.CMFCore/trunk/Products/CMFCore/exportimport/content.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/exportimport/content.py 2011-09-23 14:20:30 UTC (rev 122907)
+++ Products.CMFCore/trunk/Products/CMFCore/exportimport/content.py 2011-09-23 14:35:09 UTC (rev 122908)
@@ -11,8 +11,6 @@
#
##############################################################################
"""Filesystem exporter / importer adapters.
-
-$Id$
"""
from csv import reader
@@ -20,12 +18,13 @@
from ConfigParser import ConfigParser
from StringIO import StringIO
+from zope.component import getUtility
from zope.interface import implements
+from Products.CMFCore.interfaces import ITypesTool
+from Products.GenericSetup.content import _globtest
from Products.GenericSetup.interfaces import IFilesystemExporter
from Products.GenericSetup.interfaces import IFilesystemImporter
-from Products.GenericSetup.content import _globtest
-from Products.CMFCore.utils import getToolByName
#
# setup_tool handlers
@@ -197,7 +196,7 @@
context = self.context
properties = import_context.readDataFile('.properties',
'%s/%s' % (subdir, id))
- tool = getToolByName(context, 'portal_types')
+ tool = getUtility(ITypesTool)
try:
tool.constructContent(portal_type, context, id)
Property changes on: Products.CMFCore/trunk/Products/CMFCore/exportimport/content.py
___________________________________________________________________
Deleted: svn:keywords
- Id
Modified: Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_content.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_content.py 2011-09-23 14:20:30 UTC (rev 122907)
+++ Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_content.py 2011-09-23 14:35:09 UTC (rev 122908)
@@ -20,8 +20,10 @@
from ConfigParser import ConfigParser
from StringIO import StringIO
+from zope.component import getSiteManager
from zope.testing.cleanup import cleanUp
+from Products.CMFCore.interfaces import ITypesTool
from Products.GenericSetup.tests.common import DummyExportContext
from Products.GenericSetup.tests.common import DummyImportContext
@@ -591,7 +593,7 @@
after = site.objectIds()
self.assertEqual(len(after), 0)
self.assertEqual(len(context._notes), len(ITEM_IDS))
- for level, component, message in context._notes:
+ for _level, component, message in context._notes:
self.assertEqual(component, 'SFWA')
self.failUnless(message.startswith("Couldn't make"))
@@ -912,11 +914,12 @@
folder = PortalFolder(id)
folder.portal_type = TEST_FOLDER
if site_folder:
- tool = folder.portal_types = TypesTool()
- tool._setObject(TEST_CSV_AWARE, _TypeInfo(TEST_CSV_AWARE))
- tool._setObject(TEST_INI_AWARE, _TypeInfo(TEST_INI_AWARE))
- tool._setObject(TEST_CONTENT, _TypeInfo(TEST_CONTENT))
- tool._setObject(TEST_FOLDER, _TypeInfo(TEST_FOLDER))
+ ttool = TypesTool()
+ ttool._setObject(TEST_CSV_AWARE, _TypeInfo(TEST_CSV_AWARE))
+ ttool._setObject(TEST_INI_AWARE, _TypeInfo(TEST_INI_AWARE))
+ ttool._setObject(TEST_CONTENT, _TypeInfo(TEST_CONTENT))
+ ttool._setObject(TEST_FOLDER, _TypeInfo(TEST_FOLDER))
+ getSiteManager().registerUtility(ttool, ITypesTool)
return folder
Modified: Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_typeinfo.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_typeinfo.py 2011-09-23 14:20:30 UTC (rev 122907)
+++ Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_typeinfo.py 2011-09-23 14:35:09 UTC (rev 122908)
@@ -17,15 +17,17 @@
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
from Products.GenericSetup.tests.common import DummyExportContext
from Products.GenericSetup.tests.common import DummyImportContext
-from Products.CMFCore.permissions import View
+from Products.CMFCore.interfaces import ITypesTool
from Products.CMFCore.permissions import AccessContentsInformation
from Products.CMFCore.permissions import ModifyPortalContent
+from Products.CMFCore.permissions import View
from Products.CMFCore.testing import ExportImportZCMLLayer
from Products.CMFCore.tests.base.testcase import WarningInterceptor
from Products.CMFCore.TypesTool import FactoryTypeInformation
@@ -398,9 +400,9 @@
self._free_warning_output()
def _initSite(self, foo=0):
- self.root.site = Folder(id='site')
- site = self.root.site
- ttool = site.portal_types = TypesTool()
+ site = Folder(id='site').__of__(self.app)
+ ttool = TypesTool()
+ getSiteManager().registerUtility(ttool, ITypesTool)
if foo == 1:
fti = _TI_LIST[0].copy()
@@ -413,7 +415,7 @@
sti = _TI_LIST_WITH_FILENAME[1].copy()
ttool._setObject(sti['id'], ScriptableTypeInformation(**sti))
- return site
+ return site, ttool
class exportTypesToolTests(_TypeInfoSetup):
@@ -436,7 +438,7 @@
def test_normal(self):
from Products.CMFCore.exportimport.typeinfo import exportTypesTool
- site = self._initSite(1)
+ site, _ttool = self._initSite(1)
context = DummyExportContext(site)
exportTypesTool(context)
@@ -459,7 +461,7 @@
def test_with_filenames(self):
from Products.CMFCore.exportimport.typeinfo import exportTypesTool
- site = self._initSite(2)
+ site, _ttool = self._initSite(2)
context = DummyExportContext(site)
exportTypesTool(context)
@@ -489,8 +491,7 @@
def test_empty_default_purge(self):
from Products.CMFCore.exportimport.typeinfo import importTypesTool
- site = self._initSite(1)
- tool = site.portal_types
+ site, tool = self._initSite(1)
self.assertEqual(len(tool.objectIds()), 2)
@@ -503,8 +504,7 @@
def test_empty_explicit_purge(self):
from Products.CMFCore.exportimport.typeinfo import importTypesTool
- site = self._initSite(1)
- tool = site.portal_types
+ site, tool = self._initSite(1)
self.assertEqual(len(tool.objectIds()), 2)
@@ -517,8 +517,7 @@
def test_empty_skip_purge(self):
from Products.CMFCore.exportimport.typeinfo import importTypesTool
- site = self._initSite(1)
- tool = site.portal_types
+ site, tool = self._initSite(1)
self.assertEqual(len(tool.objectIds()), 2)
@@ -531,8 +530,7 @@
def test_normal(self):
from Products.CMFCore.exportimport.typeinfo import importTypesTool
- site = self._initSite()
- tool = site.portal_types
+ site, tool = self._initSite()
self.assertEqual(len(tool.objectIds()), 0)
@@ -549,8 +547,7 @@
def test_with_filenames(self):
from Products.CMFCore.exportimport.typeinfo import importTypesTool
- site = self._initSite()
- tool = site.portal_types
+ site, tool = self._initSite()
self.assertEqual(len(tool.objectIds()), 0)
@@ -567,8 +564,7 @@
def test_migration(self):
from Products.CMFCore.exportimport.typeinfo import importTypesTool
- site = self._initSite()
- tool = site.portal_types
+ site, tool = self._initSite()
self.assertEqual(len(tool.objectIds()), 0)
@@ -586,8 +582,7 @@
def test_normal_update(self):
from Products.CMFCore.exportimport.typeinfo import importTypesTool
- site = self._initSite()
- tool = site.portal_types
+ site, tool = self._initSite()
context = DummyImportContext(site)
context._files['types.xml'] = self._NORMAL_TOOL_EXPORT
@@ -617,8 +612,7 @@
def test_action_remove(self):
from Products.CMFCore.exportimport.typeinfo import importTypesTool
- site = self._initSite()
- tool = site.portal_types
+ site, tool = self._initSite()
self.assertEqual(len(tool.objectIds()), 0)
Modified: Products.CMFCore/trunk/Products/CMFCore/exportimport/typeinfo.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/exportimport/typeinfo.py 2011-09-23 14:20:30 UTC (rev 122907)
+++ Products.CMFCore/trunk/Products/CMFCore/exportimport/typeinfo.py 2011-09-23 14:35:09 UTC (rev 122908)
@@ -11,11 +11,10 @@
#
##############################################################################
"""Types tool 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
@@ -27,7 +26,6 @@
from Products.CMFCore.interfaces import ITypeInformation
from Products.CMFCore.interfaces import ITypesTool
-from Products.CMFCore.utils import getToolByName
class TypeInformationXMLAdapter(XMLAdapterBase, PropertyManagerHelpers):
@@ -214,8 +212,8 @@
def importTypesTool(context):
"""Import types tool and content types from XML files.
"""
- site = context.getSite()
- tool = getToolByName(site, 'portal_types', None)
+ sm = getSiteManager(context.getSite())
+ tool = sm.queryUtility(ITypesTool)
if tool is None:
logger = context.getLogger('types')
logger.debug('Nothing to import.')
@@ -226,8 +224,8 @@
def exportTypesTool(context):
"""Export types tool content types as a set of XML files.
"""
- site = context.getSite()
- tool = getToolByName(site, 'portal_types', None)
+ sm = getSiteManager(context.getSite())
+ tool = sm.queryUtility(ITypesTool)
if tool is None:
logger = context.getLogger('types')
logger.debug('Nothing to export.')
Property changes on: Products.CMFCore/trunk/Products/CMFCore/exportimport/typeinfo.py
___________________________________________________________________
Deleted: svn:keywords
- Id
Modified: Products.CMFCore/trunk/Products/CMFCore/namespace.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/namespace.py 2011-09-23 14:20:30 UTC (rev 122907)
+++ Products.CMFCore/trunk/Products/CMFCore/namespace.py 2011-09-23 14:35:09 UTC (rev 122908)
@@ -11,11 +11,10 @@
#
##############################################################################
"""Namespace for CMF specific add views.
-
-$Id$
"""
from zope.component import adapts
+from zope.component import getUtility
from zope.component import queryMultiAdapter
from zope.interface import implements
from zope.interface import Interface
@@ -23,7 +22,7 @@
from zope.traversing.interfaces import ITraversable
from interfaces import IFolderish
-from utils import getToolByName
+from Products.CMFCore.interfaces import ITypesTool
class AddViewTraverser(object):
@@ -39,7 +38,7 @@
self.request = request
def traverse(self, name, ignored):
- ttool = getToolByName(self.context, 'portal_types')
+ ttool = getUtility(ITypesTool)
ti = ttool.getTypeInfo(name)
if ti is not None:
add_view = queryMultiAdapter((self.context, self.request, ti),
Property changes on: Products.CMFCore/trunk/Products/CMFCore/namespace.py
___________________________________________________________________
Deleted: svn:mime-type
- text/plain
Deleted: svn:keywords
- Id
Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_CachingPolicyManager.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_CachingPolicyManager.py 2011-09-23 14:20:30 UTC (rev 122907)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_CachingPolicyManager.py 2011-09-23 14:35:09 UTC (rev 122908)
@@ -31,6 +31,7 @@
from Products.CMFCore.FSDTMLMethod import FSDTMLMethod
from Products.CMFCore.FSPageTemplate import FSPageTemplate
from Products.CMFCore.interfaces import IMembershipTool
+from Products.CMFCore.interfaces import ITypesTool
from Products.CMFCore.testing import FunctionalZCMLLayer
from Products.CMFCore.testing import TraversingZCMLLayer
from Products.CMFCore.tests.base.dummy import DummyContent
@@ -645,8 +646,9 @@
# Create a fake portal and the tools we need
self.portal = DummySite(id='portal').__of__(self.app)
- self.portal._setObject('portal_types', DummyTool())
- getSiteManager().registerUtility(DummyTool(), IMembershipTool)
+ sm = getSiteManager()
+ sm.registerUtility(DummyTool(), IMembershipTool)
+ sm.registerUtility(DummyTool(), ITypesTool)
# This is a FSPageTemplate that will be used as the View for
# our content objects. It doesn't matter what it returns.
@@ -713,7 +715,9 @@
enable_304s = 0)
def tearDown(self):
- getSiteManager().unregisterUtility(provided=IMembershipTool)
+ sm = getSiteManager()
+ sm.unregisterUtility(provided=IMembershipTool)
+ sm.registerUtility(provided=ITypesTool)
TransactionalTest.tearDown(self)
FSDVTest.tearDown(self)
@@ -894,9 +898,10 @@
# Create a fake portal and the tools we need
self.portal = DummySite(id='portal').__of__(self.app)
- self.portal._setObject('portal_types', DummyTool())
CachingPolicyManager.manage_addCachingPolicyManager(self.portal)
- getSiteManager().registerUtility(DummyTool(), IMembershipTool)
+ sm = getSiteManager()
+ sm.registerUtility(DummyTool(), IMembershipTool)
+ sm.registerUtility(DummyTool(), ITypesTool)
def tearDown(self):
TransactionalTest.tearDown(self)
Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_DynamicType.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_DynamicType.py 2011-09-23 14:20:30 UTC (rev 122907)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_DynamicType.py 2011-09-23 14:35:09 UTC (rev 122908)
@@ -36,6 +36,7 @@
from Products.CMFCore.DynamicType import DynamicType
from Products.CMFCore.interfaces import IMembershipTool
+from Products.CMFCore.interfaces import ITypesTool
from Products.CMFCore.interfaces import IURLTool
from Products.CMFCore.tests.base.dummy import DummyObject
from Products.CMFCore.tests.base.dummy import DummySite
@@ -73,9 +74,10 @@
def setUp(self):
self.site = DummySite('site')
- self.site._setObject( 'portal_types', TypesTool() )
+ ttool = TypesTool()
+ getSiteManager().registerUtility(ttool, ITypesTool)
fti = FTIDATA_CMF[0].copy()
- self.site.portal_types._setObject( 'Dummy Content 15', FTI(**fti) )
+ ttool._setObject( 'Dummy Content 15', FTI(**fti) )
self.site._setObject( 'foo', DummyContent() )
dummy_view = self.site._setObject( 'dummy_view', DummyObject() )
@@ -153,14 +155,15 @@
def setUp(self):
SecurityTest.setUp(self)
- self.site = DummySite('site').__of__(self.root)
+ self.site = DummySite('site').__of__(self.app)
+ ttool = TypesTool()
+ fti = FTIDATA_CMF[0].copy()
+ ttool._setObject( 'Dummy Content 15', FTI(**fti) )
+ self.site._setObject( 'foo', DummyContent() )
sm = getSiteManager()
sm.registerUtility(DummyTool(), IMembershipTool)
sm.registerUtility(DummyTool().__of__(self.site), IURLTool)
- self.site._setObject( 'portal_types', TypesTool() )
- fti = FTIDATA_CMF[0].copy()
- self.site.portal_types._setObject( 'Dummy Content 15', FTI(**fti) )
- self.site._setObject( 'foo', DummyContent() )
+ sm.registerUtility(ttool, ITypesTool)
def tearDown(self):
cleanUp()
Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_OpaqueItems.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_OpaqueItems.py 2011-09-23 14:20:30 UTC (rev 122907)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_OpaqueItems.py 2011-09-23 14:35:09 UTC (rev 122908)
@@ -16,11 +16,13 @@
import unittest
import Testing
+from zope.component import getSiteManager
from zope.interface import implements
from Products.CMFCore.interfaces import ICallableOpaqueItem
from Products.CMFCore.interfaces import ICallableOpaqueItemEvents
from Products.CMFCore.interfaces import IContentish
+from Products.CMFCore.interfaces import ITypesTool
from Products.CMFCore.PortalFolder import PortalFolder
from Products.CMFCore.testing import TraversingEventZCMLLayer
from Products.CMFCore.tests.base.dummy \
@@ -85,7 +87,7 @@
self.id = id
setattr(obj, id, self)
- def __call__():
+ def __call__(self):
return
def getId(self):
@@ -137,23 +139,21 @@
def setUp(self):
SecurityTest.setUp(self)
- root = self.root
-
# setting up types tool
- root._setObject( 'portal_types', TypesTool() )
+ getSiteManager().registerUtility(TypesTool(), ITypesTool)
# setup portal
try:
- root._delObject('test')
+ self.app._delObject('test')
except AttributeError:
pass
- root._setObject('test', PortalFolder('test', ''))
- self.test = test = self.root.test
+ self.app._setObject('test', PortalFolder('test', ''))
+ self.test = test = self.app.test
# setting up folders
- test._setObject( 'folder', PortalFolder( 'folder', '' ) )
+ test._setObject('folder', PortalFolder('folder', ''))
folder = self.folder = test.folder
- folder._setObject( 'sub', PortalFolder( 'sub', '' ) )
+ folder._setObject('sub', PortalFolder('sub', ''))
sub = self.sub = folder.sub
#----- hacks to allow pasting (see also test_PortalFolder)
@@ -177,7 +177,7 @@
dummy = addDummyContent(folder, 'dummy', None)
# WAAAA! must get _p_jar set
- old, dummy._p_jar = sub._p_jar, self.root._p_jar
+ old, dummy._p_jar = sub._p_jar, self.app._p_jar
try:
cp = folder.manage_copyObjects(ids=['dummy'])
sub.manage_pasteObjects(cp)
@@ -194,7 +194,7 @@
self.failIf(dummy.isNotifiedByBeforeDelete())
# WAAAA! must get _p_jar set
- old, dummy._p_jar = sub._p_jar, self.root._p_jar
+ old, dummy._p_jar = sub._p_jar, self.app._p_jar
try:
cp = folder.manage_copyObjects(ids=['dummy'])
sub.manage_pasteObjects(cp)
@@ -215,7 +215,7 @@
self.failIf(dummy.isNotifiedByBeforeDelete())
# WAAAA! must get _p_jar set
- old, dummy._p_jar = sub._p_jar, self.root._p_jar
+ old, dummy._p_jar = sub._p_jar, self.app._p_jar
try:
cp = folder.manage_copyObjects(ids=['dummy'])
sub.manage_pasteObjects(cp)
@@ -236,7 +236,7 @@
self.failIf(dummy.isNotifiedByBeforeDelete())
# WAAAA! must get _p_jar set
- old, dummy._p_jar = sub._p_jar, self.root._p_jar
+ old, dummy._p_jar = sub._p_jar, self.app._p_jar
try:
cp = folder.manage_copyObjects(ids=['dummy'])
sub.manage_pasteObjects(cp)
@@ -258,7 +258,7 @@
self.failIf(dummy.isNotifiedByBeforeDelete())
# WAAAA! must get _p_jar set
- old, dummy._p_jar = sub._p_jar, self.root._p_jar
+ old, dummy._p_jar = sub._p_jar, self.app._p_jar
try:
cp = folder.manage_copyObjects(ids=['dummy'])
sub.manage_pasteObjects(cp)
Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_PortalContent.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_PortalContent.py 2011-09-23 14:20:30 UTC (rev 122907)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_PortalContent.py 2011-09-23 14:35:09 UTC (rev 122908)
@@ -19,10 +19,12 @@
from AccessControl.SecurityManagement import newSecurityManager
from Acquisition import aq_base
from OFS.Folder import Folder
+from zope.component import getSiteManager
from zope.interface.verify import verifyClass
from zope.testing.cleanup import cleanUp
from Products.CMFCore.exceptions import NotFound
+from Products.CMFCore.interfaces import ITypesTool
from Products.CMFCore.testing import TraversingEventZCMLLayer
from Products.CMFCore.tests.base.dummy import DummyContent
from Products.CMFCore.tests.base.dummy import DummyObject
@@ -47,15 +49,16 @@
def _setupCallTests(self, aliases):
# root
- root = Folder( 'root' )
+ root = Folder('root')
# set up dummy type info with problematic double-default alias
- root._setObject( 'portal_types', DummyTool() )
- root.portal_types._type_actions = aliases
+ ttool = DummyTool()
+ ttool._type_actions = aliases
+ getSiteManager().registerUtility(ttool, ITypesTool)
# dummy content and skin
- root._setObject( 'dummycontent', DummyContent() )
- root._setObject( 'dummy_view', DummyObject() )
+ root._setObject('dummycontent', DummyContent())
+ root._setObject('dummy_view', DummyObject())
return root.dummycontent
def test_DoubleDefaultAlias(self):
@@ -91,8 +94,8 @@
def setUp(self):
SecurityTest.setUp(self)
- self.root._setObject('site', DummySite('site'))
- self.site = self.root.site
+ self.app._setObject('site', DummySite('site'))
+ self.site = self.app.site
self.acl_users = self.site._setObject('acl_users', DummyUserFolder())
def _initContent(self, folder, id):
Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_PortalFolder.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_PortalFolder.py 2011-09-23 14:20:30 UTC (rev 122907)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_PortalFolder.py 2011-09-23 14:35:09 UTC (rev 122908)
@@ -34,7 +34,6 @@
from Products.CMFCore.interfaces import ITypesTool
from Products.CMFCore.interfaces import IWorkflowTool
from Products.CMFCore.testing import ConformsToFolder
-from Products.CMFCore.testing import FunctionalZCMLLayer
from Products.CMFCore.testing import TraversingEventZCMLLayer
from Products.CMFCore.tests.base.dummy import DummyContent
from Products.CMFCore.tests.base.dummy import DummyFactoryDispatcher
@@ -95,13 +94,11 @@
from Products.CMFCore.PortalFolder import PortalFolder
SecurityTest.setUp(self)
- sm = getSiteManager()
- sm.registerUtility(self._getTargetObject(), IFactory, 'cmf.folder')
self.site = DummySite('site').__of__(self.app)
acl_users = self.site._setObject('acl_users', DummyUserFolder())
newSecurityManager(None, acl_users.all_powerful_Oz)
- ttool = self.site._setObject('portal_types', TypesTool())
+ self.ttool = ttool = TypesTool()
ttool._setObject(self._PORTAL_TYPE,
FTI(id=self._PORTAL_TYPE,
title='Folder or Directory',
@@ -109,6 +106,9 @@
factory='cmf.folder',
filter_content_types=0))
ttool._setObject('Dummy Content', FTI(**FTIDATA_DUMMY[0].copy()))
+ sm = getSiteManager()
+ sm.registerUtility(ttool, ITypesTool)
+ sm.registerUtility(self._getTargetObject(), IFactory, 'cmf.folder')
self.f = self.site._setObject('container', PortalFolder('container'))
self.f._setPortalTypeName(self._PORTAL_TYPE)
@@ -128,7 +128,7 @@
def test_invokeFactory_disallowed_type(self):
f = self.f
- ftype = getattr(self.site.portal_types, self._PORTAL_TYPE)
+ ftype = getattr(self.ttool, self._PORTAL_TYPE)
ftype.filter_content_types = 1
self.assertRaises(ValueError,
f.invokeFactory, self._PORTAL_TYPE, 'sub')
@@ -154,7 +154,7 @@
class PortalFolderSecurityTests(SecurityTest):
- layer = FunctionalZCMLLayer
+ layer = TraversingEventZCMLLayer
def _getTargetClass(self):
from Products.CMFCore.PortalFolder import PortalFolder
@@ -173,7 +173,9 @@
acl_users = self.site._setObject('acl_users', DummyUserFolder())
newSecurityManager(None, acl_users.all_powerful_Oz)
- ttool = self.site._setObject( 'portal_types', TypesTool() )
+ ttool = TypesTool()
+ getSiteManager().registerUtility(ttool, ITypesTool)
+
f = self._makeOne('foo')
self.assertEqual( f.objectValues(), [] )
self.assertEqual( f.contentIds(), [] )
@@ -252,10 +254,11 @@
acl_users = self.site._setObject('acl_users', DummyUserFolder())
newSecurityManager(None, acl_users.all_powerful_Oz)
test = self._makeOne('test')
- self.site._setObject('portal_types', TypesTool())
ctool = DummyCatalogTool()
- getSiteManager().registerUtility(ctool, ICatalogTool)
self.assertEqual(len(ctool), 0)
+ sm = getSiteManager()
+ sm.registerUtility(ctool, ICatalogTool)
+ sm.registerUtility(TypesTool(), ITypesTool)
test._setObject('foo', DummyContent('foo' , catalog=1))
foo = test.foo
@@ -269,26 +272,21 @@
self.failUnless(foo.before_delete_called)
self.assertEqual(len(ctool), 0)
- getSiteManager().unregisterUtility(provided=ICatalogTool)
-
def test_portalfolder_cataloging(self):
#
# Test to ensure a portal folder itself is *not* cataloged upon
# instantiation (Tracker issue 309)
#
- self.site._setObject('portal_types', TypesTool())
- sm = getSiteManager()
ctool = DummyCatalogTool()
- sm.registerUtility(ctool, ICatalogTool)
wtool = WorkflowTool()
+ sm = getSiteManager()
+ sm.registerUtility(ctool, ICatalogTool)
sm.registerUtility(wtool, IWorkflowTool)
+
test = self._makeOne('test')
wtool.notifyCreated(test)
self.assertEqual(len(ctool), 0)
- sm.unregisterUtility(provided=ICatalogTool)
- sm.unregisterUtility(provided=IWorkflowTool)
-
def test_tracker261(self):
#
# Tracker issue #261 says that content in a deleted folder
@@ -300,7 +298,6 @@
acl_users = self.site._setObject('acl_users', DummyUserFolder())
newSecurityManager(None, acl_users.all_powerful_Oz)
test = self._makeOne('test')
- self.site._setObject('portal_types', TypesTool())
ctool = DummyCatalogTool()
getSiteManager().registerUtility(ctool, ICatalogTool)
self.assertEqual(len(ctool), 0)
@@ -321,19 +318,18 @@
self.failUnless( foo.before_delete_called )
self.assertEqual( len(ctool), 0 )
- getSiteManager().unregisterUtility(provided=ICatalogTool)
-
def test_manageAddFolder(self):
#
# Does MKDIR/MKCOL intercept work?
#
from Products.CMFCore.PortalFolder import PortalFolder
+ from Products.CMFCore.PortalFolder import PortalFolderFactory
acl_users = self.site._setObject('acl_users', DummyUserFolder())
newSecurityManager(None, acl_users.all_powerful_Oz)
test = self._makeOne('test')
- ttool = self.site._setObject( 'portal_types', TypesTool() )
+ ttool = TypesTool()
ttool._setObject( 'Folder'
, FTI( id='Folder'
, title='Folder or Directory'
@@ -349,6 +345,9 @@
, factory='cmf.folder'
)
)
+ sm = getSiteManager()
+ sm.registerUtility(ttool, ITypesTool)
+ sm.registerUtility(PortalFolderFactory, IFactory, 'cmf.folder')
# First, test default behavior
test.manage_addFolder(id='simple', title='Simple')
@@ -384,7 +383,8 @@
#
# _verifyObjectPaste() should honor allowed content types
#
- ttool = self.site._setObject( 'portal_types', TypesTool() )
+ ttool = TypesTool()
+ getSiteManager().registerUtility(ttool, ITypesTool)
fti = FTIDATA_DUMMY[0].copy()
ttool._setObject( 'Dummy Content', FTI(**fti) )
ttool._setObject( 'Folder', FTI(**fti) )
@@ -413,13 +413,15 @@
#
acl_users = self.site._setObject('acl_users', DummyUserFolder())
newSecurityManager(None, acl_users.all_powerful_Oz)
- ttool = self.site._setObject('portal_types', TypesTool())
+ ttool = TypesTool()
fti = FTIDATA_DUMMY[0].copy()
ttool._setObject('Dummy Content', FTI(**fti))
ttool._setObject('Folder', FTI(**fti))
folder = self._makeOne('folder', 'Folder')
content = self._makeOne('content')
folder._setObject('content', content)
+ sm = getSiteManager()
+ sm.registerUtility(ttool, ITypesTool)
# Allow adding of Dummy Content
ttool.Folder.manage_changeProperties(filter_content_types=False)
@@ -445,11 +447,9 @@
return self._workflows
# Now copy/paste verification should raise a ValueError
- getSiteManager().registerUtility(DummyWorkflowTool(), IWorkflowTool)
+ sm.registerUtility(DummyWorkflowTool(), IWorkflowTool)
self.assertRaises(ValueError, folder._verifyObjectPaste, content)
- getSiteManager().unregisterUtility(provided=IWorkflowTool)
-
def test_setObjectRaisesBadRequest(self):
#
# _setObject() should raise BadRequest on duplicate id
@@ -485,8 +485,9 @@
newSecurityManager(None, acl_users.all_powerful_Oz)
test = self._makeOne('test')
test._setPortalTypeName('Dummy Content 15')
- ttool = self.site._setObject('portal_types', TypesTool())
+ ttool = TypesTool()
ttool._setObject('Dummy Content 15', FTI(**FTIDATA_CMF[0]))
+ getSiteManager().registerUtility(ttool, ITypesTool)
acl_users = self.site._setObject('acl_users', DummyUserFolder())
test._checkId('view.html')
newSecurityManager(None, acl_users.user_foo)
@@ -548,9 +549,10 @@
acl_users = self.site._setObject('acl_users', DummyUserFolder())
newSecurityManager(None, acl_users.all_powerful_Oz)
- self.site._setObject( 'portal_types', TypesTool() )
ctool = DummyCatalogTool()
- getSiteManager().registerUtility(ctool, ICatalogTool)
+ sm = getSiteManager()
+ sm.registerUtility(TypesTool(), ITypesTool)
+ sm.registerUtility(ctool, ICatalogTool)
self.assertEqual( len(ctool), 0 )
folder = self._makeOne('folder')
@@ -597,14 +599,16 @@
acl_users = self.site._setObject('acl_users', DummyUserFolder())
newSecurityManager(None, acl_users.all_powerful_Oz)
ctool = DummyCatalogTool()
- getSiteManager().registerUtility(ctool, ICatalogTool)
- ttool = self.site._setObject( 'portal_types', TypesTool() )
+ ttool = TypesTool()
fti = FTIDATA_DUMMY[0].copy()
ttool._setObject( 'Dummy Content', FTI(**fti) )
sub1 = self._makeOne('sub1')
sub2 = self._makeOne('sub2')
sub3 = self._makeOne('sub3')
self.assertEqual( len(ctool), 0 )
+ sm = getSiteManager()
+ sm.registerUtility(ctool, ICatalogTool)
+ sm.registerUtility(ttool, ITypesTool)
sub1._setObject( 'dummy', DummyContent( 'dummy', catalog=1 ) )
self.failUnless( 'dummy' in sub1.objectIds() )
@@ -976,7 +980,7 @@
class PortalFolderCopySupportTests(SecurityTest):
- layer = FunctionalZCMLLayer
+ layer = TraversingEventZCMLLayer
def _initFolders(self):
from Products.CMFCore.PortalFolder import PortalFolder
@@ -1166,19 +1170,7 @@
+ '.*%s' % ADD_IMAGES_AND_FILES
)
- def test_move_cant_delete_source( self ):
-
- #
- # This test fails on Zope's earlier than 2.7.3 because of the
- # changes required to 'OFS.CopytSupport.manage_pasteObjects'
- # which must pass 'validate_src' of 2 to '_verifyObjectPaste'
- # to indicate that the object is being moved, rather than
- # simply copied.
- #
- # If you are running with such a Zope, this test will fail,
- # because the move (which should raise Unauthorized) will be
- # allowed.
- #
+ def test_move_cant_delete_source(self):
from AccessControl.Permissions import delete_objects as DeleteObjects
from Products.CMFCore.PortalFolder import PortalFolder
@@ -1188,8 +1180,6 @@
folder1._setObject( 'sub', PortalFolder( 'sub' ) )
transaction.savepoint(optimistic=True) # get a _p_jar for 'sub'
- self.app.portal_types = DummyTypesTool()
-
def _no_delete_objects(permission, object, context):
return permission != DeleteObjects
@@ -1203,7 +1193,6 @@
)
def test_paste_with_restricted_item_content_type_not_allowed(self):
-
# Test from CMF Collector #216 (Plone #2186), for the case
# in which the item being pasted does not allow adding such
# objects to containers which do not explicitly grant access.
@@ -1218,10 +1207,9 @@
self._initPolicyAndUser() # ensure that sec. machinery allows paste
- self.app._setObject( 'portal_types', TypesTool() )
- types_tool = self.app.portal_types
- types_tool._setObject( RESTRICTED_TYPE
- , FTI( id=RESTRICTED_TYPE
+ ttool = TypesTool()
+ ttool._setObject(RESTRICTED_TYPE,
+ FTI(id=RESTRICTED_TYPE
, title=RESTRICTED_TYPE
, meta_type=PortalFolder.meta_type
, product='CMFCore'
@@ -1229,8 +1217,8 @@
, global_allow=0
)
)
- types_tool._setObject( UNRESTRICTED_TYPE
- , FTI( id=UNRESTRICTED_TYPE
+ ttool._setObject(UNRESTRICTED_TYPE,
+ FTI(id=UNRESTRICTED_TYPE
, title=UNRESTRICTED_TYPE
, meta_type=PortalFolder.meta_type
, product='CMFCore'
@@ -1238,17 +1226,14 @@
, filter_content_types=0
)
)
+ getSiteManager().registerUtility(ttool, ITypesTool)
# copy and pasting the object into the folder should raise
# an exception
- copy_cookie = self.app.manage_copyObjects( ids=[ 'folder2' ] )
- self.assertRaises( ValueError
- , folder1.manage_pasteObjects
- , copy_cookie
- )
+ copy_cookie = self.app.manage_copyObjects(ids=['folder2'])
+ self.assertRaises(ValueError, folder1.manage_pasteObjects, copy_cookie)
def test_paste_with_restricted_item_content_type_allowed(self):
-
# Test from CMF Collector #216 (Plone #2186), for the case
# in which the item being pasted *does8 allow adding such
# objects to containers which *do* explicitly grant access.
@@ -1263,10 +1248,9 @@
self._initPolicyAndUser() # ensure that sec. machinery allows paste
- self.app._setObject( 'portal_types', TypesTool() )
- types_tool = self.app.portal_types
- types_tool._setObject( RESTRICTED_TYPE
- , FTI( id=RESTRICTED_TYPE
+ ttool = TypesTool()
+ ttool._setObject(RESTRICTED_TYPE,
+ FTI(id=RESTRICTED_TYPE
, title=RESTRICTED_TYPE
, meta_type=PortalFolder.meta_type
, product='CMFCore'
@@ -1274,25 +1258,25 @@
, global_allow=0
)
)
- types_tool._setObject( UNRESTRICTED_TYPE
- , FTI( id=UNRESTRICTED_TYPE
+ ttool._setObject(UNRESTRICTED_TYPE,
+ FTI(id=UNRESTRICTED_TYPE
, title=UNRESTRICTED_TYPE
, meta_type=PortalFolder.meta_type
, product='CMFCore'
, factory='manage_addPortalFolder'
, filter_content_types=1
- , allowed_content_types=[ RESTRICTED_TYPE ]
+ , allowed_content_types=[RESTRICTED_TYPE]
)
)
+ getSiteManager().registerUtility(ttool, ITypesTool)
# copy and pasting the object into the folder should *not* raise
# an exception, because the folder's type allows it.
- copy_cookie = self.app.manage_copyObjects( ids=[ 'folder2' ] )
- folder1.manage_pasteObjects( copy_cookie )
- self.failUnless( 'folder2' in folder1.objectIds() )
+ copy_cookie = self.app.manage_copyObjects(ids=['folder2'])
+ folder1.manage_pasteObjects(copy_cookie)
+ self.failUnless('folder2' in folder1.objectIds())
def test_paste_with_restricted_container_content_type(self):
-
# Test from CMF Collector #216 (Plone #2186), for the case
# in which the container does not allow adding items of the
# type being pasted.
@@ -1307,10 +1291,9 @@
self._initPolicyAndUser() # ensure that sec. machinery allows paste
- self.app._setObject( 'portal_types', TypesTool() )
- types_tool = self.app.portal_types
- types_tool._setObject( RESTRICTED_TYPE
- , FTI( id=RESTRICTED_TYPE
+ ttool = TypesTool()
+ ttool._setObject(RESTRICTED_TYPE,
+ FTI(id=RESTRICTED_TYPE
, title=RESTRICTED_TYPE
, meta_type=PortalFolder.meta_type
, product='CMFCore'
@@ -1319,8 +1302,8 @@
, allowed_content_types=()
)
)
- types_tool._setObject( UNRESTRICTED_TYPE
- , FTI( id=UNRESTRICTED_TYPE
+ ttool._setObject(UNRESTRICTED_TYPE,
+ FTI(id=UNRESTRICTED_TYPE
, title=UNRESTRICTED_TYPE
, meta_type=PortalFolder.meta_type
, product='CMFCore'
@@ -1328,29 +1311,14 @@
, global_allow=1
)
)
+ getSiteManager().registerUtility(ttool, ITypesTool)
# copy and pasting the object into the folder should raise
# an exception
- copy_cookie = self.app.manage_copyObjects( ids=[ 'folder2' ] )
- self.assertRaises( ValueError
- , folder1.manage_pasteObjects
- , copy_cookie
- )
+ copy_cookie = self.app.manage_copyObjects(ids=['folder2'])
+ self.assertRaises(ValueError, folder1.manage_pasteObjects, copy_cookie)
-class DummyTypeInfo:
- def allowType( self, portal_type ):
- return True
-
-class DummyTypesTool( Implicit ):
-
- implements(ITypesTool)
-
- def getTypeInfo( self, portal_type ):
-
- return DummyTypeInfo()
-
-
def test_suite():
return unittest.TestSuite((
unittest.makeSuite(PortalFolderFactoryTests),
Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_WorkflowTool.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_WorkflowTool.py 2011-09-23 14:20:30 UTC (rev 122907)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_WorkflowTool.py 2011-09-23 14:35:09 UTC (rev 122908)
@@ -18,6 +18,7 @@
from OFS.SimpleItem import SimpleItem
from zope.component import adapter
+from zope.component import getSiteManager
from zope.component import provideHandler
from zope.interface import implements
from zope.interface.verify import verifyClass
@@ -27,6 +28,7 @@
from Products.CMFCore.interfaces import IActionSucceededEvent
from Products.CMFCore.interfaces import IActionWillBeInvokedEvent
from Products.CMFCore.interfaces import IContentish
+from Products.CMFCore.interfaces import ITypesTool
from Products.CMFCore.interfaces import IWorkflowAware
from Products.CMFCore.interfaces import IWorkflowDefinition
from Products.CMFCore.testing import TraversingEventZCMLLayer
@@ -168,12 +170,11 @@
return tool
- def _makeRoot( self ):
+ def _makeRoot(self):
+ from OFS.Folder import Folder
- from OFS.Folder import Folder
- root = Folder( 'root' )
- tt = DummyTypesTool()
- root._setObject( 'portal_types', tt )
+ root = Folder('root')
+ getSiteManager().registerUtility(DummyTypesTool(), ITypesTool)
return root
def _makeWithTypes( self ):
More information about the checkins
mailing list