[Plone-IT] domanda su browser view

Davide Moro davide.moro a redomino.com
Mar 4 Giu 2013 09:07:12 UTC


Il 04/06/2013 10:52, Yuri ha scritto:
> se ho questa browser view (collective.lineage ma non è importante):
>
> class LineageUtils(BrowserView):
>
>     def getSwitcherDefault(self):
>         registry = getUtility(IRegistry)
>         settings = registry.forInterface(ILineageSettings)
>         if settings.menu_text:
>             return settings.menu_text
>         return "Jump to Child Site"
>
>     def isChildSite(self):
>         portal_state = 
> self.context.restrictedTraverse('plone_portal_state')
>         root_path = portal_state.navigation_root_path()
>         nav_root = self.context.restrictedTraverse(root_path)
>         return IChildSite.providedBy(nav_root)
>
> definita poi tramite zcml con permesso zope.Public e con nome 
> lineageutils, io posso andare all'url:
>
> miosito.com/@@lineageutils e mi ritorna la classe.

Esatto, perchè non ha un metodo __call__ e perchè manca la definizione 
del template nello zcml (immagino sia una vista con dei metodi di 
utilità tipo plone_context_state, ecc).

>
> Però andando su miosito.com/@@lineageutils/isChildSite o 
> miosito.com/@@lineageutils/getSwitcherDefault non ottengo nulla (torna 
> la pagina 404)

Probabilmente non è uno dei metodi descritti in allowed_interface e 
quindi non richiamabile direttamente via traversing. Puoi provare a 
creare un'interfaccia fittizia con quei metodi, dichiarare l'implements 
e provare a vedere se così riesci? Sono curioso :)

>
> ma posso fare in un template (di un'altra browserview, o view o credo 
> in un qualsiasi template, poiché qui è usato view per il contesto, 
> potevano usare anche view/context no?):
>
> <tal:block define="
>                    message view/@@lineageutils;">
> <option value="" tal:content="message/getSwitcherDefault">Jump to 
> child site</option>
> </span>

E'corretto, definisci la tua vista e usi i suoi metodi.


Ciao,

davide


-- 
Davide Moro
Technical Development Manager
http://linkedin.com/in/davidemoro82

Redomino Srl
http://redomino.com
HQ Largo Valgioie 14, Turin IT
Phone +39 0117499875



Maggiori informazioni sulla lista Plone-IT