a
    còfš  ã                   @   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 ƒ}|D ]$\}}|| kr d|jj|f   S q t| ƒS )Nc                 S   s   g | ]}|j |f‘qS © )Úname)Ú.0Úmanagerr   r   ú`/home/httpd/docs/test/DocsMgr/lib/python3.9/site-packages/rest_framework/utils/representation.pyÚ
<listcomp>   s   ÿz manager_repr.<locals>.<listcomp>z%s.%s.all())ÚmodelÚ_metaZmanagersZobject_nameÚrepr)Úvaluer   ÚoptsZnames_and_managersZmanager_nameZmanager_instancer   r   r	   Úmanager_repr   s    ýr   c                 C   s`   t | tjƒrt| ƒS t | tƒr*t| dd�} t| ƒ} |  d¡rR|  d¡rR| dd … S t	 
dd| ¡S )NT)Zstrings_onlyzu'ú'é   z at 0x[0-9A-Fa-f]{4,32}>ú>)Ú
isinstancer   ÚManagerr   r   r   r   Ú
startswithÚendswithÚreÚsub)r   r   r   r	   Ú
smart_repr   s    
r   Fc                 C   sŒ   | j }|r&| ¡ }d|d< | dd ¡ d dd„ | jD ƒ¡}d dd„ t| ¡ ƒD ƒ¡}|rh|rh|d7 }|rv|jj}n| jj}d|||f S )	NTÚmanyÚchildz, c                 S   s   g | ]}t |ƒ‘qS r   ©r   )r   Úvalr   r   r	   r
   6   ó    zfield_repr.<locals>.<listcomp>c                 S   s    g | ]\}}d |t |ƒf ‘qS )z%s=%sr   )r   Úkeyr   r   r   r	   r
   7   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_repr/   s    

þ
r/   c                 C   sê   t | |ƒd }d| }|r"|j}n| j}| ¡ D ]„\}}|d| | d 7 }t|dƒrj|t||d ƒ7 }q0t|dƒrˆ|t||d ƒ7 }q0t|dƒr¨|t |j|jd	�7 }q0|t |ƒ7 }q0| 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/   r2   r'   ÚhasattrÚserializer_reprÚ	list_reprr3   Z
validatorsr   )Ú
serializerÚindentr+   ÚretZ
indent_strr2   Ú
field_namer*   r   r   r	   r6   F   s$    


r6   c                 C   s&   | j }t|dƒrt| ||d�S t| ƒS )Nr2   r4   )r   r5   r6   r/   )r8   r9   r   r   r   r	   r7   a   s    
r7   )F)N)Ú__doc__r   Z	django.dbr   Zdjango.utils.encodingr   Zdjango.utils.functionalr   r   r   r/   r6   r7   r   r   r   r	   Ú<module>   s   

