[Zope-dev] manage_workspace changes

Dieter Maurer dieter at handshake.de
Sun Oct 19 04:21:00 EDT 2003


Yuppie wrote at 2003-10-15 14:24 +0200:
 > As also mentioned here 
 > <http://mail.zope.org/pipermail/cmf-checkins/2003-October/003702.html>
 > some CMF tool tabs are broken if used with a current Zope-2_6-branch 
 > checkout.
 > 
 > I didn't spend much time to find out what's really going on here, so I 
 > might be missing something.
 > 
 > But it looks like the fix for <http://collector.zope.org/Zope/1058> 
 > (regarding an PropertySheets issue) causes this bug. Can anybody confirm 
 > this?

I fear I can confirm this.

"App.Management.Tabs.manage_workspace" apparently had the intention
to return "getattr(self,method)(self,REQUEST)" in the case that "method"
did not contain a "/", and to redirect otherwise.

Due to a bug in the the condition, however, it redirected for all
methods unless they started with a "/" (reported as a bug in the
Zope mailing list).
I fixed the condition (patch to collector 1058).

Unfortunately, returning "getattr(self,method)(self,REQUEST)"
requires the method to be DTML like and breaks if this is not the
case.

I now think it is best to *always" use the redirect and never
return the method. My code now looks like:

        # DM: fixing the wrong condition now reveals a bug in WingDBG
        #     always redirect (as done earlier with the exception of
        #     absolute URLs)
        if 1 or m.find('/') >= 0:
            # DM: let absolute URLs work (as generated by
            #     "OFS.PropertySheets.PropertySheets.manage_options") 
            prefix= m.startswith('/') and REQUEST['BASE0'] or REQUEST['URL1']
            raise 'Redirect', (
                "%s/%s" % (prefix, m))

        return getattr(self, m)(self, REQUEST)


Dieter



More information about the Zope-Dev mailing list