On 11/19/10 6:47 AM, Andreas Jung wrote: > I have the following code for testing EasyNewsletter: > > http://svn.plone.org/svn/collective/Products.EasyNewsletter/trunk/Products/EasyNewsletter/tests/test_enl.py > > > The invokeFactory('EasyNewsletter') call works on Plone 3 > but fails on Plone 4 with Unauthorized (although I am Manager): > > self.portal.invokeFactory('EasyNewsletter', id='newsletter') > File > "/home/ajung/.buildout/eggs/Products.CMFCore-2.2.2-py2.6.egg/Products/CMFCore/PortalFolder.py", > line 295, in invokeFactory > return pt.constructContent(type_name, self, id, RESPONSE, *args, **kw) > File > "/home/ajung/.buildout/eggs/Products.CMFCore-2.2.2-py2.6.egg/Products/CMFCore/TypesTool.py", > line 836, in constructContent > ob = info.constructInstance(container, id, *args, **kw) > File > "/home/ajung/.buildout/eggs/Products.CMFCore-2.2.2-py2.6.egg/Products/CMFCore/TypesTool.py", > line 312, in constructInstance > raise AccessControl_Unauthorized('Cannot create %s' % self.getId()) > Unauthorized: Cannot create EasyNewsletter > > > Digging deeper using pdb: > > > /home/ajung/.buildout/eggs/Products.CMFCore-2.2.2-py2.6.egg/Products/CMFCore/TypesTool.py(472)_queryFactoryMethod() > -> def _queryFactoryMethod(self, container, default=None): > (Pdb) n > > /home/ajung/.buildout/eggs/Products.CMFCore-2.2.2-py2.6.egg/Products/CMFCore/TypesTool.py(474)_queryFactoryMethod() > -> if not self.product or not self.factory or container is None: > (Pdb) > > /home/ajung/.buildout/eggs/Products.CMFCore-2.2.2-py2.6.egg/Products/CMFCore/TypesTool.py(478)_queryFactoryMethod() > -> dispatcher = getattr(container, 'manage_addProduct', None) > (Pdb) > > /home/ajung/.buildout/eggs/Products.CMFCore-2.2.2-py2.6.egg/Products/CMFCore/TypesTool.py(480)_queryFactoryMethod() > -> if dispatcher is None: > (Pdb) > > /home/ajung/.buildout/eggs/Products.CMFCore-2.2.2-py2.6.egg/Products/CMFCore/TypesTool.py(483)_queryFactoryMethod() > -> try: > (Pdb) > > /home/ajung/.buildout/eggs/Products.CMFCore-2.2.2-py2.6.egg/Products/CMFCore/TypesTool.py(484)_queryFactoryMethod() > -> p = dispatcher[self.product] > (Pdb) > > /home/ajung/.buildout/eggs/Products.CMFCore-2.2.2-py2.6.egg/Products/CMFCore/TypesTool.py(489)_queryFactoryMethod() > -> m = getattr(p, self.factory, None) > (Pdb) print dispatcher > <App.FactoryDispatcher.ProductDispatcher object at 0x196f190> > (Pdb) print self.factory > addEasyNewsletter > (Pdb) n > > /home/ajung/.buildout/eggs/Products.CMFCore-2.2.2-py2.6.egg/Products/CMFCore/TypesTool.py(491)_queryFactoryMethod() > -> if m: > (Pdb) print m > None > > Why does this fail on Plone 4? Not sure why, but I would guess EasyNewsletter's initialize method isn't getting called in your test setup for some reason. David ---------- David Glick Web Developer [email protected] 206.286.1235x32
Groundwire: You Are Connected http://groundwire.org Online tools and strategies for the environmental movement. Sign up for Groundwire News! http://groundwire.org/email-capture Check out our 2010 Website Benchmarks Report. How do you stack up? http://groundwire.org/resources/articles/2010-website-benchmarks-report _______________________________________________ Product-Developers mailing list [email protected] http://lists.plone.org/mailman/listinfo/product-developers
