mò ã¸Ec@s{dZdklZdklZdklZdklZdk l Z dk l Z dk lZdefd „ƒYZd S( sRLocal utility registration $Id: utility.py 67820 2006-05-02 09:21:45Z philikon $ (s implements(sgetGlobalSiteManager(sComponentLookupError(sgetNextSiteManager(saq_base(sFolder(sIFiveUtilityRegistrytSimpleLocalUtilityRegistrycBsctZeeƒd„Zed„ƒZdd„Zddd„Z d„Z d„Z dd„Z RS( NcCs||_|iiƒ|_dS(N(tcontexttselftgetSiteManagert __parent__(RR((t9/data/zmath/zope/lib/python/Products/Five/site/utility.pyt__init__s cCs/yt|ƒSWntj otƒSnXdS(N(tgetNextSiteManagerRtComponentLookupErrortgetGlobalSiteManager(R((Rtnext$stcCs:|i||ƒ}|dj o|Snt||ƒ‚dS(s+See IFiveUtilityRegistry interface N(Rt queryUtilityt interfacetnametctNoneR(RR RR((Rt getUtility+s  cCsÀtt|iƒddƒdj oˆx…|iiiƒD]m\}}|i |ƒoQ|i dƒdjo|i ddƒ\}}nd}||jo|Sq¢q5q5Wn|ii|||ƒS(s+See IFiveUtilityRegistry interface t utilitiest-iÿÿÿÿiR N(tgetattrtaq_baseRRRRt objectItemstidtutilityR t providedBytfindtsplittprefixt utility_nameRR R tdefault(RR RRRRRR((RR 3s"  ccsôg}tt|iƒddƒdj oŠx‡|iiiƒD]o\}}|i |ƒoS|i dƒdjo|i ddƒ\}}nd}|i|ƒ||fVq;q;Wnx;|ii|ƒD]'\}}||jo||fVqÅqÅWdS(NRRiÿÿÿÿiR (tnamesRRRRRRRRRR RRRRRtappendR tgetUtilitiesFor(RR RRRRR((RR!As"    ccs€tt|iƒddƒdj o9x6|iiiƒD]}|i |ƒo|Vq5q5Wnx|i i |ƒD] }|VqnWdS(NR( RRRRRRt objectValuesRR RR tgetAllUtilitiesRegisteredFor(RR R((RR#Ps"cCsÃtt|iƒddƒdjo|iidtdƒƒn|ii}|djo|i ƒ}n|i ƒd|}||i ƒjo t d|i ƒ|fƒ‚n|i||ƒdS(NRR Rs?There is already a utility registered for %s with the name '%s'(RRRRRt _setObjecttFolderRRR tgetNameRt objectIdst ValueErrorR(RR RRRR((RtregisterUtility[s "   ( t__name__t __module__t implementstIFiveUtilityRegistryRtpropertyR RRR R!R#R)(((RRs     N(t__doc__tzope.interfaceR,tzope.componentR tzope.component.interfacesRtzope.app.componentRt AcquisitionRt OFS.FolderR%tProducts.Five.site.interfacesR-tobjectR(R,RR RRR-R%R((Rt?s