mò -á¸Ec@sÌdZdkZdkZdkZdklZdklZdklZdklZdk l Z dk l Z dk lZlZd efd „ƒYZd „Zd „Zd „Zeadad„Zd„Zdeeeed„Zeieieieidddd„Z eƒZ!he!i"e!i#d„Z$dfd„ƒYZ%da&eƒZ'e Z(da)d„Z*d„Z+eieieieidddd„Z,eieieieidddd„Z-dS(swPython Object Publisher -- Publish Python objects on web servers $Id: Publish.py 71819 2007-01-08 17:09:45Z philikon $N(sResponse(sRequest(s allocate_lock(smapply(sRedirect(ssetDefaultSkin(snewInteractionsendInteractiontRetrycBs)tZdZeeed„Zd„ZRS(s"Raise this to retry a request cCs|||f|_dS(N(tttvttbtselft_args(RRRR((t1/data/zmath/zope/lib/python/ZPublisher/Publish.pyt__init__scCsa|i\}}}|djo t}n|djo ||‚nz|||‚Wdd}XdS(N(RRRRRtNoneR(RRRR((Rtreraise"s  (t__name__t __module__t__doc__RRR (((RRs cCst||ƒ}|S(N(tapplytobjecttargstresult(RRtrequestR((Rt call_object)scCs1|djo|ddSn|ii|ƒdS(NRtPARENTSi(tnameRtresponsetbadRequestError(RR((Rt missing_name-s cCs|iid|iƒdS(Nsclass %s(RRtforbiddenErrortklassR (RR((Rtdont_publish_class1scCs |adS(N(t debug_modet_default_debug_mode(R((Rtset_default_debug_mode7scCs |adS(N(trealmt_default_realm(R((Rt set_default_authentication_realm;sic Cs¬t|ƒ\}}}} }}} } d}d}y˜t ƒ|iƒ|i}|i }|ddƒiƒiƒdjo'|ddƒ} | o t| ‚qŸn||d<|o ||_n| o!|iddƒ o | |_n|dj o |ƒn|dƒ}|g|d<}| o| iƒn|i|d | ƒ}| o| i||ƒn|||i||d |||d d ƒ}||j o|i!|ƒn| o| i"ƒnt#ƒ|SWnÝd}|dj ot%|d dƒ}n|dj o_d k&l'}t(i)ƒd \}}|dt%|d|ƒ||o|ƒdpdfƒn|dj o|o|d}nz—y8|||t(i)ƒdt(i)ƒd t(i)ƒdƒSWnXt,j oL|i-ƒp8|||t(i)ƒdt(i)ƒd t(i)ƒdƒSqnXWd| o| i.ƒnt#ƒX|i/ƒ} |i1ƒt2| ƒzt3| |||ƒSWd| i1ƒXq¨| o| i.ƒnt#ƒ‚nXdS(NtSUBMITttcancelt CANCEL_ACTIONit REMOTE_USERt PATH_INFORtvalidated_hookitbindt setMessage(scompact_tracebackis %s: %s %sR iÿÿÿÿ(5tget_module_infot module_namet bobo_beforet bobo_afterRRRterr_hookR'ttransactions_managerRtparentsRtnewInteractionRt processInputstgett request_gettstriptlowerR#tRedirectt after_listtpathtbeginttraversetrecordMetaDatatmapplyRRRRRtsetBodytcommittendInteractiontsmtgetattrtasyncoretcompact_tracebacktsystexc_infotcltvalRtsupports_retrytaborttretryt newrequesttclosetsetDefaultSkintpublishtdebug(RR+R8RPRRRR=R4RLR#R/R'RRGR0RDRR.RR9RR-RHRAR,R((RRO?s–$   "          <           cCsÀd} d} dg} zÕyx|djotd|d|ƒ}n |i}|djot |||ƒ}nt |ƒt ||| d|ƒ}WnÝtj o%} tiƒ} |ii| ƒn®tj o‚} t| tƒot| ƒdjo | } n:ttdƒotiƒ} nt| tiƒdf} |iid | ƒn!|iiƒ|iƒ} nX|oRt|d dƒ} | dj o | ƒqÉt|ƒ}|o|i|ƒqÉn| ddj o| dƒnWd|dj o|iƒnX| o¬y9t| d d ƒo| d i }nt!| d ƒ}Wn| d od pd}nXt|id ƒo|ii"|ƒnz| d| d | d‚Wdd} Xn| S( NiiÈtstdouttstderrRPiRFiit outputBodytcodet_requestShutdown(#tmust_dietstatusRR8RtResponseRQRRRtRequesttstdintenvironRNROR+RPt SystemExitRRERFt exceptiont ImportErrort isinstancettupletlenthasattrt getStatusRBRStstrtwriteRMRTtintRU(R+RZRQRRR[RPRRRTR8RVRWRSR((Rtpublish_module_standardµsd      #       cCs |i|ƒo ||Sn|ddjo|d }n|ƒd}tƒ}z¥ydt|||d ƒ}t |dƒo |i }nt dj o t }n|}d} t |dƒo|i } nt} t|ddƒ}t|ddƒ} t |dƒo |i} n$t |d ƒo |i} n|} t|d dƒ} t|d dƒ}t|d dƒ}|p tƒ}n|| | || | ||f} | ||<||d<| SWn:tiƒ\}}}t |ƒ}t!||f|‚nXWdd}|ƒXdS(Niüÿÿÿs.cgiR t__bobo_realm__t__bobo_debug_mode__t__bobo_before__t__bobo_after__tbobo_applicationt web_objectstzpublisher_exception_hooktzpublisher_validated_hooktzpublisher_transactions_manager(s__doc__(#tmodulesthas_keyR+tacquireRRtglobalstgt __import__tmoduleRbRhRRRRiRRBR,R-RlRRmt error_hookR'R/tDefaultTransactionsManagertinfoRERFRRRdR^trelease(R+RqRsR{RwR/R'RRRxRRRzR-RuRRR,((RR*÷sR         RycBs,tZd„Zd„Zd„Zd„ZRS(NcCstiƒdS(N(t transactionR:(R((RR::scCstiƒdS(N(R|R?(R((RR?<scCstiƒdS(N(R|RJ(R((RRJ>scCsb|i}tiƒ}|i|dƒƒ|ddƒ}|dj o|i||dƒƒndS(NR&tAUTHENTICATED_USERtAUTHENTICATION_PATH( RR3R4R|tTtnoteRt auth_usertsetUser(RRRR4RR((RR<@s    (R R R:R?RJR<(((RRy9s   cCs |adS(N(tfilenamet_pfile(Rƒ((Rtinstall_profilingPsc CsWy:t|d|d|d|d|d|d|d|ƒ}Wn d}nX|t _ dS(NRZRQRRR[RPRR( t_pfuncR+RZRQRRR[RPRRtrRREt_pr_( R+RZRQRRR[RPRRR‡((RtpmTs cCsÖdk} dk} tiƒzô|dj o|idƒ} n|idƒ} | ddjo8t |d|d|d|d|d|d |d |ƒSn| iƒ} | it||||||||ƒ ti}| iƒtdjo| i| ƒat_nti| ƒWdtiƒX|djo§ytiƒ}tt d ƒ} | i"d ƒ| t_ ti#ƒi$d ƒi%dƒti#ƒi$dƒi%dƒ| i&ƒ| i'ƒWnnX|d|d|d‚n|S(NR&iòÿÿÿtmanage_profileRZRQRRR[RPRRtws}See the url http://www.python.org/doc/current/lib/module-profile.html for information on interpreting profiler statistics. t cumulativeiúttimeiii((tprofiletpstatst_plockRsRRR3t path_infoR[R†R+RZRQRRRPRtProfiletpobjtruncallR‰RERˆRt create_statst_pstattStatst_ps_taddR{RFterrortopenR„tfileRet strip_dirst sort_statst print_statstflushRM(R+RZRQRRR[RPRRRRœRŽRR‘R“Rš((Rtpublish_module_profiled]sF            c CsMto#t||||||||ƒSn t ||||||||ƒSdS(s< publish a Python module, with or without profiling enabled N( R„R¡R+RZRQRRR[RPRRRg(R+RZRQRRR[RPRR((Rtpublish_moduleˆs (.R REtosR|RXRYt maybe_lockt allocate_lockR=t zExceptionsR7tzope.publisher.browserRNtzope.security.managementR1R@t ExceptionRRRRtFalseRRRRR RORZRQRRR[Rgt_lRsR{R*RyR„RR†R–R…R‰R¡R¢(R7RR@R1RR¢R=RR†RR…RgRRNR R«RXR‰R¡RYRERR|RyR¥R R*R£RO((Rt? s<            v*A B   *+