PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  aNc@sdZddlZddlZddlmZddlmZmZmZddlm Z ddl m Z dZ de fd YZd e fd YZd Zd dddd gZddZde fdYZdS(s Middleware to display error documents for certain status codes The middleware in this module can be used to intercept responses with specified status codes and internally forward the request to an appropriate URL where the content can be displayed to the user as an error document. iN(turlparse(tForwardRequestExceptiontRecursiveMiddlewaret RecursionLoop(t converters(treplace_headercCs[x6|D].}t|tstdt|qqWd}tt||d|S(s Intercepts a response with a particular status code and returns the content from a specified URL instead. The arguments are: ``app`` The WSGI application or middleware chain. ``codes`` A dictionary of integer status codes and the URL to be displayed if the response uses that code. For example, you might want to create a static file to display a "File Not Found" message at the URL ``/error404.html`` and then use ``forward`` middleware to catch all 404 status codes and display the page you created. In this example ``app`` is your exisiting WSGI applicaiton:: from paste.errordocument import forward app = forward(app, codes={404:'/error404.html'}) s4All status codes should be type int. %s is not validcSs|j|r||SdSdS(N(thas_keytNone(tcodetmessagetenviront global_conftcodes((s7/usr/lib/python2.7/site-packages/paste/errordocument.pyterror_codes_mapper0sR (t isinstancetintt TypeErrortreprRtStatusBasedForward(tappR RR ((s7/usr/lib/python2.7/site-packages/paste/errordocument.pytforwards  t StatusKeepercBseZdZdZRS(cCs(||_||_||_||_dS(N(Rtstatusturltheaders(tselfRRRR((s7/usr/lib/python2.7/site-packages/paste/errordocument.pyt__init__@s   csdfd}jjd}|d|djj||fqtj||qWjj|S(Ns set-cookie(tlowerRtappendRR(RRtexc_infotheadertvalue(Rtstart_response(s7/usr/lib/python2.7/site-packages/paste/errordocument.pytkeep_status_start_responseGs t?it PATH_INFOit QUERY_STRINGts wsgi.errorss'Recursion error getting error page: %s s500 Server Errors Content-types text/plains-Error: %s. (Error page could not be fetched)(s Content-types text/plain( RRtsplittlenRRtwritetsysRR(RR R R!tpartste((RR s7/usr/lib/python2.7/site-packages/paste/errordocument.pyt__call__Fs (t__name__t __module__RR,(((s7/usr/lib/python2.7/site-packages/paste/errordocument.pyR?s RcBs#eZdZddZdZRS(s Middleware that lets you test a response against a custom mapper object to programatically determine whether to internally forward to another URL and if so, which URL to forward to. If you don't need the full power of this middleware you might choose to use the simpler ``forward`` middleware instead. The arguments are: ``app`` The WSGI application or middleware chain. ``mapper`` A callable that takes a status code as the first parameter, a message as the second, and accepts optional environ, global_conf and named argments afterwards. It should return a URL to forward to or ``None`` if the code is not to be intercepted. ``global_conf`` Optional default configuration from your config file. If ``debug`` is set to ``true`` a message will be written to ``wsgi.errors`` on each internal forward stating the URL forwarded to. ``**params`` Optional, any other configuration and extra arguments you wish to pass which will in turn be passed back to the custom mapper object. Here is an example where a ``404 File Not Found`` status response would be redirected to the URL ``/error?code=404&message=File%20Not%20Found``. This could be useful for passing the status code and message into another application to display an error document: .. code-block:: python from paste.errordocument import StatusBasedForward from paste.recursive import RecursiveMiddleware from urllib import urlencode def error_mapper(code, message, environ, global_conf, kw) if code in [404, 500]: params = urlencode({'message':message, 'code':code}) url = '/error?'%(params) return url else: return None app = RecursiveMiddleware( StatusBasedForward(app, mapper=error_mapper), ) cKsm|dkri}n|r<tj|jdt|_n t|_||_||_||_||_ dS(Ntdebug( RRtasbooltgettFalseR/t applicationtmapperR tparams(RRR4R R5((s7/usr/lib/python2.7/site-packages/paste/errordocument.pyRs  !    csgg}dfd}j|}r|t|dr[|jnfd}td|n|SdS(Ncs|jd}yt|d}Wn1ttfk rVtdt|dnXdj|d}j||jj }|dkpt |t std|n|rj |||ggj S|||SdS(Nt is@StatusBasedForward middleware received an invalid status code %sisiExpected the url to internally redirect to in the StatusBasedForward mapperto be a string or None, not %r(R&Rt ValueErrorRt ExceptionRtjoinR4R R5RRtstrR(RRRt status_codeRR tnew_url(R RR R(s7/usr/lib/python2.7/site-packages/paste/errordocument.pytchange_responses,  tclosec s4t|dddddddddS(NRiiRRi(R(R(R(s7/usr/lib/python2.7/site-packages/paste/errordocument.pytfactorys%R?(RR3thasattrR>R(RR R twriterR=tapp_iterR?((R RR Rs7/usr/lib/python2.7/site-packages/paste/errordocument.pyR,s N(R-R.t__doc__RRR,(((s7/usr/lib/python2.7/site-packages/paste/errordocument.pyR^s4 cKsti}xX|jD]J\}}yt|}Wn!tk rRtd|nX||| Error %(code)s

Error %(code)s

%(message)s


Additionally an error occurred trying to produce an error document. A description of the error was logged to wsgi.errors.

( RLRMRNRR3R4R REtfallback_template(RRR4R RE((s7/usr/lib/python2.7/site-packages/paste/errordocument.pyRs       csggy4dfd}j|}Wny&ddl}t|jd}Wn d}nXyd\}}Wndd}}nXdjdt|ji|d6|d 6gSXrdi} xGjD]9\} } | d kr1td | d s"   ,r