[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