
    ]h&                        S SK Jr  S SKJr  S SKJrJr  S SKJr  S SK	J
r
  S SKJr  S SKJrJr  S SKJr  S S	KJr  S S
KJr  SSKJrJrJrJrJrJrJrJrJrJr   " S S\R@                  5      r! " S S\R@                  5      r" " S S\R@                  5      r# " S S\R@                  5      r$ " S S\R@                  5      r% " S S\R@                  5      r& " S S\R@                  5      r' " S S\R@                  5      r( " S S\R@                  5      r) " S S \RT                  5      r+ " S! S"\RT                  5      r, " S# S$\RT                  5      r- " S% S&\R@                  5      r. " S' S(\R@                  5      r/ " S) S*\R@                  5      r0 " S+ S,\R@                  5      r1 " S- S.\R@                  5      r2 " S/ S0\R@                  5      r3 " S1 S2\RT                  5      r4 " S3 S4\RT                  5      r5g5)6    )serializers)EmailMultiAlternatives)make_passwordcheck_passwordUser)Token)default_token_generator)urlsafe_base64_encodeurlsafe_base64_decode)force_bytes)	send_mail)settings   )
Module
PermissionRolePermissionRoleAdminMasterBannerGift
AppSettingFemaleRewardc                   (    \ rS rSr " S S5      rSrg)ModuleSerializer   c                       \ rS rSr\rSrSrg)ModuleSerializer.Meta   __all__ N)__name__
__module____qualname____firstlineno__r   modelfields__static_attributes__r"       PC:\Users\ninos\OneDrive\Desktop\project\chat-python-script\master\serializers.pyMetar          r*   r,   r"   Nr#   r$   r%   r&   r,   r)   r"   r*   r+   r   r           r*   r   c                   (    \ rS rSr " S S5      rSrg)PermissionSerializer   c                       \ rS rSr\rSrSrg)PermissionSerializer.Meta   r!   r"   N)r#   r$   r%   r&   r   r'   r(   r)   r"   r*   r+   r,   r4      s    r*   r,   r"   Nr.   r"   r*   r+   r1   r1      r/   r*   r1   c                   (    \ rS rSr " S S5      rSrg)PermissionRoleSerializer   c                       \ rS rSr\rSrSrg)PermissionRoleSerializer.Meta   r!   r"   N)r#   r$   r%   r&   r   r'   r(   r)   r"   r*   r+   r,   r:      s    r*   r,   r"   Nr.   r"   r*   r+   r7   r7      r/   r*   r7   c                       \ rS rSr\R
                  " S\R                  R                  5       SS9r	 " S S5      r
S rS rS	rg
)RoleSerializer    TF)manyquerysetrequiredc                       \ rS rSr\rSrSrg)RoleSerializer.Meta'   r!   r"   N)r#   r$   r%   r&   r   r'   r(   r)   r"   r*   r+   r,   rC   '       r*   r,   c                     UR                  S/ 5      n[        R                  R                  " S0 UD6nUR                  R                  U5        U$ )Npermissionsr"   )popr   objectscreaterG   set)selfvalidated_datapermissions_dataroles       r+   rJ   RoleSerializer.create+   sF    )--mR@||""4^4-.r*   c                     UR                  SS 5      nUR                  5        H  u  pE[        XU5        M     UR                  5         Ub  UR                  R                  U5        U$ )NrG   )rH   itemssetattrsaverG   rK   )rL   instancerM   rN   attrvalues         r+   updateRoleSerializer.update1   s]    )--mTB)//1KDHE* 2'  $$%56r*   r"   N)r#   r$   r%   r&   r   PrimaryKeyRelatedFieldr   rI   allrG   r,   rJ   rX   r)   r"   r*   r+   r=   r=       s>    44##'')K 
r*   r=   c                   <   ^  \ rS rSr " S S5      rU 4S jrSrU =r$ )AdminSerializer>   c                   (    \ rS rSr\rSrSSS00rSrg)AdminSerializer.Meta?   r!   password
write_onlyTr"   N)	r#   r$   r%   r&   r   r'   r(   extra_kwargsr)   r"   r*   r+   r,   r`   ?   s    t,
r*   r,   c                   > UR                  S5      nUR                  S5      nUR                  S5      n[        R                  R                  USU0S9u  pVU(       a"  UR	                  U5        UR                  5         ORSnU(       a  UR	                  U5        SnU(       a  UR                  U:w  a  XEl        SnU(       a  UR                  5         U(       a  [        U5      US'   [        T	U ]%  U5      nU$ )Nrb   nameemail)usernamedefaultsFT)
getr   rI   get_or_createset_passwordrT   rg   r   superrJ   )
rL   rM   rb   rf   rg   usercreatedupdatedadmin	__class__s
            r+   rJ   AdminSerializer.createF   s    !%%j1!!&)""7+22DGUZK[2\h'IIKG!!(+u,"
		)6x)@N:&~.r*   r"   )r#   r$   r%   r&   r,   rJ   r)   __classcell__)rr   s   @r+   r]   r]   >   s    
 
 r*   r]   c                   (    \ rS rSr " S S5      rSrg)AdminUpdateSerializer`   c                        \ rS rSr\rSS/rSrg)AdminUpdateSerializer.Metaa   rb   
admin_coder"   N)r#   r$   r%   r&   r   r'   excluder)   r"   r*   r+   r,   ry   a   s    l+r*   r,   r"   Nr.   r"   r*   r+   rv   rv   `   s    , ,r*   rv   c                   (    \ rS rSr " S S5      rSrg)AdminStatusUpdateSerializerf   c                       \ rS rSr\rS/rSrg) AdminStatusUpdateSerializer.Metag   statusr"   N)r#   r$   r%   r&   r   r'   r(   r)   r"   r*   r+   r,   r   g   s    r*   r,   r"   Nr.   r"   r*   r+   r~   r~   f        r*   r~   c                   (    \ rS rSr " S S5      rSrg)MasterSerializerl   c                        \ rS rSr\r/ SQrSrg)MasterSerializer.Metam   )idtyperf   value1r   
created_at
updated_atr"   Nr#   r$   r%   r&   r   r'   r(   r)   r"   r*   r+   r,   r   m   s    Wr*   r,   r"   Nr.   r"   r*   r+   r   r   l   s    X Xr*   r   c                   (    \ rS rSr " S S5      rSrg)MasterStatusUpdateSerializerr   c                       \ rS rSr\rS/rSrg)!MasterStatusUpdateSerializer.Metas   r   r"   Nr   r"   r*   r+   r,   r   s   s    r*   r,   r"   Nr.   r"   r*   r+   r   r   r   r   r*   r   c                   \    \ rS rSr\R
                  " 5       r\R                  " SS9rS r	Sr
g)AdminLoginSerializerw   T)rc   c                 J   UR                  S5      nUR                  S5      n [        R                  R                  US9n[        X4R                  5      (       d  [        R
                  " S5      eXAS'   U$ ! [        R                   a    [        R
                  " S5      ef = f)Nrg   rb   rg   zInvalid credentialsrq   )rj   r   rI   DoesNotExistr   ValidationErrorr   rb   )rL   datarg   rb   rq   s        r+   validateAdminLoginSerializer.validate{   s    !88J'	EMM%%E%2E h77--.CDDW !! 	E--.CDD	Es   A7 7+B"r"   N)r#   r$   r%   r&   r   
EmailFieldrg   	CharFieldrb   r   r)   r"   r*   r+   r   r   w   s%    ""$E$$5Hr*   r   c                   B    \ rS rSr\R
                  " 5       rS rS rSr	g)#AdminRequestPasswordResetSerializer   c                     [         R                  R                  US9R                  5       (       d  [        R
                  " S5      eU$ )Nr   zNo admin found with this email.)r   rI   filterexistsr   r   )rL   rW   s     r+   validate_email2AdminRequestPasswordResetSerializer.validate_email   s:    }}##%#07799--.OPPr*   c                    U R                   S   n[        R                  R                  US9nSSKJn   UR                  R                  UR                  S9n[        [        UR                  5      5      n[        R                  " U5      n[        R                   SU SU SU 3nS	n[        R                  n	U/n
S
U 3nSU SU S3n[!        XX5      nUR#                  US5        UR%                  5         g ! UR                   a     g f = f)Nrg   r   r   r   )rh   z/resetpassword?uid=z&token=z&email=zAdmin Password Resetz.Click the link below to reset your password:

zY
            <p>Click the link below to reset your password:</p>
            <p><a href="z">z</a></p>
        z	text/html)rM   r   rI   rj   django.contrib.auth.modelsr   rf   r   r   r   pkr
   
make_tokenr   FRONTEND_URLDEFAULT_FROM_EMAILr   attach_alternativesend)rL   rg   rq   r   rn   uidtoken	reset_urlsubject
from_emailrecipient_listtext_contenthtml_contentmsgs                 r+   rT   (AdminRequestPasswordResetSerializer.save   s   ##G,!!!.3	<<##UZZ#8D $K$89'2248,,--@WUGSZ[`Zab	(00
I)U"2i[ 1	
 %WJW|[9
)    		s   #C8 8D
Dr"   N)
r#   r$   r%   r&   r   r   rg   r   rT   r)   r"   r*   r+   r   r      s    ""$E
r*   r   c                       \ rS rSr\R
                  " 5       r\R
                  " 5       r\R
                  " SS9rS r	S r
Srg)#AdminConfirmResetPasswordSerializer      )
min_lengthc                 J    [        US   5      R                  5       n[        R                  R	                  US9U l        [        R                  " U R
                  US   5      (       d  [        R                  " S5      eU$ ! [         a    [        R                  " S5      ef = f)Nr   )r   zInvalid UIDr   zInvalid or expired token)r   decoder   rI   rj   rn   	Exceptionr   r   r
   check_token)rL   r   r   s      r+   r   ,AdminConfirmResetPasswordSerializer.validate   s    	='U4;;=C((C(0DI '22499d7mLL--.HII  	=--m<<	=s   >B !B"c                 d   U R                   S   nU R                  R                  U5        U R                  R                  5          [        R
                  R                  U R                  R                  S9n[        U5      Ul	        UR                  5         g ! [        R                   a     g f = f)Nnew_password)rf   )rM   rn   rl   rT   r   rI   rj   rh   r   rb   r   )rL   rb   rq   s      r+   rT   (AdminConfirmResetPasswordSerializer.save   s    &&~6		x(			MM%%499+=+=%>E*84ENJJL!! 		s   AB B/.B/)rn   N)r#   r$   r%   r&   r   r   r   r   r   r   rT   r)   r"   r*   r+   r   r      s8    



!C!!#E((A6L

r*   r   c                   (    \ rS rSr " S S5      rSrg)BannerSerializer   c                       \ rS rSr\rSrSrg)BannerSerializer.Meta   r!   r"   Nr#   r$   r%   r&   r   r'   r(   r)   r"   r*   r+   r,   r      r-   r*   r,   r"   Nr.   r"   r*   r+   r   r      r/   r*   r   c                   (    \ rS rSr " S S5      rSrg)BannerStatusSerializer   c                       \ rS rSr\rSrSrg)BannerStatusSerializer.Meta   )r   r"   Nr   r"   r*   r+   r,   r      s    r*   r,   r"   Nr.   r"   r*   r+   r   r      s     r*   r   c                   (    \ rS rSr " S S5      rSrg)BannerImageTypeUpdateSerializer   c                        \ rS rSr\rSS/rSrg)$BannerImageTypeUpdateSerializer.Meta   r   imager"   Nr   r"   r*   r+   r,   r      s    '"r*   r,   r"   Nr.   r"   r*   r+   r   r      s    # #r*   r   c                   (    \ rS rSr " S S5      rSrg)GiftSerializer   c                       \ rS rSr\rSrSrg)GiftSerializer.Meta   r!   r"   N)r#   r$   r%   r&   r   r'   r(   r)   r"   r*   r+   r,   r      rE   r*   r,   r"   Nr.   r"   r*   r+   r   r      r/   r*   r   c                   (    \ rS rSr " S S5      rSrg)AppSettingSerializer   c                   (    \ rS rSr\r/ SQr/ SQrSrg)AppSettingSerializer.Meta   )r   rf   coderW   notesr   r   )r   r   r   r"   N)	r#   r$   r%   r&   r   r'   r(   read_only_fieldsr)   r"   r*   r+   r,   r      s    U=r*   r,   r"   Nr.   r"   r*   r+   r   r      s    > >r*   r   c                   P    \ rS rSr\R
                  " 5       r " S S5      rS rSr	g)FemaleRewardSerializer   c                       \ rS rSr\rSrSrg)FemaleRewardSerializer.Meta   r!   r"   N)r#   r$   r%   r&   r   r'   r(   r)   r"   r*   r+   r,   r      s    r*   r,   c                 8    UR                    SUR                   3$ )N - )	start_minend_min)rL   objs     r+   get_duration#FemaleRewardSerializer.get_duration   s    --CKK=11r*   r"   N)
r#   r$   r%   r&   r   SerializerMethodFielddurationr,   r   r)   r"   r*   r+   r   r      s    002H 2r*   r   c                       \ rS rSr\R
                  " 5       r\R                  " SS/S9r\R                  " 5       r
\R                  " 5       rS rSrg)FemaleRewardInputSerializer   )1Audio)2Video)choicesc                      UR                  S5      u  p#[        UR                  5       5      [        UR                  5       5      4$ ! [         a    [        R
                  " S5      ef = f)N-z0Invalid duration format. Expected 'start - end'.)splitfloatstripr   r   r   )rL   rW   startends       r+   validate_Duration-FemaleRewardInputSerializer.validate_Duration   s\    	bS)JE'syy{);;; 	b--.`aa	bs   AA !A(r"   N)r#   r$   r%   r&   r   r   DurationChoiceFieldType
FloatFieldNormalPremiumr  r)   r"   r*   r+   r   r      sG    $$&H""NN+KLD##%F$$&Gbr*   r   c                       \ rS rSr\R
                  " 5       r\R                  " 5       r\R                  " SSS9r
\R                  " SSS9r\R
                  " SSS9r\R
                  " SSS9rS rS rSrg)	FemaleRewardCustomSerializeri  FT)rA   
allow_nullc                 >   UR                   UR                   SUR                   3UR                  S:X  a  UR                  OS UR                  S:X  a  UR                  OS UR                  S:X  a  UR
                  OS UR                  S:X  a  UR
                  S.$ S S.$ )Nr   r      )r  r  r  r  	Normal_id
Premium_id)r   r   r   	user_typecoinsr   )rL   rU   s     r+   to_representation.FemaleRewardCustomSerializer.to_representation
  s    MM#--.c(2B2B1CD(0(:(:a(?hnnT)1););q)@x~~d(0(:(:a(?T)1););q)@(++
 	
 GK
 	
r*   c                 (   [        [        US   R                  S5      5      u  p4US   Ul        X1l        XAl        UR                  S5      b  US   Ul        SUl        O#UR                  S5      b  US   Ul        SUl        UR                  5         U$ )Nr  r  r  r  r   r  r  )
mapr  r  r   r   r   rj   r  r  rT   )rL   rU   rM   r   r   s        r+   rX   #FemaleRewardCustomSerializer.update  s     z(B(H(H(MN	&v.&"h'3+H5HN!"H	*6+I6HN!"Hr*   r"   N)r#   r$   r%   r&   r   IntegerFieldr  r   r  r  r  r  r  r  r  rX   r)   r"   r*   r+   r  r    sp    ##%D$$&H##UtDF$$eEG((%DII))5TJJ
r*   r  N)6rest_frameworkr   django.core.mailr   django.contrib.auth.hashersr   r   r   r   rest_framework.authtoken.modelsr	   django.contrib.auth.tokensr
   django.utils.httpr   r   django.utils.encodingr   r   django.confr   modelsr   r   r   r   r   r   r   r   r   r   ModelSerializerr   r1   r7   r=   r]   rv   r~   r   r   
Serializerr   r   r   r   r   r   r   r   r   r   r  r"   r*   r+   <module>r-     s   & 3 E + 1 > J - &   s s s{22 ;66 {:: [00 < k11  D,K77 ,+"="= X{22 X;#>#> 
;11 (#+*@*@ #J+*@*@ <{22 
[88 
#k&A&A #[00 >;66 >2[88 2b+"8"8 b ;#9#9  r*   