3
Ah`                 @   s`   d Z ddl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.
    N)models)	force_str)Promisec             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-9m32_hle/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   sb   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
   6   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
   8   s   z%s(%s%s))	_kwargscopypopjoin_argssorteditems	__class____name__)field
force_manykwargsZ
arg_stringZkwarg_string
class_namer   r   r	   
field_repr/   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*   r-   r#   hasattrserializer_repr	list_reprr.   Z
validatorsr   )
serializerindentr'   retZ
indent_strr-   
field_namer&   r   r   r	   r0   F   s$    


r0   c             C   s&   | j }t|drt| ||dS t| S )Nr-   )r'   )r   r/   r0   r*   )r2   r3   r   r   r   r	   r1   a   s    
r1   )F)N)__doc__r   Z	django.dbr   Zdjango.utils.encodingr   Zdjango.utils.functionalr   r   r   r*   r0   r1   r   r   r   r	   <module>   s   

