o
    [h}.                     @   s^  d dl mZ d dlmZ d dlZd dlZddlmZmZm	Z	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 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j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j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j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j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jZ+G d0d1 d1ejZ,G d2d3 d3ejZ-G d4d5 d5ejZ.G d6d7 d7ejZ/G d8d9 d9ejZ0G d:d; d;ejZ1G d<d= d=ejZ2dS )>    )serializers)dateN   )
User	UserImageUserInterestUserLanguageEnquiry	UserBlockUserFavourite
UserReportPlanUserTransaction)Master
AppSetting)transactionc                   @      e Zd ZG dd dZdS )AlluserSerializerc                   @      e Zd ZeZdZdS )zAlluserSerializer.Meta__all__N__name__
__module____qualname__r   modelfields r   r   O/var/www/vedio/testing/chatpythonscript.ninositsolution.com/user/serializers.pyMeta       r   Nr   r   r   r   r   r   r   r   r   
       r   c                   @   s$   e Zd ZejddZejddZdS )SendOtpSerializer   
max_lengthN)r   r   r   r   	CharFieldcountry_codemobiler   r   r   r   r"      s    r"   c                   @   s0   e Zd ZejddZejddZejddZdS )VerifyOtpSerializerr#   r$   
   N)r   r   r   r   r&   r'   r(   otpr   r   r   r   r)      s    r)   c                   @   r   )UserInterestSerializerc                   @      e Zd ZeZddgZdS )zUserInterestSerializer.MetauserinterestNr   r   r   r   r   r   r   r   r   r   r          r   Nr    r   r   r   r   r,      r!   r,   c                   @   r   )UserLanguageSerializerc                   @   r-   )zUserLanguageSerializer.Metar.   languageNr   r   r   r   r   r   r   r   r   r   r      r1   r   Nr    r   r   r   r   r2      r!   r2   c                   @   r   )UserImageSerializerc                   @      e Zd ZeZg dZdS )zUserImageSerializer.Meta)idr.   imageN)r   r   r   r   r   r   r   r   r   r   r   #   r1   r   Nr    r   r   r   r   r5   "   r!   r5   c                       s^   e Zd ZejddZejddddZG dd dZdd Zd	d
 Z	dd Z
 fddZ  ZS )UserRegistrationSerializerT	read_onlyF)
write_onlyrequiredallow_blankc                   @   r6   )zUserRegistrationSerializer.Meta)r7   genderdisplay_name	real_nameemailr'   r(   dobaboutlanguage_idreferral_code	call_typereferred_by_codeNr   r   r   r   r   r   +   r1   r   c                 C   s"   d}d tjtjdd}|| S )Nharmoni    )k)joinrandomchoicesstringdigits)selfprefixsuffixr   r   r   generate_referral_code2   s   z1UserRegistrationSerializer.generate_referral_codec                 C   s,   t  }|j|j |j|jf|j|jfk  S )Nr   todayyearmonthday)rR   rC   rW   r   r   r   calculate_age7   s   $z(UserRegistrationSerializer.calculate_agec                 C   sL   |dkrt jjddd}n|dkrt jjddd}ng }|r$t|jS d S )Nr   rK   T)typestatus   	   )r   objectsfilterrN   choicevalue1)rR   r?   default_imagesr   r   r   assign_default_image;   s   z/UserRegistrationSerializer.assign_default_imagec                    s  | j d}|dd  |d}| |}||d< |d}| |}||d< ||d< |dkr8d|d< d|d	< |  |d
< d }|r_ztjj|d}||d< W n tjy^   t	
ddiw t k t |}|r|dkrtjjdd }	tjjdd }
|	r| jt|	j7  _|jdgd |
r| jt|
j7  _|jdgd n|dkr	 W d    |S W d    |S W d    |S W d    |S 1 sw   Y  |S )NrH   rC   ager?   default_imagedisplay_imager   r]   admin_statusrF   )rF   
referer_idmessagezInvalid referral code.referred_to_coins)codereferer_coinsavailable_coins)update_fieldsr^   )initial_datagetpopr[   re   rU   r   r`   DoesNotExistr   ValidationErrorr   atomicsupercreater   ra   firstro   intvaluesave)rR   validated_datarH   rC   rf   r?   rg   refererr.   rl   rn   	__class__r   r   rx   F   sb   








z!UserRegistrationSerializer.create)r   r   r   r   r&   rF   rH   r   rU   r[   re   rx   __classcell__r   r   r   r   r9   '   s    r9   c                   @   r   ) UserDisplayImageUpdateSerializerc                   @      e Zd ZeZdgZdS )z%UserDisplayImageUpdateSerializer.Metarh   Nr   r   r   r   r   r   z       
r   Nr    r   r   r   r   r   y   r!   r   c                   @   r   )UserImageUpdateSerializerc                   @   r6   )zUserImageUpdateSerializer.Meta)rg   profile_imagerh   Nr   r   r   r   r   r      r1   r   Nr    r   r   r   r   r   ~   r!   r   c                   @   s,   e Zd Zejej dZG dd dZ	dS )UpdateLanguageSerializer)querysetc                   @   r   )zUpdateLanguageSerializer.MetarE   Nr   r   r   r   r   r      r   r   N)
r   r   r   r   PrimaryKeyRelatedFieldr   r`   allrE   r   r   r   r   r   r      s    r   c                   @   r   )UserSerializerc                   @   r6   )zUserSerializer.Meta)r7   r'   r(   r?   r@   rA   rD   rB   rC   rf   rE   rh   rg   r   ro   available_minutesr]   	user_typeri   rG   
deleted_atfirst_offer_usedreferral_min_usedNr   r   r   r   r   r      r1   r   Nr    r   r   r   r   r      r!   r   c                   @   r   )FemalrequestSerializerc                   @   r6   )zFemalrequestSerializer.Meta)r7   r'   r(   r?   r@   rA   rD   rB   rC   rf   rE   rh   rg   r   ro   r   r]   r   ri   
created_atNr   r   r   r   r   r      r1   r   Nr    r   r   r   r   r      r!   r   c                   @   r   )EditUserSerializerc                   @   r6   )zEditUserSerializer.Meta)r'   r(   r?   r@   rA   rD   rB   rC   rE   rg   r   ro   r   r]   Nr   r   r   r   r   r      r1   r   Nr    r   r   r   r   r      r!   r   c                   @   s*   e Zd ZG dd dZdd Zdd ZdS )ProfileupdateSerializerc                   @   r6   )zProfileupdateSerializer.Meta)
r'   r(   r?   r@   rA   rD   rB   rC   r]   rG   Nr   r   r   r   r   r      r1   r   c                 C   s0   t  }|j|j |j|jf|j|jfk  }|S )z)Calculate age based on the date of birth.rV   )rR   rC   rW   rf   r   r   r   r[      s   $z%ProfileupdateSerializer.calculate_agec                 C   sH   | d|j}|r| ||_| D ]
\}}t||| q|  |S )NrC   )rr   rC   r[   rf   itemssetattrr|   )rR   instancer}   rC   attrr{   r   r   r   update   s   zProfileupdateSerializer.updateN)r   r   r   r   r[   r   r   r   r   r   r      s    r   c                   @   r   )UserStatusUpdateSerializerc                   @   r-   )zUserStatusUpdateSerializer.Metar]   ri   Nr   r   r   r   r   r      r1   r   Nr    r   r   r   r   r      r!   r   c                   @   s"   e Zd Ze ZG dd dZdS )FemaleVerifySerializerc                   @   r-   )zFemaleVerifySerializer.Metar7   ri   Nr   r   r   r   r   r      r1   r   N)r   r   r   r   IntegerFieldr7   r   r   r   r   r   r      s    r   c                   @   r   )UsertypeUpdateSerializerc                   @   r   )zUsertypeUpdateSerializer.Metar   Nr   r   r   r   r   r      r   r   Nr    r   r   r   r   r      r!   r   c                   @   r   )EnquirySerializerc                   @       e Zd ZeZg dZg dZdS )zEnquirySerializer.Meta)r7   r.   subjectdescriptionadmin_descriptionr]   r   
updated_atr7   r   r   Nr   r   r   r	   r   r   read_only_fieldsr   r   r   r   r          r   Nr    r   r   r   r   r      r!   r   c                   @   r   )UserEnquirySerializerc                   @   r   )zUserEnquirySerializer.Meta)r7   r.   r   r   r]   r   r   r   Nr   r   r   r   r   r      r   r   Nr    r   r   r   r   r      r!   r   c                   @   sf   e Zd ZejdddZejdddZejdddZejdddZej	ddZ
G dd	 d	Zd
d ZdS )UserBlockSerializerzblocked_user.display_nameTsourcer;   zblocked_user.default_imagezblocked_user.profile_imagezblocked_user.display_imager:   c                   @   r6   )zUserBlockSerializer.Meta)r7   r.   blocked_userblocked_user_nameblocked_user_ai_imageblocked_user_profile_imageblocked_user_display_imager   N)r   r   r   r
   r   r   r   r   r   r   r      r1   r   c                 C   D   |d }|d }||krt dtjj||d r t d|S )Nr.   r   zUser cannot block themselves.)r.   r   zThis user is already blocked.)r   ru   r
   r`   ra   exists)rR   attrsr.   r   r   r   r   validate      

zUserBlockSerializer.validateN)r   r   r   r   r&   r   r   r   r   DateTimeFieldr   r   r   r   r   r   r   r      s    r   c                   @   s"   e Zd ZG dd dZdd ZdS )UserFavouriteSerializerc                   @   r6   )zUserFavouriteSerializer.Meta)r7   r.   favourite_userN)r   r   r   r   r   r   r   r   r   r   r      r1   r   c                 C   r   )Nr.   r   z!User cannot favourite themselves.)r.   r   z)This user is already marked as favourite.)r   ru   r   r`   ra   r   )rR   r   r.   r   r   r   r   r      r   z UserFavouriteSerializer.validateN)r   r   r   r   r   r   r   r   r   r      s    r   c                   @   D   e Zd ZejdddZejdddZejdddZG dd dZ	dS )	UsergetInterestSerializerzinterest.idTr   zinterest.namezinterest.value1c                   @   r6   )zUsergetInterestSerializer.Metar7   namerc   Nr0   r   r   r   r   r     r1   r   N
r   r   r   r   r   r7   r&   r   rc   r   r   r   r   r   r   	  
    r   c                   @   r   )	UsergetLanguageSerializerzlanguage.idTr   zlanguage.namezlanguage.value1c                   @   r6   )zUsergetLanguageSerializer.Metar   Nr4   r   r   r   r   r     r1   r   Nr   r   r   r   r   r     r   r   c                   @   s^   e Zd ZejdddZejdddZejdddZejdddZej	ddZ
G dd	 d	Zd
S )UserReportSerializerzreported_user.display_nameTr   zreported_user.default_imagezreported_user.profile_imagezreported_user.display_imager:   c                   @   r6   )zUserReportSerializer.Meta)	r7   r.   reported_userreported_user_namereported_user_ai_imagereported_user_profile_imagereported_user_display_imager   r   Nr   r   r   r   r   r   r   r   r   r   r   #  r1   r   N)r   r   r   r   r&   r   r   r   r   r   r   r   r   r   r   r   r     s    r   c                   @   sP   e Zd ZejdddZejdddZejdddZejddZ	G dd dZ
d	S )
UserReportbySerializerzuser.display_nameTr   zuser.default_imagezuser.profile_imager:   c                   @   r6   )zUserReportbySerializer.Meta)r7   r.   r   r   r   r   r   r   Nr   r   r   r   r   r   -  r1   r   N)r   r   r   r   r&   r   r   r   r   r   r   r   r   r   r   r   '  s    r   c                   @   r   )PlanSerializerc                   @   r   )zPlanSerializer.Metar   N)r   r   r   r   r   r   r   r   r   r   r   3  r   r   Nr    r   r   r   r   r   2  r!   r   c                   @   r   )UserTransactionSerializerc                   @   r   )zUserTransactionSerializer.Metar   N)r   r   r   r   r   r   r   r   r   r   r   9  r   r   Nr    r   r   r   r   r   8  r!   r   )3rest_frameworkr   datetimer   rN   rP   modelsr   r   r   r   r	   r
   r   r   r   r   master.modelsr   r   	django.dbr   ModelSerializerr   
Serializerr"   r)   r,   r2   r5   r9   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sD    0R
		
	