a
    ud$                     @   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 d dlmZmZ d d	l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 dS )    )date	timedelta)urlparse)get_user_model)Q)serializers)ValidationError)UniqueValidator)CompanySerializerSubscriptionSerializer)HistoryType)CompanySubscription)IncludeDigitValidatorIncludeLowercaseValidatorIncludeUppercaseValidator)Widgetc                       sN   e Zd ZejddZejddZ fddZ fddZG dd dZ	  Z
S )	!UserCompanyRegistrationSerializerN)defaultc                    st   d|v rht jj|d d }|d u rh|d ddddddd	dd
ddddd}t jjf i |}|  t |S )Nid
company_id   Slider#FFFFFF#DBDFEA   #3D424D      backgroundColorborderColordateFontSize	nameColornameFontSizereviewColorreviewFontSizer   
TOP_RATINGlight-background)r   	layout_idlayout_type
more_stylenumber_of_revieworder_byset_id)r   objectsfilterfirstcreatesavesuper)selfvalidated_data
old_widgetwidget_datawidget	__class__ Q/var/www/html/Ranjet/backend/verify_trusted/users/api/serializers/registration.pyr3      s*    	z(UserCompanyRegistrationSerializer.createc                    s   |d }zt |}W n ty2   tddiY n0 t|dt|jdB }tj| }|r|j	d urttddi|j
|d< |dd  n|jd ur|jn||d< t |S )Nurl_displayurlMSG016)r@   ZMSG015r   )r   
ValueErrorr   r   hostnamer   r0   r1   r2   userr   popr5   validate)r6   attrsr@   oquerycompanyr;   r=   r>   rF   7   s    

z*UserCompanyRegistrationSerializer.validatec                   @   s,   e Zd ZeZg dZdg ddddiZdS )z&UserCompanyRegistrationSerializer.Meta)r   namer?   r@   country_codeaddress	web_aliasr?   rA   ZMSG013invalidblank)
validatorserror_messagesN)__name__
__module____qualname__r   modelfieldsextra_kwargsr=   r=   r=   r>   MetaH   s   rZ   )rT   rU   rV   r   HiddenFieldr   r@   r3   rF   rZ   __classcell__r=   r=   r;   r>   r      s
   r   c                   @   s   e Zd Zejddeddeddeddgddd	d
Ze	dddZ
edddZG dd dZdd ZeedddZeedddZedddZdS )UserRegistrationSerializerT   ZMSG009)messageZMSG010ZMSG011ZMSG007ZMSG008)rQ   
min_length)
write_onlyr`   rR   rS   )ra   many)	read_onlyrb   c                   @   sV   e Zd ZeZg dZddddddddd	ddeej d
dgdddddZ	dS )zUserRegistrationSerializer.Meta)rK   emailpasswordiprJ   	companiesFTr^       MSG001MSG003)rQ   
max_lengthr`   )allow_blankrequiredr`   rk   rS   MSG017)querysetr_   MSG006MSG005rO   )rl   rm   rR   rS   )rK   rd   N)
rT   rU   rV   UserrW   rX   r	   r0   allrY   r=   r=   r=   r>   rZ   h   s(   rZ   c                 C   s   | d}|d }|d |d< d|d< tjjf i |}d|v rZ|d d urZ| ||}n| ||}tjj|jd	 }|d u rt
|jt td	d
 dd}|jdd ||j |S )NrJ   r   rd   usernameT	is_activer   r      )days)rJ   due_datedataraise_exception)rE   rr   r0   create_useruser_claim_companyuser_create_companyr   r1   r   r2   r   r   todayr   is_validr3   r7   )r6   r7   rg   rJ   rD   subscriptionsubscription_serializerr=   r=   r>   r3      s(    
z!UserRegistrationSerializer.create)rD   rJ   c                 C   sH   |j |d< d|d< d|d< d|d< t|d}|jdd ||j}|S )NrD   Tis_verified
ssl_statusone_yearry   r{   )r   r
   r   r3   r7   )r6   rD   rJ   Zcompany_serializerr=   r=   r>   r      s    

z.UserRegistrationSerializer.user_create_companyc                 C   s   d|v r|d nd}d|v r$|d nd}t jj|d d}||_d|_d|_d|_t|dkrb|n|j|_t|dkrz|n|j	|_	d|_
tj|_|  tjj|jd	 }|d u r|d
ddddddddddddd}tjjf i |}|  |S )NrL    rM   r   )r   Tr   USDr   r   r   r   r   r   r   r   r   r    r(   r)   rJ   r*   r+   r,   r-   r.   r/   )r   r0   getrD   r   r   r   lenrL   rM   currency_symbolr   CLAIMED_change_reasonr4   r   r1   r   r2   r3   )r6   rD   rJ   rL   rM   r8   r9   r:   r=   r=   r>   r~      sB    	z-UserRegistrationSerializer.user_claim_company)rJ   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 )Nr   r   r   r   r   r   r   r   r   r    r   r(   r)   r   )r   r0   r1   r   r2   r3   r4   )r6   rJ   r8   r9   r:   r=   r=   r>   create_widget   s(    	z(UserRegistrationSerializer.create_widgetN)rT   rU   rV   r   	CharFieldr   r   r   re   r   rJ   r
   rg   rZ   r3   rr   r   r   r~   r   r=   r=   r=   r>   r]   V   s$   
,r]   N)!datetimer   r   urllib.parser   django.contrib.authr   django.db.modelsr   rest_frameworkr   rest_framework.exceptionsr   rest_framework.validatorsr	   (verify_trusted.companies.api.serializersr
   r   &verify_trusted.companies.history_typesr   verify_trusted.companies.modelsr   r   Zverify_trusted.utils.validatorsr   r   r   Zverify_trusted.widgets.modelsr   rr   ModelSerializerr   r]   r=   r=   r=   r>   <module>   s   <