
    Evgc                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
 d dlmZ d dlmZ d dlmZmZ d dlmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlm Z  d dl!m"Z" d dl#m$Z$m%Z% d dl&m'Z'  e'dej(                  Z) G d de           Z* G d de+          Z, G d d          Z- G d de-          Z. G d de-          Z/ G d de/          Z0 G d de.          Z1 G d d e1          Z2 G d! d"e1          Z3 G d# d$e.          Z4 G d% d&e.          Z5 G d' d(e.          Z6 G d) d*e.          Z7 G d+ d,e.          Z8 G d- d.e.          Z9 G d/ d0e.          Z: G d1 d2e;          Z< G d3 d4e.          Z=dS )5    N)Header)	responses)urlparse)async_to_syncsync_to_async)settings)signalssigning)DisallowedRedirect)DjangoJSONEncoder)SimpleCookie)timezone)CaseInsensitiveMapping)
iri_to_uri)content_disposition_header	http_date)_lazy_re_compilez ;\s*charset=(?P<charset>[^\s;]+)c                   6    e Zd Zd Zd	dZd Zd Zd
dZd ZdS )ResponseHeadersc                 \    i | _         |r |                     |          D ]\  }}|| |<   dS dS )zm
        Populate the initial data using __setitem__ to ensure values are
        correctly encoded.
        N)_store_unpack_items)selfdataheadervalues       Q/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/django/http/response.py__init__zResponseHeaders.__init__!   sS    
  	%!%!3!3D!9!9 % %$V	% 	%% %    Fc                    	 t          |t                    r|                    |           nOt          |t                    r|                    |          }n$t          |          }|                    |           d|v sd|v rt          d|d          n# t          $ r}t          |t                    rd|v s!d|v st          |t                    rd|v sd|v rt          d|d          ||r/t          |dt          j	                                                  }n|xj
        d	|z  z  c_
         Y d
}~nd
}~ww xY w|S )z
        Convert headers key/value to ascii/latin-1 native strings.
        `charset` must be 'ascii' or 'latin-1'. If `mime_encode` is True and
        `value` can't be represented in the given charset, apply MIME-encoding.
        
z*Header values can't contain newlines (got )   
   zutf-8)
maxlinelenz,, HTTP response headers must be in %s formatN)
isinstancestrencodebytesdecodeBadHeaderErrorUnicodeErrorr   sysmaxsizereason)r   r   charsetmime_encodees        r   _convert_to_charsetz#ResponseHeaders._convert_to_charset+   s   	%%% 	&W%%%%E5)) &W--E

W%%%u}}$KKKK   !.  	 	 	
 5%(( eunn5#&& AO,0EMMTU]]$KKKK   ug#+FFFMMOOJWTT 	  s   BB 
D?"BD::D?c                 0    |                      |           d S N)pop)r   keys     r   __delitem__zResponseHeaders.__delitem__R   s    r   c                     |                      |d          }|                      |dd          }||f| j        |                                <   d S )Nasciilatin-1T)r2   )r4   r   lowerr   r8   r   s      r   __setitem__zResponseHeaders.__setitem__U   sO    &&sG44((	t(LL$'<CIIKK   r   Nc                 \    | j                             |                                |          S r6   )r   r7   r=   )r   r8   defaults      r   r7   zResponseHeaders.popZ   s     {syy{{G444r   c                     || vr|| |<   d S d S r6    r>   s      r   
setdefaultzResponseHeaders.setdefault]   s    d??DIII ?r   )Fr6   )	__name__
__module____qualname__r   r4   r9   r?   r7   rD   rC   r   r   r   r       sy        % % %% % % %N  0 0 0
5 5 5 5    r   r   c                       e Zd ZdS )r,   NrE   rF   rG   rC   r   r   r,   r,   b           Dr   r,   c                   :   e Zd ZdZdZ	 d!dZed             Zej        d             Zed             Z	e	j        d             Z	d	 Z
e
Zed
             Zd Zd Zd Zd ZeZd Zd"dZ	 	 	 	 	 	 	 	 d#dZd Zd$dZd%dZd Zd Zd Zd Zd Zd Zd Zd Zd  Z dS )&HttpResponseBasez
    An HTTP response base class with dictionary-accessed headers.

    This class doesn't handle content. It should not be used directly.
    Use the HttpResponse and StreamingHttpResponse subclasses instead.
       Nc                    t          |          | _        || _        d| j        vr|
d| j         }|| j        d<   n|rt	          d          g | _        d | _        t                      | _        d| _	        |]	 t          |          | _        n$# t          t          f$ r t          d          w xY wd| j        cxk    rdk    sn t	          d          || _        d S )	NContent-Typeztext/html; charset=zX'headers' must not contain 'Content-Type' when the 'content_type' parameter is provided.Fz$HTTP status code must be an integer.d   iW  z4HTTP status code must be an integer from 100 to 599.)r   headers_charsetr1   
ValueError_resource_closers_handler_classr   cookiesclosedintstatus_code	TypeError_reason_phrase)r   content_typestatusr0   r1   rQ   s         r   r   zHttpResponseBase.__init__p   s!    'w//--#CT\CC+7DL(( 	8   "$ ##~~H#&v;;  	* H H H FGGGH $*1111c1111 !WXXX$s   8B !B.c                 R    | j         | j         S t          j        | j        d          S )NzUnknown Status Code)r[   r   getrY   r   s    r   reason_phrasezHttpResponseBase.reason_phrase   s,    *&& }T-/DEEEr   c                     || _         d S r6   )r[   r   r   s     r   ra   zHttpResponseBase.reason_phrase   s    #r   c                     | j         | j         S | j                            d          x}r8t                              |          x}r|d                             dd          S t          j        S )NrO   r1   " )rR   rQ   r_   _charset_from_content_type_researchreplacer   DEFAULT_CHARSET)r   r\   matcheds      r   r1   zHttpResponseBase.charset   sr    =$=   <++N;;;< 	;7>>|LLLw ;
 y)11#r:::''r   c                     || _         d S r6   )rR   rc   s     r   r1   zHttpResponseBase.charset   s    r   c                 n    d                     d | j                                        D                       S )zHTTP headers as a bytestring.s   
c                 p    g | ]3\  }}|                     d           dz   |                     d          z   4S )r;   s   : r<   )r)   ).0r8   r   s      r   
<listcomp>z6HttpResponseBase.serialize_headers.<locals>.<listcomp>   sN       C 

7##e+ell9.E.EE  r   )joinrQ   itemsr`   s    r   serialize_headersz"HttpResponseBase.serialize_headers   sB    || "&,"4"4"6"6  
 
 	
r   c                 8    d| j         v rd| j         d         z  ndS )NrO   z, "%s"rf   rQ   r`   s    r   _content_type_for_reprz'HttpResponseBase._content_type_for_repr   s-     -- t|N333	
r   c                     || j         |<   d S r6   ru   )r   r   r   s      r   r?   zHttpResponseBase.__setitem__   s    $Vr   c                     | j         |= d S r6   ru   r   r   s     r   r9   zHttpResponseBase.__delitem__   s    L   r   c                     | j         |         S r6   ru   ry   s     r   __getitem__zHttpResponseBase.__getitem__   s    |F##r   c                     || j         v S )z$Case-insensitive check for a header.ru   ry   s     r   
has_headerzHttpResponseBase.has_header   s    %%r   c                 4    | j                                         S r6   )rQ   rr   r`   s    r   rr   zHttpResponseBase.items   s    |!!###r   c                 8    | j                             ||          S r6   )rQ   r_   )r   r   	alternates      r   r_   zHttpResponseBase.get   s    |	222r   rf   /Fc
                    || j         |<   |t          |t          j                  rt          j        |          r$t          j        |t          j        j                  }|t          j                            t          j        j                  z
  }
|
t          j        d          z  }
d}|t          d          t          d|
j        dz  |
j        z             }n!|| j         |         d<   nd	| j         |         d<   |~t          |t          j                  r|                                }t          |          | j         |         d
<   |s1t          t!          j                    |z             | j         |         d<   ||| j         |         d<   ||| j         |         d<   |rd| j         |         d<   |rd| j         |         d<   |	r7|	                                dvrt          d          |	| j         |         d<   dS dS )a  
        Set a cookie.

        ``expires`` can be:
        - a string in the correct format,
        - a naive ``datetime.datetime`` object in UTC,
        - an aware ``datetime.datetime`` object in any time zone.
        If it is a ``datetime.datetime`` object then calculate ``max_age``.

        ``max_age`` can be:
        - int/float specifying seconds,
        - ``datetime.timedelta`` object.
        N)tz   )secondsz/'expires' and 'max_age' can't be used together.r   iQ expiresrf   zmax-agepathdomainTsecurehttponly)laxnonestrictz,samesite must be "lax", "none", or "strict".samesite)rV   r'   datetimer   is_naive
make_awareutcnow	timedeltarS   maxdaysr   total_secondsrX   r   timer=   )r   r8   r   max_ager   r   r   r   r   r   deltas              r   
set_cookiezHttpResponseBase.set_cookie   s   2 "S'8#455 7$W-- R&1'8;L;PQQG("3"7"78;L;P"7"Q"QQ +A6666&$%VWWWae!3em!CDD/6S!),,+-DLi('8#566 2!//11+.w<<DLi( P/8w9N/O/OS!),(,DLf%*0DLh' 	/*.DLh' 	1,0DLj) 	5~~'@@@ !OPPP,4DLj)))	5 	5r   c                 <    | j                             ||           dS )z,Set a header unless it has already been set.N)rQ   rD   r>   s      r   rD   zHttpResponseBase.setdefault  s     U+++++r   c                 v    t          j        ||z                                 |          } | j        ||fi |S )N)salt)r
   get_cookie_signersignr   )r   r8   r   r   kwargss        r   set_signed_cookiez"HttpResponseBase.set_signed_cookie  sC    )sTz:::??FFtsE44V444r   c           	          |                     d          p|o|                                dk    }|                     |d|||d|           d S )N)z	__Secure-z__Host-r   r   zThu, 01 Jan 1970 00:00:00 GMT)r   r   r   r   r   r   )
startswithr=   r   )r   r8   r   r   r   r   s         r   delete_cookiezHttpResponseBase.delete_cookie  sq    
  899 
3))V3 	 	3 	 	
 	
 	
 	
 	
r   c                    t          |t          t          f          rt          |          S t          |t                    r't          |                    | j                            S t          |                              | j                  S )z=Turn a value into a bytestring encoded in the output charset.)r'   r*   
memoryviewr(   r)   r1   rc   s     r   
make_byteszHttpResponseBase.make_bytes1  sq     eeZ011 	 <<eS!! 	5dl334445zz  ...r   c                     | j         D ]}	  |             # t          $ r Y w xY w| j                                          d| _        t          j                            | j                   d S )NT)sender)rT   	ExceptionclearrW   r	   request_finishedsendrU   )r   closers     r   closezHttpResponseBase.closeF  s    , 	 	F    	$$&&& %%T-@%AAAAAs   

##c                 :    t          d| j        j        z            Nz This %s instance is not writableOSError	__class__rE   r   contents     r   writezHttpResponseBase.writeQ      84>;RRSSSr   c                     d S r6   rC   r`   s    r   flushzHttpResponseBase.flushT  s    r   c                 :    t          d| j        j        z            )Nz)This %s instance cannot tell its positionr   r`   s    r   tellzHttpResponseBase.tellW  s!    7$.:QQ
 
 	
r   c                     dS NFrC   r`   s    r   readablezHttpResponseBase.readable_      ur   c                     dS r   rC   r`   s    r   seekablezHttpResponseBase.seekableb  r   r   c                     dS r   rC   r`   s    r   writablezHttpResponseBase.writablee  r   r   c                 :    t          d| j        j        z            r   r   )r   liness     r   
writelineszHttpResponseBase.writelinesh  r   r   )NNNNNr6   )rf   NNr   NFFN)rf   )r   NN)!rE   rF   rG   __doc__rY   r   propertyra   setterr1   rs   	__bytes__rv   r?   r9   r{   r}   __contains__rr   r_   r   rD   r   r   r   r   r   r   r   r   r   r   r   rC   r   r   rL   rL   f   sB         K RV% % % %< F F XF $ $ $ ( ( X( ^  ^
 
 
 "I
 
 X
% % %! ! !$ $ $& & & L$ $ $3 3 3 3 >5 >5 >5 >5@, , ,5 5 5 5
 
 
 
(/ / /*	B 	B 	BT T T  
 
 
      T T T T Tr   rL   c                        e Zd ZdZdZd fd	Zd Zd ZeZe	d             Z
e
j        d             Z
d	 Zd
 Zd Zd Zd Zd Z xZS )HttpResponsezs
    An HTTP response class with a string as content.

    This content can be read, appended to, or replaced.
    Fr   c                 H     t                      j        |i | || _        d S r6   )superr   r   )r   r   argsr   r   s       r   r   zHttpResponse.__init__u  s*    $)&)))r   c                 <    d| j         j        | j        | j        dz  S Nz5<%(cls)s status_code=%(status_code)d%(content_type)s>)clsrY   r\   r   rE   rY   rv   r`   s    r   __repr__zHttpResponse.__repr__z  s/    F>*+ 7J
 J
 
 	
r   c                 @    |                                  dz   | j        z   S )z6Full HTTP message, including headers, as a bytestring.s   

)rs   r   r`   s    r   	serializezHttpResponse.serialize  s     %%''+5DDr   c                 6    d                     | j                  S Nr   )rq   
_containerr`   s    r   r   zHttpResponse.content  s    xx(((r   c                 V    t          |d          rzt          |t          t          t          f          sXd                     fd|D                       }t          |d          r&	 |                                 n&# t          $ r Y nw xY wn                     |          }|g _	        d S )N__iter__r   c              3   B   K   | ]}                     |          V  d S r6   r   )ro   chunkr   s     r   	<genexpr>z'HttpResponse.content.<locals>.<genexpr>  s/      II%tu55IIIIIIr   r   )
hasattrr'   r*   r   r(   rq   r   r   r   r   )r   r   r   s   `  r   r   zHttpResponse.content  s     5*%% 
	-jE:s+/
 /
 
	- hhIIII5IIIIIGug&& KKMMMM    D ooe,,G")s   &A; ;
BBc                 *    t          | j                  S r6   )iterr   r`   s    r   r   zHttpResponse.__iter__  s    DO$$$r   c                 `    | j                             |                     |                     d S r6   )r   appendr   r   s     r   r   zHttpResponse.write  s*    tw7788888r   c                 *    t          | j                  S r6   )lenr   r`   s    r   r   zHttpResponse.tell  s    4<   r   c                     | j         S r6   )r   r`   s    r   getvaluezHttpResponse.getvalue  s
    |r   c                     dS )NTrC   r`   s    r   r   zHttpResponse.writable  s    tr   c                 :    |D ]}|                      |           d S r6   )r   )r   r   lines      r   r   zHttpResponse.writelines  s0     	 	DJJt	 	r   )r   )rE   rF   rG   r   	streamingr   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__r   s   @r   r   r   l  s         I     

 
 
E E E I) ) X) ^$ $ ^$ % % %9 9 9! ! !          r   r   c                        e Zd ZdZdZd fd	Zd Zed             Zed             Z	e	j
        d             Z	d	 Zd
 Zd Zd Z xZS )StreamingHttpResponsea$  
    A streaming HTTP response class with an iterator as content.

    This should only be iterated once, when the response is streamed to the
    client. However, it can be appended to or replaced with a new iterator
    that wraps the original content (or yields entirely new content).
    TrC   c                 H     t                      j        |i | || _        d S r6   )r   r   streaming_content)r   r   r   r   r   s       r   r   zStreamingHttpResponse.__init__  s/    $)&))) "3r   c                 <    d| j         j        | j        | j        dz  S r   )r   rG   rY   rv   r`   s    r   r   zStreamingHttpResponse.__repr__  s/    F>.+ 7J
 J
 
 	
r   c                 :    t          d| j        j        z            )NzMThis %s instance has no `content` attribute. Use `streaming_content` instead.)AttributeErrorr   rE   r`   s    r   r   zStreamingHttpResponse.content  s'    +-1^-DE
 
 	
r   c                 v      j         r j         fd} |            S t           j         j                  S )Nc                 R   K   2 3 d {V }                      |           W V   6 d S r6   r   )part	_iteratorr   s    r   awrapperz9StreamingHttpResponse.streaming_content.<locals>.awrapper  sV      "+ 0 0 0 0 0 0 0$//$/////// #,))s   &)is_asyncr   mapr   )r   r   r   s   ` @r   r   z'StreamingHttpResponse.streaming_content  sW    = 	8 I0 0 0 0 0 0 8::t777r   c                 0    |                      |           d S r6   )_set_streaming_contentrc   s     r   r   z'StreamingHttpResponse.streaming_content  s    ##E*****r   c                     	 t          |          | _        d| _        n+# t          $ r t	          |          | _        d| _        Y nw xY wt          |d          r!| j                            |j                   d S d S )NFTr   )	r   r   r   rZ   aiterr   rT   r   r   rc   s     r   r  z,StreamingHttpResponse._set_streaming_content  s    	!!%[[DN!DMM 	! 	! 	!"5\\DN DMMM	! 5'"" 	7"))%+66666	7 	7s    %AAc           
          	 t          | j                  S # t          $ r] t          j        dt
                     d }t          | j        t           t          |          | j	                                      cY S w xY w)NzStreamingHttpResponse must consume asynchronous iterators in order to serve them synchronously. Use a synchronous iterator instead.c                 N   K   g }| 2 3 d {V }|                     |           6 |S r6   )r   )r   as_listr   s      r   to_listz/StreamingHttpResponse.__iter__.<locals>.to_list  sR      #, * * * * * * *%NN5)))) $-s   $)
r   r   rZ   warningswarnWarningr   r   r   r   )r   r  s     r   r   zStreamingHttpResponse.__iter__  s    	V./// 	V 	V 	VMP     t-C]7-C-CDN-S-S(T(TUUUUU	Vs    A$A=<A=c                   K   	 | j         2 3 d {V }|W V  6 d S # t          $ rN t          j        dt                      t          t                    | j                    d {V D ]}|W V  Y d S w xY w)NzStreamingHttpResponse must consume synchronous iterators in order to serve them asynchronously. Use an asynchronous iterator instead.)r   rZ   r  r	  r
  r   list)r   r   s     r   	__aiter__zStreamingHttpResponse.__aiter__   s      	"4       d




 544 		 		 		MS   2mD11$2HIIIIIIII  




  		s     AA32A3c                 6    d                     | j                  S r   )rq   r   r`   s    r   r   zStreamingHttpResponse.getvalue  s    xx.///r   )rC   )rE   rF   rG   r   r   r   r   r   r   r   r   r  r   r  r   r   r   s   @r   r   r     s          I3 3 3 3 3 3
 
 
 
 
 X
 8 8 X8 + + +	7 	7 	7V V V&  0 0 0 0 0 0 0r   r   c                   >     e Zd ZdZdZddd fd
Z fdZd Z xZS )	FileResponsez>
    A streaming HTTP response class optimized for files.
    i   Frf   )as_attachmentfilenamec                |    || _         || _        d|vp	|d         d u | _         t                      j        |i | d S )Nr\   )r  r  _no_explicit_content_typer   r   )r   r  r  r   r   r   s        r   r   zFileResponse.__init__  sU    * &(JF>,Bd,J 	& 	$)&)))))r   c                     t          |d          s(d  _        t                                          |          S |x _        t          d          r j                            j                   t           fdd          }                                t                                          |           d S )Nreadr   c                  8                          j                  S r6   )r  
block_sizefileliker   s   r   <lambda>z5FileResponse._set_streaming_content.<locals>.<lambda>*  s    X]]4?;; r   r   )	r   file_to_streamr   r  rT   r   r   r   set_headers)r   r   r  r   s   ` @r   r  z#FileResponse._set_streaming_content"  s    uf%% 	9"&D7711%888)..h8W%% 	:"))(.999;;;;;SAA"""&&u-----r   c                     t          dd          }t          |t                    r|nd}t          d          o$t          d           p                                }t          d          r|rj                                }                    dt          j                                                   |z
   j	        d<                       |           nt          d          r7
                                j                                        z
   j	        d<   nt          j                            |          r<t          j                            |                                          z
   j	        d<   nd|rbt!          t#           fd	d                     j	        d<                       t%           j	        d                    t          j                   t          j                             j        p|          } j        rL|r@t-          j        |          \  }}d
ddddd                    ||          }|pd j	        d<   n
d j	        d<   t3           j        |          x}r| j	        d<   dS dS )z
        Set some common response headers (Content-Length, Content-Type, and
        Content-Disposition) based on the `filelike` response content.
        namerf   seekr   r   r   zContent-Length	getbufferc                  R    t                               j                            S r6   )r   r  r  r  s   r   r  z*FileResponse.set_headers.<locals>.<lambda>H  s    St!?!?@@ r   zapplication/x-brotlizapplication/x-bzipzapplication/x-compresszapplication/gzipzapplication/x-xz)brbzip2compressgzipxzzapplication/octet-streamrO   zContent-DispositionN)getattrr'   r(   r   r   r   r   ioSEEK_ENDrQ   r!  nbytesosr   existsgetsizesumr   rX   basenamer  r  	mimetypes
guess_typer_   r   r  )r   r  r  r   initial_positionr\   encodingcontent_dispositions   ``      r   r  zFileResponse.set_headers.  s   
 8VR00)(C88@88b8V,, 
*---D1B1B1D1D 	 8V$$ 	M #+==?? a---19CS1S-..////;// &&((/(--//A -.. )) GOOH--? -.  	M-0@@@@@!DD. .DL)* MM3t|,<=>>>LLL7##DM$=X>>) 	J J)2)=h)G)G&h 11 8.,    #h--  !>$> ^,, 0J^,"<#
 #
 
 	F 3FDL.///	F 	Fr   )	rE   rF   rG   r   r  r   r  r  r   r   s   @r   r  r    s          J,1B * * * * * * *
. 
. 
. 
. 
.4F 4F 4F 4F 4F 4F 4Fr   r  c                   D     e Zd Zg dZ fdZ ed           Zd Z xZS )HttpResponseRedirectBase)httphttpsftpc                      t                      j        |i | t          |          | d<   t          t	          |                    }|j        r%|j        | j        vrt          d|j        z            d S d S )NLocationz)Unsafe redirect to URL with protocol '%s')r   r   r   r   r(   schemeallowed_schemesr   )r   redirect_tor   r   parsedr   s        r   r   z!HttpResponseRedirectBase.__init__h  s    $)&)))%k22Z#k**++= 	V]$2FFF$;fmK  	 	FFr   c                     | d         S )Nr<  rC   r`   s    r   r  z!HttpResponseRedirectBase.<lambda>q  s    Z 0 r   c                 H    d| j         j        | j        | j        | j        dz  S )NzD<%(cls)s status_code=%(status_code)d%(content_type)s, url="%(url)s">)r   rY   r\   url)r   rE   rY   rv   rC  r`   s    r   r   z!HttpResponseRedirectBase.__repr__s  s2    R~.#/ $ ;x	 	
r   )	rE   rF   rG   r>  r   r   rC  r   r   r   s   @r   r7  r7  e  sg        ...O     (00
1
1C	
 	
 	
 	
 	
 	
 	
r   r7  c                       e Zd ZdZdS )HttpResponseRedirecti.  NrE   rF   rG   rY   rC   r   r   rE  rE            KKKr   rE  c                       e Zd ZdZdS )HttpResponsePermanentRedirecti-  NrF  rC   r   r   rI  rI    rG  r   rI  c                   L     e Zd ZdZ fdZej        j        d             Z xZS )HttpResponseNotModifiedi0  c                 @     t                      j        |i | | d= d S )Nzcontent-type)r   r   )r   r   r   r   s      r   r   z HttpResponseNotModified.__init__  s-    $)&)))   r   c                 6    |rt          d          g | _        d S )Nz7You cannot set content to a 304 (Not Modified) response)r   r   rc   s     r   r   zHttpResponseNotModified.content  s,     	 I   r   )	rE   rF   rG   rY   r   r   r   r   r   r   s   @r   rK  rK    s_        K! ! ! ! !    !     r   rK  c                       e Zd ZdZdS )HttpResponseBadRequesti  NrF  rC   r   r   rO  rO    rG  r   rO  c                       e Zd ZdZdS )HttpResponseNotFoundi  NrF  rC   r   r   rQ  rQ    rG  r   rQ  c                       e Zd ZdZdS )HttpResponseForbiddeni  NrF  rC   r   r   rS  rS    rG  r   rS  c                   (     e Zd ZdZ fdZd Z xZS )HttpResponseNotAllowedi  c                 j     t                      j        |i | d                    |          | d<   d S )Nz, Allow)r   r   rq   )r   permitted_methodsr   r   r   s       r   r   zHttpResponseNotAllowed.__init__  s9    $)&)))		"344Wr   c                 J    d| j         j        | j        | j        | d         dz  S )NzC<%(cls)s [%(methods)s] status_code=%(status_code)d%(content_type)s>rW  )r   rY   r\   methodsr   r`   s    r   r   zHttpResponseNotAllowed.__repr__  s6    T>*+ 7G}	X
 X
 
 	
r   )rE   rF   rG   rY   r   r   r   r   s   @r   rU  rU    sL        K5 5 5 5 5
 
 
 
 
 
 
r   rU  c                       e Zd ZdZdS )HttpResponseGonei  NrF  rC   r   r   r\  r\    rG  r   r\  c                       e Zd ZdZdS )HttpResponseServerErrori  NrF  rC   r   r   r^  r^    rG  r   r^  c                       e Zd ZdS )Http404NrI   rC   r   r   r`  r`    rJ   r   r`  c                   *     e Zd ZdZeddf fd	Z xZS )JsonResponseaH  
    An HTTP response class that consumes data to be serialized to JSON.

    :param data: Data to be dumped into json. By default only ``dict`` objects
      are allowed to be passed due to a security flaw before ECMAScript 5. See
      the ``safe`` parameter for more information.
    :param encoder: Should be a json encoder class. Defaults to
      ``django.core.serializers.json.DjangoJSONEncoder``.
    :param safe: Controls if only ``dict`` objects may be serialized. Defaults
      to ``True``.
    :param json_dumps_params: A dictionary of kwargs passed to json.dumps().
    TNc                     |r$t          |t                    st          d          |i }|                    dd           t	          j        |fd|i|} t                      j        dd|i| d S )NzTIn order to allow non-dict objects to be serialized set the safe parameter to False.r\   zapplication/jsonr   r   rC   )r'   dictrZ   rD   jsondumpsr   r   )r   r   encodersafejson_dumps_paramsr   r   s         r   r   zJsonResponse.__init__  s      	
4.. 	+   $ ".*<===z$AAGA/@AA00000000r   )rE   rF   rG   r   r   r   r   r   s   @r   rb  rb    sR           "1 1 1 1 1 1 1 1 1 1r   rb  )>r   r)  re  r1  r,  rer.   r   r  email.headerr   http.clientr   urllib.parser   asgiref.syncr   r   django.confr   django.corer	   r
   django.core.exceptionsr   django.core.serializers.jsonr   django.http.cookier   django.utilsr   django.utils.datastructuresr   django.utils.encodingr   django.utils.httpr   r   django.utils.regex_helperr   Irg   r   rS   r,   rL   r   r   r  r7  rE  rI  rK  rO  rQ  rS  rU  r\  r^  r   r`  rb  rC   r   r   <module>rz     s    				      				 				 



         ! ! ! ! ! ! ! ! ! ! ! ! 5 5 5 5 5 5 5 5             ( ( ( ( ( ( ( ( 5 5 5 5 5 5 : : : : : : + + + + + + ! ! ! ! ! ! > > > > > > , , , , , , C C C C C C C C 6 6 6 6 6 6 0 0'! ! 
? ? ? ? ?, ? ? ?D	 	 	 	 	Z 	 	 	CT CT CT CT CT CT CT CTLA A A A A# A A AH`0 `0 `0 `0 `0, `0 `0 `0FOF OF OF OF OF( OF OF OFd
 
 
 
 
| 
 
 
4    3       $<       l        \       <       L   
 
 
 
 
\ 
 
 
     |       l   	 	 	 	 	i 	 	 	1 1 1 1 1< 1 1 1 1 1r   