a
    Cg                     @   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   b/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/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   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.   r1   r&   hasattrserializer_repr	list_reprr2   Z
validatorsr   )
serializerindentr*   retZ
indent_strr1   
field_namer)   r   r   r	   r5   F   s$    


r5   c                 C   s&   | j }t|drt| ||dS t| S )Nr1   r3   )r   r4   r5   r.   )r7   r8   r   r   r   r	   r6   a   s    
r6   )F)N)__doc__r   Z	django.dbr   Zdjango.utils.encodingr   Zdjango.utils.functionalr   r   r   r.   r5   r6   r   r   r   r	   <module>   s   

