Ñò ô†³Kc@sÂdZddkZddklZdZdZdZdZd Zd e fd „ƒYZ d e fd „ƒYZ de fd„ƒYZ d dgZ dejo#ddkZeideiƒndS(s~ Upload Progress Monitor This is a WSGI middleware component which monitors the status of files being uploaded. It includes a small query application which will return a list of all files being uploaded by particular session/user. >>> from paste.httpserver import serve >>> from paste.urlmap import URLMap >>> from paste.auth.basic import AuthBasicHandler >>> from paste.debug.debugapp import SlowConsumer, SimpleApplication >>> # from paste.progress import * >>> realm = 'Test Realm' >>> def authfunc(username, password): ... return username == password >>> map = URLMap({}) >>> ups = UploadProgressMonitor(map, threshold=1024) >>> map['/upload'] = SlowConsumer() >>> map['/simple'] = SimpleApplication() >>> map['/report'] = UploadProgressReporter(ups) >>> serve(AuthBasicHandler(ups, realm, authfunc)) serving on... .. note:: This is experimental, and will change in the future. iÿÿÿÿN(t catch_errorsii<ispaste.bytes_receivedspaste.request_startedspaste.request_finishedt _ProgressFilecBsAeZdZd„Zd„Zdd„Zd„Zdd„ZRS(sy This is the input-file wrapper used to record the number of ``paste.bytes_received`` for the given request. cCs:||_||_|i|_|i|_|i|_dS(N(t_ProgressFile_environt_ProgressFile_rfiletflushtwritet writelines(tselftenvirontrfile((s2/usr/lib/python2.6/site-packages/paste/progress.pyt__init__1s     cs4|i‰t|iƒ‰‡‡fd†}t|ƒS(Nc3s0x)ˆD]!}ˆtct|ƒ7<|VqWdS(N(tENVIRON_RECEIVEDtlen(tchunk(Rtriter(s2/usr/lib/python2.6/site-packages/paste/progress.pytiterwrap;s(RtiterR(RR((RRs2/usr/lib/python2.6/site-packages/paste/progress.pyt__iter__8s iÿÿÿÿcCs/|ii|ƒ}|itct|ƒ7<|S(N(RtreadRR R (RtsizeR ((s2/usr/lib/python2.6/site-packages/paste/progress.pyRAscCs,|iiƒ}|itct|ƒ7<|S(N(RtreadlineRR R (RR ((s2/usr/lib/python2.6/site-packages/paste/progress.pyRFscCs/|ii|ƒ}|itct|ƒ7<|S(N(Rt readlinesRR R (RthintR ((s2/usr/lib/python2.6/site-packages/paste/progress.pyRKsN( t__name__t __module__t__doc__R RRRtNoneR(((s2/usr/lib/python2.6/site-packages/paste/progress.pyR+s    tUploadProgressMonitorcBs/eZdZddd„Zd„Zd„ZRS(s< monitors and reports on the status of uploads in progress Parameters: ``application`` This is the next application in the WSGI stack. ``threshold`` This is the size in bytes that is needed for the upload to be included in the monitor. ``timeout`` This is the amount of time (in seconds) that a upload remains in the monitor after it has finished. Methods: ``uploads()`` This returns a list of ``environ`` dict objects for each upload being currently monitored, or finished but whose time has not yet expired. For each request ``environ`` that is monitored, there are several variables that are stored: ``paste.bytes_received`` This is the total number of bytes received for the given request; it can be compared with ``CONTENT_LENGTH`` to build a percentage complete. This is an integer value. ``paste.request_started`` This is the time (in seconds) when the request was started as obtained from ``time.time()``. One would want to format this for presentation to the user, if necessary. ``paste.request_finished`` This is the time (in seconds) when the request was finished, canceled, or otherwise disconnected. This is None while the given upload is still in-progress. TODO: turn monitor into a queue and purge queue of finished requests that have passed the timeout period. cCs6||_|pt|_|pt|_g|_dS(N(t applicationtDEFAULT_THRESHOLDt thresholdtDEFAULT_TIMEOUTttimeouttmonitor(RRRR ((s2/usr/lib/python2.6/site-packages/paste/progress.pyR „s cs¶ˆiddƒ}|ot|ƒ|ijow|iiˆƒdˆt!s %M=