mò ã¸Ec@s¡dZdkZdkZdkZdklZdklZdk l Z l Z dk l Z dklZdklZdklZd klZd klZd klZgZd eifd „ƒYZdeefd„ƒYZdeefd„ƒYZdfd„ƒYZ d„Z!de fd„ƒYZ"de fd„ƒYZ#de fd„ƒYZ$dfd„ƒYZ%deeefd„ƒYZ&de fd „ƒYZ'dS(!s[Provide basic resource functionality $Id: resource.py 71269 2006-11-22 13:37:06Z yuppie $ N(s Traversable(sempty(sFilesImage(s PageTemplate(s implements(sgetMultiAdapter(s IResource(stime(s IAbsoluteURL(s BrowserViewtResourcecBs*tZdZeeƒd„Zd„ZRS(sA publishable resource cCs ||_dS(N(trequesttself(RR((t=/data/zmath/zope/lib/python/Products/Five/browser/resource.pyt__init__)scCsk|i}|i}tt||iftƒƒ}t i |ƒ}t |t ƒpd|}nd||fS(Ns++resource++%ss%s/%s(Rt__name__tnamet __parent__t containertstrtgetMultiAdapterRt IAbsoluteURLturlturllibtunquotet isinstancetDirectoryResource(RRRR ((Rt__call__,s  (Rt __module__t__doc__t implementst IResourceRR(((RR$s   tPageTemplateResourcecBstZd„Zd„ZRS(NcCs |dfS(Ntrender(srender(R(RR((Rt__browser_default__;scCs|i}||iƒS(sRendered contentN(RtcontexttptR(RR((RR>s (RRRR(((RR8s t FileResourcecBs)tZdZd„Zd„Zd„ZRS(s!A publishable file-based resourcecCs||iffS(N(RRtREQUEST_METHOD(RR((RRGsc CsN|i}|i}|i}|iidd ƒ}|d j o¯|i dƒd}yt t |ƒƒ}Wn d }nX|d j oet |dd ƒot |iƒ}n t dƒ}|djo"||jo|idƒdSqèqìn|id|iƒ|id|iƒ|id d ƒt|id ƒ}|iƒ}|iƒ|S( sDefault contentsIf-Modified-Sincet;itlmti0ts Content-Types Last-Modifieds Cache-Controlspublic,max-age=86400trbN(RRtfileRtresponsetenvirontgettNonetheadertsplittlongttimeFromDateTimeStringt mod_sincetgetattrRtlast_modt setStatust setHeadert content_typetlmhtopentpathtftreadtdatatclose( RR,R3RR*R5R&R!R"((RtGETJs2          cCs[|i}|ii}|ii}|id|iƒ|id|iƒ|iddƒdS(Ns Content-Types Last-Modifieds Cache-Controlspublic,max-age=86400R(RRR!RR"R.R/R0(RR"R!((RtHEADrs   (RRRRR7R8(((RRCs   (tResourceFactorycBs)tZdZdZdd„Zd„ZRS(NcCs<||_|i||ƒ|_|dj o ||_ndS(N( RRt_ResourceFactory__nametfactoryR2t_ResourceFactory__rsrctresource_factoryR%tresource(RRR2R=((RRs  cCs|i|i|ƒ}|S(N(RR>R<R(RRR>((RR‡s(RRR%R;R>RR(((RR9|s cCst|ƒ}||_|S(N(t PageTemplateR2ttemplateRR(RR2RR@((Rt _PageTemplate‹s  tPageTemplateResourceFactorycBstZdZeZeZRS(s%A factory for Page Template resources(RRRRAR;RR>(((RRB“s tFileResourceFactorycBstZdZeZeZRS(sA factory for File resources(RRRtFileR;RR>(((RRC™s tImageResourceFactorycBstZdZeZeZRS(sA factory for Image resources(RRRtImageR;RR>(((RREŸs t DirectorycBstZd„ZRS(NcCs||_||_dS(N(R2RRR(RR2R((RR©s (RRR(((RRG§sRcBsztZhde<de<de<de<de<deRRt__of__( RRR[RZR;R>RYRXR]R2((RR$Ñs     ( RRRERBR^RCR_RRPRRTR\R$(((RR­s<     R`cBstZeZeZRS(N(RRRGR;RR>(((RR`ës((RRVR t AcquisitiontOFS.Traversablet TraversabletOFSTraversablet$zope.app.publisher.browser.resourcesRQtzope.app.publisher.fileresourceRDRFt'zope.app.publisher.pagetemplateresourceR?tzope.interfaceRtzope.componentR tzope.component.interfacesRt zope.datetimettimeR)t"zope.traversing.browser.interfacesR tProducts.Five.browserRMR\tExplicitRRRR9RARBRCRERGRR`(RRMR)R RRBR R R?RARQR\RCRRRRGReRbRR9RFR`RERDRV((Rt?s2             9 >