[Zope-CMF] Re: Proposal: Add 'changeAction' method to ActionProviderBase.ActionProviderBase

Gregoire Weber gregweb at gmx.ch
Fri Jun 25 04:14:53 EDT 2004


Hi Yuppie,

thanks for the pointers. This makes sense!

Gregoire

At 09:44 25.06.2004 +0200, yuppie wrote:
>Hi Grégoire!
>
>
>Gregoire Weber wrote:
>>I'd like to add the below changeAction method to ActionProviderBase.
>>Any Objections?
>>Can I put that into the branch for CMF 1.5? Is it the head?
>>I'd really like to have it in the upcoming CMF 1.5 if possible.
>
>[...]
>
>>    security.declareProtected( ManagePortal, 'changeAction' )
>>    def changeAction( self
>>                    , id
>>                    , new_id=_unchanged
>>                    , title=_unchanged
>>                    , description=_unchanged
>>                    , category=_unchanged
>>                    , condition=_unchanged
>>                    , permissions=_unchanged
>>                    , priority=_unchanged
>>                    , visible=_unchanged
>>                    , action=_unchanged
>>                    ):
>>        """Changes the specified properties of the action with id 'id'.
>>        """
>>        # get the action beeing changed
>>        action_ids = [a.getId() for a in self._actions]
>>        pos = action_ids.index(id)
>>        current = actions[pos]
>
>1.) This will not work because Action ids aren't unique. We discussed that months ago on this list and the result was:
>
>Actions are identified by their 'path', a combination of category and id. Using duplicate paths per Action Provider is deprecated, API methods might just take the first Action with the given path. After CMF 1.5 unique paths might be enforced.
>
>listActionInfos and getActionInfo use paths like 'global/foo', see their implementation for details. Note that '/' is allowed in categories, so 'global/baz/foo' should resolve to category 'global/baz' and id 'foo'.
>
>
>2.) I think ActionInformation should have an edit method, so instead of
>
>  action_provider.changeAction('global/foo', title='Foo Title')
>
>I'd prefer this, using a new getActionObject method:
>
>  action_provider.getActionObject('global/foo').edit(title='Foo Title')
>
>I hope some day Actions will be accessible directly:
>
>  action_provider.Actions.global.foo.edit(title='Foo Title')
>
>
>3.) Just for the records: this is <http://collector.zope.org/CMF/195>
>
>
>Cheers,
>   Yuppie
>
>



More information about the Zope-CMF mailing list