o
    g                     @   s   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	 d	eZG d
d de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jZdS )    N)	ModelForm)models)AbstractUser)gettext_lazy)BaseUserManager)r   AbstractBaseUserPermissionsMixinc                   @   s   e Zd ZdddZdd ZdS )UsersManagerNc                 K   sb   |r|s| j d|dd|}n|std| j dd| |i|}|| |j| jd |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)usingN )model
ValueErrornormalize_emailset_passwordsave_db)selfr   passwordr   extra_fieldsuserr   r   9/var/www/html/Testing_prj/Navya-Bakers/accounts/models.pycreate_user   s   
zUsersManager.create_userc                 K   s^   | dd | dd |ddurtd|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   r   r   r   create_superuser(   s   zUsersManager.create_superuser)NNN)__name__
__module____qualname__r   r    r   r   r   r   r	      s    
r	   c                   @   s4  e Zd ZejdejdddZejddddddZej	ddZ
ejdg d	ddd
ZejdddZejddZejddddZejddZejddddZejdg ddZej	ddZejdg ddZejd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ej	ddZe ZdZg Z dd Z!dS )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)r+   choicesr,   r-   r,   r-   d   r+   r+   r,   r-         ))activer<   )inactiver=   )suspendr>   r+   r5   ))Super Adminr@   )	NBC AdminrA   )
Shop AdminrB   )PU AdminrC   )r
   r
   )r+   r-   r,   )r-   r,   )auto_now_addr,   )auto_nowr,   r   c                 C   s   | j  d| j d| j S )N z - )
first_name	last_namer   r   r   r   r   __str__r   s   zUsers.__str__N)"r!   r"   r#   r   	UUIDFielduuiduuid4
EmailFieldr   BooleanFieldemail_verified	CharFieldgender	DateFielddobrG   rH   r   r   statususer_verify_statusr   	fcm_tokenDateTimeFieldlast_login_timecreated_dateupdated_dater   r   r	   objectsUSERNAME_FIELDREQUIRED_FIELDSrJ   r   r   r   r   r$   9   sL    



r$   c                   @   s@   e Zd ZejeejdZejddZ	ej
ddZejddZdS )	OTP)	on_delete   r8   Fr.   TrD   N)r!   r"   r#   r   
ForeignKeyr$   CASCADEr   rQ   otp_coderO   is_verifiedrX   
created_atr   r   r   r   r_   v   s
    r_   c                   @   sn   e Zd ZejeejddZejdddZ	ejdddZ
ejddZejdd	d	d
Zejdd	d	d
Zdd ZdS )Address	addresses)r`   related_name	   ra   )
max_digitsdecimal_placesr7   r8   r)   Tr9   
   c                 C   s   | j  d| j S )Nz, )flat_nolandmarkrI   r   r   r   rJ      s   zAddress.__str__N)r!   r"   r#   r   rc   r$   rd   r   DecimalFieldlatitude	longituderQ   ro   rp   address_typerJ   r   r   r   r   rh   }   s    rh   c                   @   s   e Zd ZejeddejdZe Z	e Z
ejdddejdZejddZejdddZejeddejdZejddZejdddZdd	 Zd
S )UserLocationTr,   r-   r`   z
shops.Shoprb   r6   Fr.   c                 C   s   | j r
| j j dS d dS )N	Anonymousz's location)r   r   rI   r   r   r   rJ         zUserLocation.__str__N)r!   r"   r#   r   rc   r$   rd   r   
FloatFieldrr   rs   SET_NULLshoprX   rg   rK   anonymous_idrh   addressrO   is_selected_address	TextFieldlocation_addressrJ   r   r   r   r   ru      s    

ru   c                   @   sf   e Zd ZejeddejdZejdddgdZ	ejddddZ
ejddddZejdd	Zd
d ZdS )LoggingOperationTrv   r;   )r{   r{   )productr   r?   i  r9   rb   c                 C   s   | j r| j jnd d| j S )Nrw   z Operation :)r   r   messagerI   r   r   r   rJ      rx   zLoggingOperation.__str__N)r!   r"   r#   r   rc   r$   rd   r   rQ   log_typer   descriptionrX   rg   rJ   r   r   r   r   r      s    r   )rL   django.formsr   	django.dbr   django.contrib.auth.modelsr   django.utils.translationr   _django.contrib.auth.base_userr   r   r   r	   r$   Modelr_   rh   ru   r   r   r   r   r   <module>   s    %=