[Zope-CMF] Re: monkey patching CMFCore.utils isn't working?!?

Tres Seaver tseaver at palladion.com
Fri Jun 2 16:26:44 EDT 2006


Matt Hahnfeld wrote:
> I am using Plone 2.1.2, w/ CMF 1.5.5.  I'm having trouble using
> the overridden _checkPermission function in 1.5.5 to handle proxy roles on
> a FSPythonScript.  After hacking around, I've determined the best method
> to repair this issue is to "backport" CMF 1.6.0's function and make
> _checkPermission call SecurityManager's _checkPermission.  I don't really
> want to change the core libraries, so my idea was to do it as a monkey
> patch.
> 
> So, I added this monkey patch to one of my custom zope products:
> 
> -----
> from AccessControl import getSecurityManager
> 
> def _checkPermission(permission, obj):
>     return getSecurityManager().checkPermission(permission, obj)
> 
> import Products.CMFCore.utils
> Products.CMFCore.utils._checkPermission = _checkPermission
> -----
> 
> But every time I use _checkPermission from Products.CMFCore.utils I'm
> still getting the old one...  Is it possible to monkey patch functions (as
> opposed to methods)?  Any idea why this monkey patch wouldn't be working?

Other modules may have already imported it, using:

   from Products.CMFCore.utils import _checkPermission

Those modules *also* need monkey patching, because they are holding onto 
a reference to the original object, even though you have bound a new 
reference to that name with your monkey.


Tres.
-- 
===================================================================
Tres Seaver          +1 202-558-7113          tseaver at palladion.com
Palladion Software   "Excellence by Design"    http://palladion.com



More information about the Zope-CMF mailing list