mò /á¸Ec@s dZdkZdkZdkZdklZdklZdkl Z dk l Z dk l Z dk lZdk lZd klZlZd klZd klZd klZlZlZlZdkZd klZlZlZdklZdkl Z l!Z!l"Z"l#Z#dk$l%Z%dk&l&Z&dk'l'Z'dk(l)Z)deei*e&fd„ƒYZ+ee+ƒde+ei,i-fd„ƒYZ.ee.ƒdS(sdWebDAV support - null resource objects. $Id: NullResource.py 67823 2006-05-02 09:55:17Z philikon $ N(sInitializeClass(sgetSecurityManager(sClassSecurityInfo(sview(s add_folders(swebdav_lock_items(swebdav_unlock_items(s PersistentsDTMLFile(s CopyError(sMethodNotAllowed(s UnauthorizedsNotFounds Forbiddens BadRequest(saq_bases tokenFindersIfParser(sisDavCollection(sLockedsConflictsPreconditionFailedsUnsupportedMediaType(s IWriteLock(sResource(sWriteLockInterface(sguess_content_typet NullResourcecBsÈtZdZefZdZeƒZed„Z ed„Z ei e dƒd„Z e ZZZZZZe Zd„Zeidƒd„Zei ed ƒd „Zei ed ƒd „ZRS( soNull resources are used to handle HTTP method calls on objects which do not yet exist in the url namespace.icCs||_||_dS(N(tnametselft__name__tparentt __parent__(RRRtrequest((t2/data/zmath/zope/lib/python/webdav/NullResource.pyt__init__7s cCsTyt||ƒSWnnX|iddƒ}|djo td‚ntd‚dS( NtREQUEST_METHODtGETtPUTtMKCOLtLOCKs(Collection ancestors must already exist.s%The requested resource was not found.(sPUTsMKCOLsLOCK(tgetattrRRtREQUESTtgettmethodtConflicttNotFound(RRRR((Rt__bobo_traverse__;s  tHEADcCs|i||ƒtd‚dS(s>Retrieve resource information without a response message body.s&The requested resource does not exist.N(Rt dav__initRtRESPONSER(RRR((RRGsc CsÐ|o6|idƒo&dkl}|||d|ƒ}n|djo#dkl}|dd |ƒ}n`|d d jo)d k l }||d|d|ƒ}n&d k l }||d|d|ƒ}|S(Ns.pt(sZopePageTemplatet content_types text/htmlstext/xmls text/plain(s DTMLDocumenttRisimage/(sImage(sFile(s text/htmlstext/xmls text/plain( Rtendswitht'Products.PageTemplates.ZopePageTemplatetZopePageTemplatetbodyttyptobtOFS.DTMLDocumentt DTMLDocumentt OFS.ImagetImagetFile( RRRRR!RRR$R#((Rt_default_PUT_factoryPs     R c Cs'dkl}|i||ƒ|i} |i} |i ddƒ}t i | ƒpti| ƒo8| iƒo+|o| i||ddƒqªt‚n|o t‚nt|idƒpdƒ|jo*|d}|i|ƒ}|idƒn|id dƒ}|i d d ƒ} | d jot| |ƒ\} }nt| d |iƒ}|| | |ƒ} | d jo|i| | |ƒ} ny| i"| i#| ƒdƒWn&t$j ot%t&i'ƒd‚nX|ii(| | ƒ|ii)| ƒ} | i*||ƒ|i+d ƒ|i,dƒ|S(s.Create a new non-collection resource. (sLARGE_FILE_THRESHOLDtIfRtcolitCONTENT_LENGTHitBODYFILEtBODYs content-typet PUT_factoryiÉN(-tZServertLARGE_FILE_THRESHOLDRRRRRRRRt get_headertifhdrt IWriteLockt providedBytWriteLockInterfacetisImplementedByt wl_isLockedtdav__simpleifhandlertLockedtPreconditionFailedtintRtfiletreadRtseektNoneRtguess_content_typetencRR%tfactoryRt_verifyObjectPastet__of__t CopyErrort Unauthorizedtsystexc_infot _setObjectt_getObR t setStatustsetBody( RRRR-R9R>R?R/RRRRR((RR asD   -  #     R cCs;|i||ƒ|iddƒo td‚n|i}|i}t t |ƒ|ƒot d|‚nt |ƒp td‚n|iddƒ}ti|ƒpti|ƒo8|iƒo+|o|i||ddƒqþt‚n|o t‚nt|d |iƒ}||ƒ|id ƒ|idƒ|S( s!Create a new collection resource.R*RsUnknown request body.sThe name %s is in use.s*Cannot create collection at this location.R&R'it MKCOL_handleriÉN(RRRRRtUnsupportedMediaTypeRRRRthasattrtaq_basetMethodNotAllowedtisDavCollectiont ForbiddenR.R/R0R1R2R3R4R5R6R7Rtmanage_addFoldert mkcol_handlerRHRI(RRRRRRRR/((RR ®s,     -     R cCsÎ|i||ƒtƒ}|iƒ}|iddƒ}|i ddƒ}|i ddƒ} |i } |i} ti| ƒpti| ƒo8| iƒo+|o| i||ddƒqÖt‚n|o t‚n|p td‚nt| ƒ} | i| | ƒ| i| ƒ} ti|ƒ} | i!| |d | ƒ\}}|o.|i$d ƒ|i%d d ƒ|i&|ƒnT| i'|ƒ}|i$d ƒ|i%d d ƒ|i%dd|ƒ|i&|i)ƒƒdS(s; LOCK on a Null Resource makes a LockNullResource instance R*RR&tDepthtinfinityR'isNo body was in the requesttdepthiÏs Content-Typestext/xml; charset="utf-8"iÈs Lock-Tokensopaquelocktoken:N(*RRRRtgetSecurityManagertsecuritytgetUsertcreatorRRR.R/RURRRRR0R1R2R3R4R5R6R7t BadRequesttLockNullResourcetlocknullRFRGtdavcmdstLocktcmdtapplyttokentresultRHt setHeaderRIt wl_getLocktlocktasXML(RRRRYRbRaReR/RRR\RR_RURW((RR Òs>    -      (Rt __module__t__doc__R2t__implements__t__null_resource__tClassSecurityInfoRWR<RRtdeclareProtectedtViewRtDELETEtTRACEtPROPFINDt PROPPATCHtCOPYtMOVEt index_htmlR%t declarePublicR t add_foldersR twebdav_lock_itemsR (((RR-s"         L #R[cBs2tZdZefZdZdZeƒZhdd<ddRR%R?RR@RARCRPRDRERNRaRet wl_setLockR RFRHRI(RRRRRšR>R?ReR/RRR›RRRRa((RR rsR    -      (     R c Cs‰|i||ƒ|iddƒo td‚n|i}|i}|i ƒ}|i ddƒ} | p td‚nti|ƒpti|ƒoL|iƒo?|i||dddd |d dƒ} | p td ‚qàn|i||dd dƒ} | p td ‚n|iƒ}|i|ƒ|i|ƒ|i|ƒ} x$|D]\}}| i||ƒqKW|id ƒ|i dƒ|S(sÕ Create a new Collection (folder) resource. Since this is being done on a LockNull resource, this also involves removing the LockNull object and transferring its locks to the newly created Folder R*RsUnknown request body.R&s No If-headerR R'iR–R˜s)Condition failed against resources parents*Condition failed against locknull resourceiÉN(!RRRRRRKRRRRR™RšR.R/R7R0R1R2R3R4R5R›RœRR€RQRGtfolderRaReRžRHRI( RRRReRšRRRRaR›RŸR/((RR ½s:     -         (RRgRhR2Rit__locknull_resource__t meta_typeRkRWtmanage_optionsRlRmtDTMLFiletglobalsR|R{R}t_setNameR‚RRuR„RpRwR twebdav_unlock_itemsR“R RvR (((RR[s2          %   J(/RhRDR~tOFS.SimpleItemtOFStGlobalstInitializeClasst AccessControlRVRktAccessControl.PermissionstviewRmRvRwR¦t PersistentR£tOFS.CopySupportRBt zExceptionsRNRCRRPRZR]tcommonRMRR‰ROR6RR7RKt interfacesR0R†R2tzope.contenttypeR=tImplicitRt SimpleItemtItem_w__name__R[(!R0RORKRvR6R2RZRR[RwR=R‰R~R7R¦RMRCRRkRªR®RDR¨RNRmRRVRBR†R]RR£RP((Rt?s4                  Ø ä