a
     Ôld   ã                   @   s>   d dl mZ G dd„ dejƒZG dd„ dƒZG dd„ dƒZdS )	é    )Úserializersc                       s    e Zd ZdZ‡ fdd„Z‡  ZS )ÚDynamicFieldsModelSerializerzz
    A ModelSerializer that takes an additional `fields` argument that
    controls which fields should be displayed.
    c           	   	      s    |  dd ¡}|  dd ¡}tt| ƒj|i |¤Ž |d urbt|ƒ}t| jƒ}|| D ]}| j  |¡ qP|rœt|ƒ}|D ](}z| j  |¡ W qr ty˜   Y qr0 qrd S )NÚfieldsÚexclude)ÚpopÚsuperr   Ú__init__Úsetr   ÚKeyError)	ÚselfÚargsÚkwargsr   r   ÚallowedÚexistingÚ
field_nameÚexcluded©Ú	__class__© ú@/var/www/html/Ranjet/backend/verify_trusted/utils/serializers.pyr   
   s    
z%DynamicFieldsModelSerializer.__init__)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__classcell__r   r   r   r   r      s   r   c                       s   e Zd Z‡ fdd„Z‡  ZS )ÚReviewsCountRepc                    s4   t ƒ  |¡}t|dƒr0| dd ¡d u r0|j|d< |S )NÚcal_reviews_countÚreviews_count)r   Úto_representationÚhasattrÚgetr   ©r   ÚinstanceÚrepr   r   r   r   $   s    ÿþ
z!ReviewsCountRep.to_representation©r   r   r   r   r   r   r   r   r   r   #   s   r   c                       s   e Zd Z‡ fdd„Z‡  ZS )ÚAverageRatingRepc                    s4   t ƒ  |¡}t|dƒr0| dd ¡d u r0|j|d< |S )NÚcal_average_ratingÚaverage_rating)r   r   r   r    r&   r!   r   r   r   r   /   s    ÿþ
z"AverageRatingRep.to_representationr$   r   r   r   r   r%   .   s   r%   N)Úrest_frameworkr   ÚModelSerializerr   r   r%   r   r   r   r   Ú<module>   s   