a
     ld.                     @   s  d dl mZmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZmZmZmZmZmZ d dlmZmZ d d	lmZmZmZ d d
lmZ e ZG dd dejZ G dd dejZ!G dd deeeZ"G dd de"Z#G dd dejZ$G dd dejZ%G dd de"Z&G dd de"Z'G dd de"Z(G dd de"Z)G dd  d ejZ*G d!d" d"ejZ+G d#d$ d$ej,Z-G d%d& d&e"Z.G d'd( d(ejZ/G d)d* d*ejZ0G d+d, d,ejZ1G d-d. d.ejZ2G d/d0 d0ejZ3G d1d2 d2ejZ4d3S )4    )date	timedelta)urlparse)get_user_model)serializers)ValidationError)HistoryType)CompanyPaymentPlanReviewSocialSourceSocialSubscription)PlatformSerializerReviewSourceSerializer)AverageRatingRepDynamicFieldsModelSerializerReviewsCountRep)Widgetc                   @   s   e Zd ZG dd dZdS )SourceSocialSerializerc                   @   s   e Zd ZeZdZdS )zSourceSocialSerializer.Meta__all__N)__name__
__module____qualname__r   modelfields r   r   Q/var/www/html/Ranjet/backend/verify_trusted/companies/api/serializers/__init__.pyMeta!   s   r   Nr   r   r   r   r   r   r   r   r       s   r   c                   @   s   e Zd ZG dd dZdS )SocialSerializerc                   @   s   e Zd ZeZdZdS )zSocialSerializer.Metar   N)r   r   r   r   r   r   r   r   r   r   r   '   s   r   Nr    r   r   r   r   r!   &   s   r!   c                       s   e Zd Zejddej dZe	dddZ
ejdddddZedddZG d	d
 d
Z fddZed fddZdd Z fddZedddZ  ZS )CompanySerializerF)required	read_onlyquerysetT)manyr#   g      @N)	max_value
allow_nullr#   default)r$   r&   c                   @   s6   e Zd ZeZdZddddidddddiddZd	S )
zCompanySerializer.Meta)
crawled_atlast_review_datelast_synced_ataccreditationsearch_vectorFTblankZMSG004)allow_blankr#   error_messagesZMSG0018)nameurl_displayN)r   r   r   r	   r   excludeextra_kwargsr   r   r   r   r   >   s   	r   c                    sZ  | dd }d|vrdn|d |d< d|vr0dn|d |d< d|vrLd|d< d| jv r| jd jr| jd jdd	 }||d
< d|v rd|vr|d d D ] }d|d v r|d dkr qqt |}|d ur|D ]:}|j|d< |d j|d< t|d}| r||j	 qt
|jt tdd dd}|jdd ||j	 | | |S )Nsocials
ssl_statusTone_yearcategory_mainOthersrequestfiler   logomapcurrency_symboladdress_componentscountrytypes
short_nameGBcompanysourcedata   daysrE   due_dateraise_exception)popcontextFILESgetlistsupercreateidr!   is_validvalidated_dataSubscriptionSerializerr   todayr   create_widget)selfrX   r6   	logo_datarH   rE   Zsocial_serializersubscription_serializer	__class__r   r   rU   X   s>    



zCompanySerializer.createinstancec           	         sh  d|v r|d  j krtj _d|d< tjj jd }|d u rzt	 jt
 tdd dd}|jdd	 ||j |   n|d d u rd
|d< |dd }|d urt|tr j    fdd|D }tj| | jd jr| jd jdd }||d< d|v rZd|vrZ|d d D ](}d|d v r0|d dkr0 qZq0t  |S )NuserTis_verifiedrE   rI   rJ   rL   rG   rN   Fr6   c                    s"   g | ]}t |d   |d dqS )urlrF   )rf   rE   rF   )r   ).0Zsocialra   r   r   
<listcomp>   s   z,CompanySerializer.update.<locals>.<listcomp>r;   r<   r   r=   r>   r?   r@   rA   rB   rC   rD   )rc   r   ZCLAIMED_change_reasonr   objectsfilterrV   firstrY   r   rZ   r   rW   rU   rX   r[   rP   
isinstancelistr6   alldeleter   bulk_createrQ   rR   rS   rT   update)	r\   rb   rX   subscriptionr^   r6   sr]   rH   r_   ra   r   rr      sB    

zCompanySerializer.updatec              
   C   s   d|vrdd|f }zt |}W n. tyN } ztd|W Y d }~n
d }~0 0 |js^tdtjj|d }| jrz|s| js|rtd|S )N//%s%shttps://ZMSG014)rf   ZMSG036)	r   
ValueErrorr   hostnamer	   rj   rk   existsrb   )r\   rH   oeZurl_existedr   r   r   validate_url_display   s     z&CompanySerializer.validate_url_displayc                    s   d|v rT|d }dd|d f }d|vr<dd|f }||d< t |jt |j |d< d|v rp|d d urpd|d	< d
| v r|d
 d u rd|d
< t |S )Nr3   rv    ru   rw   rf   rc   Trd   average_ratingr   )r   ry   pathkeysrT   validate)r\   attrsr3   base_urlr_   r   r   r      s    zCompanySerializer.validatere   c                 C   sf   |d urbt jj|jd }|d u rb|ddddddddd	d
dddd}t jjf i |}|  d S )N)
company_id   ZSliderz#FFFFFFz#DBDFEA   z#3D424D      )ZbackgroundColorZborderColorZdateFontSizeZ	nameColorZnameFontSizeZreviewColorZreviewFontSizer   
TOP_RATINGzlight-background)rE   	layout_idlayout_type
more_stylenumber_of_revieworder_byset_id)r   rj   rk   rV   rl   rU   save)r\   rE   Z
old_widgetZwidget_datawidgetr   r   r   r[      s(    	zCompanySerializer.create_widget)r   r   r   r   PrimaryKeyRelatedFieldUserrj   ro   rc   r!   r6   
FloatFieldr   r   review_sourcesr   rU   r	   rr   r}   r   r[   __classcell__r   r   r_   r   r"   -   s"   ,1r"   c                   @   s   e Zd ZejddZdS )CompanyUpdateSerializerFr#   N)r   r   r   r   	CharFieldr3   r   r   r   r   r      s   r   c                   @   s   e Zd ZG dd dZdS )CompanyFirstLetterSerializerc                   @   s   e Zd ZeZdZdS )z!CompanyFirstLetterSerializer.Meta)rV   r2   rf   r3   Nr   r   r   r	   r   r   r   r   r   r   r      s   r   Nr    r   r   r   r   r      s   r   c                   @   s   e Zd ZG dd dZdS )CompanyUserSerializerc                   @   s   e Zd ZeZg dZdS )zCompanyUserSerializer.Meta)rV   usernameemailr2   is_superuserN)r   r   r   r   r   r   r   r   r   r   r      s   r   Nr    r   r   r   r   r      s   r   c                   @   s    e Zd Ze ZG dd dZdS )CompanyListSerializerc                   @   s   e Zd ZeZejjZdS )zCompanyListSerializer.MetaN)r   r   r   r	   r   r"   r   r4   r   r   r   r   r     s   r   Nr   r   r   r   rc   r   r   r   r   r   r     s   r   c                   @   s   e Zd ZG dd dZdS )CompanyRemoveUserSerializerc                   @   s   e Zd ZeZdgZdS )z CompanyRemoveUserSerializer.Metarc   Nr   r   r   r   r   r     s   r   Nr    r   r   r   r   r   
  s   r   c                   @   s   e Zd ZG dd dZdS )CompanyAllCategorySerializerc                   @   s   e Zd ZeZdgZdS )z!CompanyAllCategorySerializer.Metar9   Nr   r   r   r   r   r     s   r   Nr    r   r   r   r   r     s   r   c                   @   s   e Zd ZG dd dZdS )CompanyExportExcelSerializerc                   @   s   e Zd ZeZg dZdS )z!CompanyExportExcelSerializer.Meta)rV   r2   rf   r   r3   addressNr   r   r   r   r   r     s   r   Nr    r   r   r   r   r     s   r   c                   @   s.   e Zd ZeddgddddZG dd dZd	S )
ReviewSerializerr2   r=   TFzsource.platform)r   r$   r#   rF   c                   @   s   e Zd ZeZdZdS )zReviewSerializer.Meta)external_idN)r   r   r   r   r   r4   r   r   r   r   r   &  s   r   N)r   r   r   r   platformr   r   r   r   r   r     s   r   c                   @   s   e Zd ZG dd dZdS )PlanSerializerc                   @   s   e Zd ZeZdZdS )zPlanSerializer.Metar   N)r   r   r   r   r   r   r   r   r   r   r   2  s   r   Nr    r   r   r   r   r   1  s   r   c                   @   s,   e Zd Zejdej dZej	ddZ
dS )SubscriptionCompanySerializerT)r#   r%   r   N)r   r   r   r   r   r	   rj   ro   r   	DateFieldrM   r   r   r   r   r   6  s   r   c                   @   s    e Zd Ze ZG dd dZdS )CompanyPaymentSerializerc                   @   s   e Zd ZeZdZdS )zCompanyPaymentSerializer.Meta)rV   r2   rc   r>   phoner   Nr   r   r   r   r   r   >  s   r   Nr   r   r   r   r   r   ;  s   r   c                   @   s*   e Zd Ze ZeddZG dd dZdS )PaymentCompanySerializerF)r&   c                   @   s   e Zd ZeZdZdS )zPaymentCompanySerializer.Metar   Nr   r   r   r
   r   r   r   r   r   r   r   G  s   r   Nr   r   r   r   planr   rE   r   r   r   r   r   r   C  s   
r   c                   @   s   e Zd ZG dd dZdS )PaymentSerializerc                   @   s   e Zd ZeZdZdS )zPaymentSerializer.Meta)statusstripe_status
stripe_url	stripe_idN)r   r   r   r
   r   r4   r   r   r   r   r   M  s   r   Nr    r   r   r   r   r   L  s   r   c                   @   s   e Zd ZG dd dZdS )PaymentExportSerializerc                   @   s   e Zd ZeZdZdS )zPaymentExportSerializer.Metar   Nr   r   r   r   r   r   S  s   r   Nr    r   r   r   r   r   R  s   r   c                   @   s   e Zd ZG dd dZdS )PaymentUpdateSerializerc                   @   s   e Zd ZeZdZdS )zPaymentUpdateSerializer.Meta)descriptioncurrencyr   rA   Nr   r   r   r   r   r   Y  s   r   Nr    r   r   r   r   r   X  s   r   c                   @   s&   e Zd Ze Ze ZG dd dZdS )PaymentListSerializerc                   @   s   e Zd ZeZdZdS )zPaymentListSerializer.Metar   Nr   r   r   r   r   r   b  s   r   Nr   r   r   r   r   r   ^  s   r   c                   @   s   e Zd ZG dd dZdS )rY   c                   @   s   e Zd ZeZdZdS )zSubscriptionSerializer.Metar   N)r   r   r   r   r   r   r   r   r   r   r   h  s   r   Nr    r   r   r   r   rY   g  s   rY   N)5datetimer   r   urllib.parser   django.contrib.authr   rest_frameworkr   rest_framework.exceptionsr   Z&verify_trusted.companies.history_typesr   verify_trusted.companies.modelsr	   r
   r   r   r   r   r   &verify_trusted.reviews.api.serializersr   r   Z verify_trusted.utils.serializersr   r   r   Zverify_trusted.widgets.modelsr   r   ModelSerializerr   r!   r"   r   r   r   r   r   r   r   r   r   
Serializerr   r   r   r   r   r   r   rY   r   r   r   r   <module>   sF   $	
 ?		