%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /proc/227033/root/opt/alt/python27/lib/python2.7/site-packages/paste/
Upload File :
Create Path :
Current File : //proc/227033/root/opt/alt/python27/lib/python2.7/site-packages/paste/progress.pyo

�
a�Nc@s�dZddlZddlmZdZdZdZdZd	Zd
e	fd��YZ
de	fd
��YZde	fd��YZddgZ
dekr�ddlZejdej�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:||_||_|j|_|j|_|j|_dS(N(t_ProgressFile_environt_ProgressFile_rfiletflushtwritet
writelines(tselftenvirontrfile((s?/opt/alt/python27/lib/python2.7/site-packages/paste/progress.pyt__init__1s
		cs4|j�t|j����fd�}t|�S(Nc3s0x)�D]!}�tct|�7<|VqWdS(N(tENVIRON_RECEIVEDtlen(tchunk(Rtriter(s?/opt/alt/python27/lib/python2.7/site-packages/paste/progress.pytiterwrap;s
(RtiterR(RR((RRs?/opt/alt/python27/lib/python2.7/site-packages/paste/progress.pyt__iter__8s	i����cCs/|jj|�}|jtct|�7<|S(N(RtreadRRR(RtsizeR
((s?/opt/alt/python27/lib/python2.7/site-packages/paste/progress.pyRAscCs,|jj�}|jtct|�7<|S(N(RtreadlineRRR(RR
((s?/opt/alt/python27/lib/python2.7/site-packages/paste/progress.pyRFscCs/|jj|�}|jtct|�7<|S(N(Rt	readlinesRRR(RthintR
((s?/opt/alt/python27/lib/python2.7/site-packages/paste/progress.pyRKsN(	t__name__t
__module__t__doc__R
RRRtNoneR(((s?/opt/alt/python27/lib/python2.7/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.
    cCs4||_|pt|_|p!t|_g|_dS(N(tapplicationtDEFAULT_THRESHOLDt	thresholdtDEFAULT_TIMEOUTttimeouttmonitor(RRRR ((s?/opt/alt/python27/lib/python2.7/site-packages/paste/progress.pyR
�s	cs��jdd�}|r�t|�|jkr�|jj��d�t<tj��t<d�t	<t
��d��d<d�fd�}t|j�|||�S|j�|�S(NtCONTENT_LENGTHis
wsgi.inputcstj��t<dS(N(ttimetREQUEST_FINISHED(texc_info(R(s?/opt/alt/python27/lib/python2.7/site-packages/paste/progress.pyt	finalizer�s(
tgettintRR!tappendRR#tREQUEST_STARTEDRR$RRR(RRtstart_responsetlengthR&((Rs?/opt/alt/python27/lib/python2.7/site-packages/paste/progress.pyt__call__�s


cCs|jS(N(R!(R((s?/opt/alt/python27/lib/python2.7/site-packages/paste/progress.pytuploads�sN(RRRRR
R-R.(((s?/opt/alt/python27/lib/python2.7/site-packages/paste/progress.pyRPs3	tUploadProgressReportercBs2eZdZd�Zd�Zd�Zd�ZRS(sg
    reports on the progress of uploads for a given user

    This reporter returns a JSON file (for use in AJAX) listing the
    uploads in progress for the given user.  By default, this reporter
    uses the ``REMOTE_USER`` environment to compare between the current
    request and uploads in-progress.  If they match, then a response
    record is formed.

        ``match()``

            This member function can be overriden to provide alternative
            matching criteria.  It takes two environments, the first
            is the current request, the second is a current upload.

        ``report()``

            This member function takes an environment and builds a
            ``dict`` that will be used to create a JSON mapping for
            the given upload.  By default, this just includes the
            percent complete and the request url.

    cCs
||_dS(N(R!(RR!((s?/opt/alt/python27/lib/python2.7/site-packages/paste/progress.pyR
�scCs,|jdd�|jdd�kr(tStS(NtREMOTE_USERi(R'RtTruetFalse(Rtsearch_environtupload_environ((s?/opt/alt/python27/lib/python2.7/site-packages/paste/progress.pytmatch�scCs�itjdtj|t��d6dd6|jd�d6|td6|jdd�d	6|jd
d�d6}|t}|r�tjdtj|��|d<n|S(
Ns%Y-%m-%d %H:%M:%StstartedttfinishedR"tcontent_lengthtbytes_receivedt	PATH_INFOt	path_infotQUERY_STRINGtquery_strings%Y:%m:%d %H:%M:%S(R#tstrftimetgmtimeR*R'RR$(RRtretvalR8((s?/opt/alt/python27/lib/python2.7/site-packages/paste/progress.pytreport�s
	c	Cs�g}x�g|jj�D]'}|j||�r|j|�^qD]~}g}xU|j�D]G\}}t|�jdd�jdd�}|jd||f�q]W|jddj|��qDWddj|�}|d	d
dt	|�fg�|gS(Ns\s\\t"s\"s%s: "%s"s{ %s }s, s[ %s ]s200 OKsContent-Types
text/plainsContent-Length(sContent-Types
text/plain(
R!R.R5RBtitemststrtreplaceR)tjoinR(	RRR+tbodytenvtmaptpartstktv((s?/opt/alt/python27/lib/python2.7/site-packages/paste/progress.pyR-�s+$	(RRRR
R5RBR-(((s?/opt/alt/python27/lib/python2.7/site-packages/paste/progress.pyR/�s
			t__main__toptionflagsii,(RR#t
paste.wsgilibRRRRR*R$tobjectRRR/t__all__RtdoctestttestmodtELLIPSIS(((s?/opt/alt/python27/lib/python2.7/site-packages/paste/progress.pyt<module>!s%M=

Zerion Mini Shell 1.0