[Zope-CMF] adding 'context' as an alias for 'object' in action expressions

Ross Patterson me at rpatterson.net
Mon Dec 1 12:57:20 EST 2008


Tres Seaver <tseaver at palladion.com> writes:

> yuppie wrote:
>> Hi!
>> 
>> 
>> Laurence Rowe wrote:
>>> yuppie wrote:
>>>> David Glick wrote:
>>>>> Does anyone have an objection to me adding 'context' as an alias for 
>>>>> 'object' in the expression context that is built when executing CMF 
>>>>> action expressions (in getExprContext in CMFCore/Expression.py)?  This 
>>>>> would remove one common source of minor confusion for beginning 
>>>>> CMF/Plone developers (namely, having to use object in action expressions 
>>>>> when you use context everywhere else).
>>>> -1
>>>>
>>>> "There should be one-- and preferably only one --obvious way to do it."
>>>>
>>>> 'context' is deprecated for this kind of expressions, CMF uses 'object' 
>>>> everywhere. Supporting 'object' *and* 'context' or switching from 
>>>> 'object' to 'context' will cause even more confusion.
>>>>
>>>> Please see this thread
>>>> http://mail.zope.org/pipermail/zope-cmf/2005-March/021990.html>>> with this result
>>>> http://mail.zope.org/pipermail/zope-cmf/2005-March/021999.html>> That thread refers to 'content' rather than 'context'.
>> 
>> The links to the thread were not meant as a contribution to the 
>> discussion if 'context' is better than 'object'. My point is that this 
>> was discussed before and that using 'object' was an explicit decision. 
>> (And 'context' was also considered: 
>> http://mail.zope.org/pipermail/zope-cmf/2005-March/021957.html )
>> 
>>> Page templates have already made 'context' available as an alternative 
>>> to 'here'. I don't see why 'object' should be treated any differently.
>>>
>>> "There should be one-- and preferably only one --obvious way to do it."
>> 
>> The proposal was to *add* an alias. That means two ways to do it. It 
>> makes the chance higher that you guess the right name, but it doesn't 
>> make things more obvious.
>
> 'context' is the canonical name for the object through which a script or
> templated was acquired (its aq_parent, in fact);  'here' is a
> long-deprecated alias for 'context'.  'context' is like the 'self'
> binding of a normal Python method.
>
> Action expressions aren't scripts / templates, and don't have many of
> the stock names ('context', 'container', 'template', 'script',
> 'traverse_subpath', 'namespace', 'subpath', 'options', 'modules',
> 'root') which scripts and templates offer;  instead, they offer names
> which are useful in writing action URLs (e.g., 'object_url',
> 'folder_url', 'portal', 'user_id', etc.)  Their 'self' / 'context' would
> logically be the ActionInformation object, rather than the "target" for
> which the URL / condition is being computed.

Well, isn't a view instance object very much like an ActionInformation
object in this sense?  In TALES expressions in a view, "context" doesn't
refer to the view object.

Ross



More information about the Zope-CMF mailing list