a
    Cøgá  ã                   @   s<   d Z ddlmZ ddlmZ ddlmZ G dd„ deƒZdS )zé
The Response class in REST framework is similar to HTTPResponse, except that
it is initialized with unrendered data, instead of a pre-rendered string.

The appropriate renderer is called during Django's template response rendering.
é    )Ú	responses)ÚSimpleTemplateResponse)Ú
Serializerc                       sN   e Zd ZdZd‡ fdd„	Zdd„ Zedd	„ ƒZed
d„ ƒZ‡ fdd„Z	‡  Z
S )ÚResponsez]
    An HttpResponse that allows its data to be rendered into
    arbitrary media types.
    NFc           
         s`   t ƒ jd|d t|tƒr&d}t|ƒ‚|| _|| _|| _|| _|r\| 	¡ D ]\}}	|	| |< qJdS )zÿ
        Alters the init arguments slightly.
        For example, drop 'template_name', and instead use 'data'.

        Setting 'renderer' and 'media_type' will typically be deferred,
        For example being set automatically by the `APIView`.
        N)ÚstatusztYou passed a Serializer instance as data, but probably meant to pass serialized `.data` or `.error`. representation.)
ÚsuperÚ__init__Ú
isinstancer   ÚAssertionErrorÚdataÚtemplate_nameÚ	exceptionÚcontent_typeÚitems)
Úselfr   r   r   Úheadersr   r   ÚmsgÚnameÚvalue©Ú	__class__© úV/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/rest_framework/response.pyr      s    

ÿzResponse.__init__c                 O   s   | S )Nr   )ÚclsÚargsÚkwargsr   r   r   Ú__class_getitem__2   s    zResponse.__class_getitem__c                 C   sÖ   t | dd ƒ}t | dd ƒ}t | dd ƒ}|s0J dƒ‚|s<J dƒ‚|d usLJ dƒ‚| |d< |j}|j}| j}|d u r„|d ur„d ||¡}n|d u r|}|| d	< | | j||¡}t|tƒrÈ|s¾J d
ƒ‚| 	|¡S |sÒ| d	= |S )NÚaccepted_rendererÚaccepted_media_typeÚrenderer_contextz&.accepted_renderer not set on Responsez(.accepted_media_type not set on Responsez%.renderer_context not set on ResponseÚresponsez{}; charset={}zContent-Typez?renderer returned unicode, and did not specify a charset value.)
ÚgetattrÚ
media_typeÚcharsetr   ÚformatÚrenderr   r	   ÚstrÚencode)r   Zrendererr   Úcontextr"   r#   r   Úretr   r   r   Úrendered_content5   s0    
ÿ
zResponse.rendered_contentc                 C   s   t  | jd¡S )zw
        Returns reason text corresponding to our HTTP response status code.
        Provided for convenience.
        Ú )r   ÚgetÚstatus_code)r   r   r   r   Ústatus_textW   s    zResponse.status_textc                    s.   t ƒ  ¡ }dD ]}||v r||= qg |d< |S )zO
        Remove attributes from the response that shouldn't be cached.
        )r   r   Zresolver_matchÚclientÚrequestÚjsonZwsgi_requestZ_closable_objects)r   Ú__getstate__)r   ÚstateÚkeyr   r   r   r2   _   s    
zResponse.__getstate__)NNNNFN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Úpropertyr*   r.   r2   Ú__classcell__r   r   r   r   r      s      þ
!
r   N)r8   Úhttp.clientr   Zdjango.template.responser   Zrest_framework.serializersr   r   r   r   r   r   Ú<module>   s   