[Zope-CMF] Re: Another small plone related change
yuppie
y.2005- at wcm-solutions.de
Mon Jun 20 03:01:11 EDT 2005
Hi Christian!
I'm fine with the proposed change, but I would prefer to have _getOAI
and _getExprContext in *one* place: ActionProviderBase.
Cheers,
Yuppie
[I quote the complete mail because it didn't make it to the list:]
Christian Heimes wrote:
> yuppie wrote:
>
>> Please make yourself familiar with these changes:
>>
>> http://mail.zope.org/pipermail/zope-cmf/2003-November/019801.html
>>
>> _listActionInfos() is just a fallback and never called for action
>> providers that implement 'interfaces.portal_actions.ActionProvider'.
>> All tools subclassing CMF tools or ActionProviderBase implement this
>> interface.
>>
>> ActionProviderBase depends on getExprContext, not on getOAI. AFAIK
>> 'OAI' means 'old ActionInformation' and is deprecated since CMF 1.3.
>> But DCWorkflow still depends on it, so there are no deprecation warnings.
>
>
> Thank you very much for your explanation. I'm trying to get into the
> changes in CMF 1.5 in the last days.
>
>> I guess you have to modify getExprContext *and* getOAI for Plone.
>
>
> You are right. Of couse you are *g*
> I would like to apply my patch that allows us to overwrite both
> functions w/o monkey patching CMF.
>
> Christian
>
>
> ------------------------------------------------------------------------
>
> ? patch.txt
> Index: CMFCore/ActionProviderBase.py
> ===================================================================
> RCS file: /cvs-repository/Products/CMFCore/ActionProviderBase.py,v
> retrieving revision 1.30.2.2
> diff -u -r1.30.2.2 ActionProviderBase.py
> --- CMFCore/ActionProviderBase.py 16 Mar 2005 11:33:52 -0000 1.30.2.2
> +++ CMFCore/ActionProviderBase.py 18 Jun 2005 12:29:19 -0000
> @@ -81,7 +81,7 @@
> # List ActionInfo objects.
> # (method is without docstring to disable publishing)
> #
> - ec = getExprContext(self, object)
> + ec = self._getExprContext(self, object)
> actions = self.listActions(object=object)
> actions = [ ActionInfo(action, ec) for action in actions ]
>
> @@ -109,6 +109,9 @@
> if max + 1 and len(action_infos) >= max:
> break
> return action_infos
> +
> + def _getExprContext(self, context, object):
> + return getExprContext(context, object)
>
> security.declarePublic('getActionInfo')
> def getActionInfo(self, action_chain, object=None, check_visibility=0,
> Index: CMFCore/ActionsTool.py
> ===================================================================
> RCS file: /cvs-repository/Products/CMFCore/ActionsTool.py,v
> retrieving revision 1.51.2.1
> diff -u -r1.51.2.1 ActionsTool.py
> --- CMFCore/ActionsTool.py 11 Apr 2005 10:43:11 -0000 1.51.2.1
> +++ CMFCore/ActionsTool.py 18 Jun 2005 12:29:19 -0000
> @@ -197,12 +197,12 @@
> 'portal_actions will ignore listActions() of \'%s\'.'
> % provider.getId(),
> DeprecationWarning)
> - info = getOAI(self, object)
> + info = self._getOAI(self, object)
> actions = provider.listActions(info)
>
> action_infos = []
> if actions and not isinstance(actions[0], dict):
> - ec = getExprContext(self, object)
> + ec = self._getExprContext(self, object)
> for ai in actions:
> if not ai.getVisibility():
> continue
> @@ -252,5 +252,11 @@
> continue
> action_infos.append(i)
> return action_infos
> +
> + def _getOAI(self, context, object):
> + return getOAI(context, object)
> +
> + def _getExprContext(self, context, object):
> + return getExprContext(context, object)
>
> InitializeClass(ActionsTool)
> Index: CMFCore/DiscussionTool.py
> ===================================================================
> RCS file: /cvs-repository/Products/CMFCore/DiscussionTool.py,v
> retrieving revision 1.17.2.2
> diff -u -r1.17.2.2 DiscussionTool.py
> --- CMFCore/DiscussionTool.py 16 Mar 2005 11:33:52 -0000 1.17.2.2
> +++ CMFCore/DiscussionTool.py 18 Jun 2005 12:29:20 -0000
> @@ -160,7 +160,7 @@
> def listActions(self, info=None, object=None):
> # Return actions for reply and show replies
> if object is not None or info is None:
> - info = getOAI(self, object)
> + info = self._getOAI(self, object)
> content = info.object
> if content is None or not self.isDiscussionAllowedFor(content):
> return ()
> @@ -180,5 +180,8 @@
> )
>
> return actions
> +
> + def _getOAI(self, context, object):
> + return getOAI(context, object)
>
> InitializeClass(DiscussionTool)
> Index: CMFCore/WorkflowTool.py
> ===================================================================
> RCS file: /cvs-repository/Products/CMFCore/WorkflowTool.py,v
> retrieving revision 1.46.2.5
> diff -u -r1.46.2.5 WorkflowTool.py
> --- CMFCore/WorkflowTool.py 26 Apr 2005 16:03:36 -0000 1.46.2.5
> +++ CMFCore/WorkflowTool.py 18 Jun 2005 12:29:21 -0000
> @@ -228,7 +228,7 @@
> o Global actions are supplied by all workflows.
> """
> if object is not None or info is None:
> - info = getOAI(self, object)
> + info = self._getOAI(self, object)
> chain = self.getChainFor(info.object)
> did = {}
> actions = []
> @@ -253,6 +253,9 @@
> if a is not None:
> actions.extend(a)
> return actions
> +
> + def _getOAI(self, context, object):
> + return getOAI(context, object)
>
> security.declarePublic('getActionsFor')
> def getActionsFor(self, ob):
More information about the Zope-CMF
mailing list