o
    mh                     @   sp   d dl mZ d dlmZmZ d dlmZ G dd deZG dd deZG dd	 d	ej	Z
G d
d dej	ZdS )    )models)AbstractBaseUserBaseUserManager)timezonec                   @   s    e Zd ZdddZdddZdS )CustomUserManagerNc                 K   sF   |st d| |}| jdd|i|}|| |j| jd |S )NzThe Email field must be setemail)using )
ValueErrornormalize_emailmodelset_passwordsave_db)selfr   passwordextra_fieldsuserr	   r	   &/var/www/spmcq_backend/users/models.pycreate_user   s   

zCustomUserManager.create_userc                 K   s8   | dd | dd | dd | j||fi |S )Nis_staffTis_superuseris_verified)
setdefaultr   )r   r   r   r   r	   r	   r   create_superuser   s   z"CustomUserManager.create_superuserN)__name__
__module____qualname__r   r   r	   r	   r	   r   r      s    
r   c                   @   s   e Zd ZejddZejddZejddZejddddZ	ejddddZ
ejdd	Zejdd	Zejdd	Zejdd	Zejd
g ddddZejdd	Ze ZdZddgZdd ZdS )
CustomUserT)unique   
max_length   r#   blanknulld   F)default
   ))maleMale)femaleFemale)otherOther)r#   choicesr&   r'   r   
first_name	last_namec                 C   s   | j S r   )r   r   r	   r	   r   __str__,   s   zCustomUser.__str__N)r   r   r   r   
EmailFieldr   	CharFieldr2   r3   phone_numbercountry_nameBooleanFieldr   	is_activer   r   gendermusic_soundr   objectsUSERNAME_FIELDREQUIRED_FIELDSr5   r	   r	   r	   r   r      s     r   c                   @   sd   e Zd ZejeejddZejddddZ	ejddZ
e ZejddZG dd	 d	Zd
d ZdS )Devicedevices)	on_deleterelated_name   Tr%   r"   )auto_nowc                   @   s    e Zd ZejddgddgZdS )zDevice.Metar   	device_idunique_user_device_id)fieldsnameN)r   r   r   r   UniqueConstraintconstraintsr	   r	   r	   r   Meta6   s    rM   c                 C   s$   | j j d| jp
| j d| j dS )Nz - z ())r   r   rG   
user_agent
ip_addressr4   r	   r	   r   r5   <   s   $zDevice.__str__N)r   r   r   r   
ForeignKeyr   CASCADEr   r7   rG   rO   GenericIPAddressFieldrP   DateTimeField
last_loginrM   r5   r	   r	   r	   r   rA   /   s    rA   c                       sT   e Zd ZejeejdZejddZ	ej
dddZej
dddZ fddZ  ZS )OTP)rC      r"   T)r'   r&   c                    s@   | j st | _ | js| j tjdd | _t j|i | d S )Nr*   )minutes)
created_atr   now
expires_at	timedeltasuperr   )r   argskwargs	__class__r	   r   r   F   s
   
zOTP.save)r   r   r   r   rQ   r   rR   r   r7   otprT   rY   r[   r   __classcell__r	   r	   r`   r   rV   @   s    rV   N)	django.dbr   django.contrib.auth.modelsr   r   django.utilsr   r   r   ModelrA   rV   r	   r	   r	   r   <module>   s   