
    nj                     ~   d dl Z d dlZd dl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mZ  G d d	e      Z G d
 dee      Z G d dej$                        Z G d dej$                        Z G d dej$                        Z G d dej$                        Zd Z G d dej$                        Zy)    N)	ModelForm)models)AbstractUser)gettext_lazy)BaseUserManager)r   AbstractBaseUserPermissionsMixinc                       e Zd ZddZd Zy)UsersManagerNc                     |r|s | j                   d|dd|}nA|st        d       | j                   dd| j                  |      i|}|j                  |       |j	                  | j
                         |S )zd
        Creates and saves a User with the given email, date of
        birth and password.
        Customer)phone_number	user_typez Users must have an email addressemail)using )model
ValueErrornormalize_emailset_passwordsave_db)selfr   passwordr   extra_fieldsusers         MC:\Users\Saasvaap\Desktop\Akash\Saasvaap\DEMO\Navya-Bakers\accounts\models.pycreate_userzUsersManager.create_user   s    
 4:: )ZCOD
  !CDD4::PD$8$8$?P<PDh'			!    c                     |j                  dd       |j                  dd       |j                  d      durt        d      |j                  d      durt        d       | j                  |fd|i|}|S )zi
        Creates and saves a superuser with the given email, date of
        birth and password.
        is_staffTis_superuserzSuper User must be StaffzSuper User must be Super Userr   )
setdefaultgetr   r   )r   r   r   r   r   s        r   create_superuserzUsersManager.create_superuser)   s    
 	
D15J't3788N+47<==tIILIr   )NNN)__name__
__module____qualname__r   r%   r   r   r   r   r      s    &r   r   c                   F   e Zd Z ej                  dej                  dd      Z ej                  ddddd      Z ej                  d      Z
 ej                  dg d	dd
      Z ej                  dd      Z ej                  d      Z ej                  ddd      Z ej                  d      Z ej                  ddd      Z ej                  dg d      Z ej                  d      Z ej                  dg d      Z ej                  ddd      Z ej.                  dd      Z ej.                  dd      Z ej.                  dd      Z ej                  d      Z ej                  d      Z ej                  d      Z e       ZdZ g Z!d Z"y)UsersTF)primary_keydefaultuniqueeditablezemail address   )verbose_name
max_lengthr-   nullblankr,      ))maleMale)femaleFemale)prefer_not_to_sayzPrefer Not to Say)r1   choicesr2   r3   r2   r3   d   r1   r1   r2   r3         ))activerB   )inactiverC   )suspendrD   r1   r;   ))Super AdminrF   )	NBC AdminrG   )
Shop AdminrH   )PU AdminrI   )r   r   )r1   r3   r2   )r3   r2   )auto_now_addr2   )auto_nowr2   r   c                 R    | j                    d| j                   d| j                   S )N z - )
first_name	last_namer   r   s    r   __str__zUsers.__str__t   s'    //"!DNN#33tzzlCCr   N)#r&   r'   r(   r   	UUIDFielduuiduuid4
EmailFieldr   BooleanFieldemail_verified	CharFieldgender	DateFielddobrN   rO   r   r   statususer_verify_statusr   	fcm_tokenDateTimeFieldlast_login_timecreated_dateupdated_dater!   r"   opt_inr   objectsUSERNAME_FIELDREQUIRED_FIELDSrQ   r   r   r   r*   r*   :   s    6$**TED F$TTXE )V((7NV

 	F &

D
1C!!!S1J   Cd$GIv3/H#6##sTJLV
F -,,U;   
	I !  Ct$GI*f**DAO'6''TEL'6''DAL"v""51H&6&&u5L"v""51FnGNODr   r*   c                       e Zd Z ej                  eej                        Z ej                  d      Z	 ej                  d      Z ej                  d      Zy)	OTP)	on_delete   r>   Fr4   TrJ   N)r&   r'   r(   r   
ForeignKeyr*   CASCADEr   rX   otp_coderV   is_verifiedr_   
created_atr   r   r   rh   rh   x   sP    6Ufnn=Dv1-H%&%%e4K%%%48Jr   rh   c                      e Zd Z ej                  eej                  d      Z ej                  dd      Z	 ej                  dd      Z
 ej                  d      Z ej                  dd	d	
      Z ej                  dd	d	
      Zd Zy)Address	addressesri   related_name	   rj   )
max_digitsdecimal_placesr=   r>   r/   Tr?   
   c                 8    | j                    d| j                   S )Nz, )flat_nolandmarkrP   s    r   rQ   zAddress.__str__   s    ,,r$--11r   N)r&   r'   r(   r   rl   r*   rm   r   DecimalFieldlatitude	longituderX   r{   r|   address_typerQ   r   r   r   rr   rr      s    6Ufnn;WD"v""aBH###qCIf#.Gv3TFH#6##rDIL2r   rr   c                      e Zd Z ej                  eddej                        Z ej                         Z	 ej                         Z
 ej                  dddej                        Z ej                  d      Z ej                  dd      Z ej                  eddej                        Z ej&                  d      Z ej*                  dd      Z ej                  ddd	      Zd
 Zy)UserLocationTr2   r3   ri   z
shops.Shoprk   r<   Fr4   zDistance In kilometers)r2   r3   	help_textc                 V    | j                   r| j                   j                   dS d dS )N	Anonymousz's location)r   r   rP   s    r   rQ   zUserLocation.__str__   s-    ,0II$))((G{SS;G{SSr   N)r&   r'   r(   r   rl   r*   rm   r   
FloatFieldr~   r   SET_NULLshopr_   rp   rR   anonymous_idrr   addressrV   is_selected_address	TextFieldlocation_addressdistancerQ   r   r   r   r   r      s    6UTV^^TD v  "H!!!#I64tvD &%%48J#6##T:Lfd$&//G .&--e<'v''T> v  d$BZ[HTr   r   c                       e Zd Z ej                  eddej                        Z ej                  dddg      Z	 ej                  ddd      Z
 ej                  ddd      Z ej                  d	      Zd
 Zy)LoggingOperationTr   rA   )r   r   )productr   rE   i  r?   rk   c                 h    | j                   r| j                   j                  nd d| j                   S )Nr   z Operation :)r   r   messagerP   s    r   rQ   zLoggingOperation.__str__   s(    %)YY$))//K@T\\N[[r   N)r&   r'   r(   r   rl   r*   rm   r   rX   log_typer   descriptionr_   rp   rQ   r   r   r   r   r      s    6UTV^^TD   "
H f#DEG"&""cTJK%%%48J\r   r   c                      t         j                  t         j                  z   } dj                  t	        j
                  | d            S )N    )k)stringascii_uppercasedigitsjoinrandomr;   )charss    r   generate_referral_coder      s0    ""V]]2E776>>%1-..r   c                        e Zd Z ej                  dej
                  d      Z ej                  dd      Z fdZ	e
d        Z xZS )	Referralr*   referralrt   r   T)r1   r-   c                 f    | j                   s| j                         | _         t        |   |i | y )N)referral_codegenerate_unique_codesuperr   )r   argskwargs	__class__s      r   r   zReferral.save   s.    !!!%!:!:!<Dd%f%r   c                  z    	 t               } t        j                  j                  |       j	                         s| S ;)N)r   )r   r   rd   filterexists)codes    r   r   zReferral.generate_unique_code   s7    )+D##***>EEG r   )r&   r'   r(   r   OneToOneFieldrm   r   rX   r   r   staticmethodr   __classcell__)r   s   @r   r   r      sK    66>>PZ[D$F$$$?M&
  r   r   )rS   r   r   django.formsr   	django.dbr   django.contrib.auth.modelsr   django.utils.translationr   _django.contrib.auth.base_userr   r   r	   r   r*   Modelrh   rr   r   r   r   r   r   r   r   <module>r      s       "  3 6 9  "? "J;D. ;D|9&,, 9	2fll 	2T6<< T*\v|| \(/v|| r   