mò /á¸Ec@sdZddd!ZdkZdkZdkZdklZlZlZdkl Z dk Z e i eiƒƒZ de fd„ƒYZd efd „ƒYZd efd „ƒYZd efd„ƒYZdefd„ƒYZd„Zd„Zd„Zd„Zeieid„Zd„Zd„Zd„ZeidƒZeideiƒZ dfd„ƒYZ!d„Z"d„Z#dS(s3Commonly used functions for WebDAV support modules.s$Revision: 1.18 $i iþÿÿÿN(s iso8601_dates rfc850_dates rfc1123_date(saq_basetWebDAVExceptioncBstZRS(N(t__name__t __module__(((t,/data/zmath/zope/lib/python/webdav/common.pyRstLockedcBstZRS(N(RR(((RRstPreconditionFailedcBstZRS(N(RR(((RRstConflictcBstZRS(N(RR(((RR"stUnsupportedMediaTypecBstZRS(N(RR(((RR%scCst|ƒo |ƒSn|S(N(tcallabletattr(R ((Rtabsattr(s  cCs1|idƒ}|idƒ}di||fƒS(Nt/(turltrstriptstlstriptjoin(R R((Rturljoin-scCsct|ƒ}|| |jo|| }nt|ƒdjo|ddjo|d }n|S(NiiÿÿÿÿR (tlenRtnR (R RR((Rturlfix2s  $cCsnt|dƒpdSntt|iƒt|iƒƒodSntt|ƒdƒo|iodSndS(Nt aq_parentit$isTopLevelPrincipiaApplicationObjecti(thasattrtobtaq_baseRR tidR(R((Rt is_acquired9s" cCsH|ddjo|Sn||ƒ\}}||ƒ\}}|pdS(NiR (R tftypettypeturitfhostthost(R RRRR R((RturlbaseEs cCs#dtiƒtiƒtiƒfS(Ns%s-%s-00105A989226:%.03f(t_randGentrandomttime(((RtgenerateLockTokenMscCst|ddƒS(s*Return true if object is a DAV collection.t__dav_collection__iN(tgetattrtobject(R(((RtisDavCollectionRscCs_|pdSn|ddjodSn|ddjo|dd!}n||idƒdS(Nit[t<.+?>)?\s*\((?P[^)]+)\)s7(?Pnot)?\s*(?P<[a-zA-Z]+:[^>]*>|\[.*?\])tTagListcBstZd„ZRS(NcCsd|_g|_d|_dS(Ni(R.tselftresourcetlisttNOTTED(R2((Rt__init__ls  (RRR6(((RR1kscCs·g}d}x¤ti||ƒ}|pPn||iƒ}tƒ}|i dƒ|_ |i o|i dd!|_ n|i dƒ}t |ƒ\|_ |_|i|ƒqW|S(NiiR3iÿÿÿÿtlistitem(touttitIfHdrtsearchthdrtmtendR1ttagtgroupR3R7t ListParserR5R4tappend(R<R9R=R?R7R8((RtIfParserqs   cCsƒg}d}d}xdti||ƒ}|pPn||iƒ}|i|i dƒƒ|i dƒo d}qqW||fS(NiiR7tnot( R8R5R9tListItemR;R7R=R>RBR@(R7R9R=R8R5((RRAƒs($t__doc__t __version__R$turllibtret App.Commont iso8601_datet rfc850_datet rfc1123_dateRR#tRandomR"t ExceptionRRRRRR RRRt splittypet splithostR!R%R)R0tcompileR:tIRER1RCRA(R#RLRMR%RRRR"RRHRCRIR RGR:RRRRRRKR)RAR!R0RER$R1((Rt?s2