[Zope3-Users] Re: Traverse to nearest site in menu action

Florian Lindner mailinglists at xgm.de
Sun Apr 3 17:19:12 EDT 2005


Am Samstag, 2. April 2005 08:37 schrieb Stephan Richter:
> On Saturday 02 April 2005 04:38, jürgen Kartnaller wrote:
> > > Why in the world would you want to do that? This seems just awful. What
> > > is your use case?
> >
> > In my case I want to have the possibility to jump back to my base view
> > (which is the default view of my site) from wherever I am within my site.
> >
> > But, if there is an easier way to do this, please let me know.
>
> Then write a wrapper view for all interfaces that internally looks up the
> next site and looks up the default view:
>
> class SiteDefaultView(object):
>
>   def __call__(self):
> 	site = getNextSiteSomehow()
> 	defaultViewName = getDefaultViewName(site, self.request, site)
> 	view = zapi.getMultiAdapter((site, request), Interface,
> name=defaultViewName) return view()

Hello,
your solution:

class toSite(object):
    def __call__(self):
        from zope.app.zapi import *
        site = getSite()
        defaultViewName = getDefaultViewName(site, self.request, site)
        view = getMultiAdapter((site, self.request), name=defaultViewName)
        return view()

get the same results as mine:

class toSite(object):
    def __call__(self):
        from zope.app.zapi import absoluteURL
        URL = absoluteURL(getSite(), self.request)
        return self.request.response.redirect(URL)


What are the differences? Which is better? Why?

I think yours is better since it does not involve a redirect. What do you 
think?

Thanks,

Florian



More information about the Zope3-users mailing list