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

Reply via email to