mς γΈEc@sWdkZdklZdklZdklZdk l Z de fd„ƒYZ dS(N(s interfaces(saddTALNamespaceData(s implements(s StringExprtZ2ProviderExpressioncBs$tZdZeeiƒd„ZRS(sŠCreate a custom provider expression which overrides __call__ to acquisition wrap the provider so that security lookups can be done.cCsΠtt|ƒi|ƒ}|id}|id}|id}t i i |||ft i|ƒ}|djot i|ƒ‚nt|ddƒdj o|i|ƒ}nt||ƒ|iƒ|iƒS(Ntcontexttrequesttviewt__of__(tsuperRtselft__call__tecontexttnametvarsRRRtzopet componenttqueryMultiAdaptert cp_interfacestIContentProvidertprovidertNonetContentProviderLookupErrortgetattrRtaddTALNamespaceDatatupdatetrender(RRR RRRR((tG/data/zmath/zope/lib/python/Products/Five/browser/providerexpression.pyR s   $   (t__name__t __module__t__doc__t implementsRtITALESProviderExpressionR(((RRs  ( tzope.componentR tzope.contentprovidert interfacesRtzope.contentprovider.talesRtzope.interfaceRtzope.tales.expressionst StringExprR(RRRR#R R((Rt?s