3
>^                 @   sx   d Z ddlm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 dd	 Zd
d ZdddZdddZdd ZdS )zj
Helper functions for creating user-friendly representations
of serializer classes and serializer fields.
    )unicode_literalsN)models)
force_text)Promise)unicode_reprc             C   sN   | j }|j}dd |jD }x(|D ] \}}|| kr"d|jj|f S q"W t| S )Nc             S   s   g | ]}|j |fqS  )name).0managerr   r   R/tmp/pip-build-8app2_gc/djangorestframework/rest_framework/utils/representation.py
<listcomp>   s   z manager_repr.<locals>.<listcomp>z%s.%s.all())modelZ_metaZmanagersZobject_namerepr)valuer   optsZnames_and_managersZmanager_nameZmanager_instancer   r   r   manager_repr   s    
r   c             C   sf   t | tjrt| S t | tr,| jr,t| } t| } | jdrT| j	drT| dd  S t
jdd| } | S )Nzu''   z at 0x[0-9A-Fa-f]{4,32}>>)
isinstancer   Managerr   r   Z_delegate_textr   r   
startswithendswithresub)r   r   r   r   
smart_repr   s    r   Fc             C   s   | j }|r&|j }d|d< |jdd  djdd | jD }djdd t|j D }|rh|rh|d7 }|rv|jj}n| jj}d|||f S )	NTZmanychildz, c             S   s   g | ]}t |qS r   )r   )r	   valr   r   r   r   <   s    zfield_repr.<locals>.<listcomp>c             S   s    g | ]\}}d |t |f qS )z%s=%s)r   )r	   keyr   r   r   r   r   >   s   z%s(%s%s))	_kwargscopypopjoin_argssorteditems	__class____name__)field
force_manykwargs
arg_stringZkwarg_string
class_namer   r   r   
field_repr5   s    
r-   c             C   s   t | |d }d| }|r"|j}n| j}x|j D ]\}}|d| | d 7 }t|drl|t||d 7 }q2t|dr|t||d 7 }q2t|dr|t |j|jd	7 }q2|t |7 }q2W | jr|d| d
 7 }|d| d t| j 7 }|S )N:z    
z = fieldsr   r   child_relation)r)   zclass Meta:z    validators = )	r-   r0   r%   hasattrserializer_repr	list_reprr1   Z
validatorsr   )
serializerindentr)   retZ
indent_strr0   
field_namer(   r   r   r   r3   L   s$    


r3   c             C   s&   | j }t|drt| ||dS t| S )Nr0   )r)   )r   r2   r3   r-   )r5   r6   r   r   r   r   r4   g   s    
r4   )F)N)__doc__
__future__r   r   Z	django.dbr   Zdjango.utils.encodingr   Zdjango.utils.functionalr   Zrest_framework.compatr   r   r   r-   r3   r4   r   r   r   r   <module>   s   

