3
̜^b                 @   sd   d 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
mZ ddlmZ G dd	 d	eZdS )
z
Renderers
    N)settings)six)status)INDENT_SEPARATORSLONG_SEPARATORSSHORT_SEPARATORS)JSONRendererc               @   s2   e Zd ZdZdd Zdd Zdd Zdd	d
ZdS )ApiRendererz
    Api Renderer
    c             C   s@   | j }|jddr|jdn|}|jdr2|d n||d}|S )z
        Check Status
        errorNmessage)r   r   )	__class__get)selfdata
api_status_r    r   G/home/hotel/hotelbackend/hotelapplication/hotelmanage/core/renderers.pycheck_status   s
    zApiRenderer.check_statusc             C   sD   | j }|jddr|jdn|}||jddr8|jdn|d}|S )z
        Check Else
        r
   Nr   )r   r   )r   r   )r   r   r   r   r
   r   r   r   
check_else    s
    zApiRenderer.check_elsec             C   sT   | j }d|kr>|jdr |d nd}d|d i}|rF||d< nd|i}tj|d< |S )z)
        Handling 200-201 status
        r   extrasNresponser   )r   r   r   HTTP_200_OK)r   r   r   r   r   r   r   check_200_201,   s    

zApiRenderer.check_200_201Nc       	      C   sx  |dkrt  S |pi }| j||}|dkr:| jr4tnt}nt}|d j}tj|d _|tjtj	gkrp| j
|}n|tjtjtjgkrtj}| j||}n|tjgkrtj}| j||}nt|tjgkrtj}| j||}nT|tjgkrtj}| j||}n4|tjgkrtj}| j||}ntj}| j||}tj|| j|| j|d}t|tjrt|jddjdd}t |jdS |S )	zB
        Render `data` into JSON, returning a bytestring.
        Nr   )clsindentensure_ascii
separatorsu    z\u2028u    z\u2029zutf-8)bytes
get_indentcompactr   r   r   status_coder   r   HTTP_201_CREATEDr   r   HTTP_API_ERRORHTTP_405_METHOD_NOT_ALLOWEDHTTP_400_BAD_REQUESTr   HTTP_401_UNAUTHORIZEDHTTP_302_FOUNDHTTP_303_SEE_OTHERHTTP_301_MOVED_PERMANENTLYr   jsondumpsencoder_classr   
isinstancer   	text_typereplaceencode)	r   r   accepted_media_typerenderer_contextr   r   r!   Zstatus_cretr   r   r   render?   sH    
zApiRenderer.render)NN)__name__
__module____qualname____doc__r   r   r   r4   r   r   r   r   r	      s
   r	   )r8   r*   django.confr   django.utilsr   rest_frameworkr   rest_framework.compatr   r   r   Zrest_framework.renderersr   r	   r   r   r   r   <module>   s   