Hi Jens!

Jens Vagelpohl wrote:
Update of /cvs-repository/Products/CMFCore
In directory cvs.zope.org:/tmp/cvs-serv23261/CMFCore

Modified Files:
Tag: CMF-1_5-branch
PortalContent.py Log Message:
- CMFTopic.Topic/CMFCore.PortalContent: Both these classes were using
the now-deprecated CMFCore.utils._getViewFor method, and strangely
enough the deprecation warning didn't show. Replaced with the
new method of getting the view.

Maybe the deprecation warning didn't show up because the method was never called?

The first implementation of Method Aliases did never call objects directly. __call__ was only used for backwards compatibility if no alias was specified.

Before the release of CMF 1.5.0 I changed the Method Aliases machinery and now in some situations the object is called directly, but forgot to update __call__ on the 1.5 branch. So this needs to be fixed, but in a different way.

=== Products/CMFCore/PortalContent.py 1.47 => ===
--- Products/CMFCore/PortalContent.py:1.47 Thu Aug 12 11:07:39 2004
+++ Products/CMFCore/PortalContent.py Thu May 5 16:53:32 2005
@@ -95,22 +94,22 @@
return "%s %s" % (self.Title(), self.Description())
def __call__(self):
- '''
- Invokes the default view.
- '''
- view = _getViewFor(self)
- if getattr(aq_base(view), 'isDocTemp', 0):
- return view(self, self.REQUEST)
+ """ Invokes the default view.
+ """
+ view_id = self.getTypeInfo().queryMethodID('view')
+ view_obj = self.unrestrictedTraverse(view_id)
+ if getattr(aq_base(view_obj), 'isDocTemp', 0):
+ return view_obj(self, self.REQUEST)
- return view()
+ return view_obj()

There are two issues with this checkin:

1.) It implements different behavior than CMF HEAD

2.) It breaks backwards compatibility

I propose to use the code from HEAD and the _getViewFor code as fallback in case no '(Default)' alias is defined.



Zope-CMF maillist  -  Zope-CMF@lists.zope.org

See http://collector.zope.org/CMF for bug reports and feature requests

Reply via email to