[Zope3-Users] Re: Traverse to nearest site in menu action
Florian Lindner
mailinglists at xgm.de
Wed Apr 6 16:21:11 EDT 2005
Am Mittwoch, 6. April 2005 15:33 schrieb Philipp von Weitershausen:
> Florian Lindner wrote:
> > 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 *
>
> ugh. Don't do "from xyz import *" imports. Here it's ok maybe because
> the scope of the import is limited to the __call_ method. But still,
> they're highly discouraged.
Sure. I've changed it as soon as I mark this code as stable in my mind. Just
for quick coding.
> > 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?
>
> I think your solution is better, Florian. Stephan's solution, while
> correct, makes it look like a site can or maybe even should be accessed
> through http://mysite.com/someobject/@@getSite.html. That's of course
> not true, a site should always be reached at
> http://mysite.com/++etc++site, so IMO it's better to redirect.
>
> (One case where the redirect is definitely better is bookmarks. Imagine
> somebody gets the site through Stephan's solution and bookmarks that
> page. Then, later, 'someobject' is renamed to 'anobject'; now the
> bookmark won't work anymore, even though the site is still there).
Thanks,
Florian
More information about the Zope3-users
mailing list