a
    Čc	                     @   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	 G dd deZ
G d	d
 d
ejZdS )    N)models)AbstractUser)gettext_lazy   )UserManagerc                   @   s   e Zd ZdZejeddddddZejeddddZ	ej
ed	dd
ZdZddgZe ZG dd dZdd Zdd Zdd Zdd Zedd Zdd Zdd ZdS )Userz Custom User Model ZUserName   FT)
max_lengthuniqueblanknullZEmail)r
   r   zVerified Account)defaultemail
first_name	last_namec                   @   s   e Zd ZedZedZdS )z	User.MetauserusersN)__name__
__module____qualname___verbose_nameverbose_name_plural r   r   TC:\Users\brahi\OneDrive\Desktop\New folder (10)\UseVoice\src\apps\accounts\models.pyMeta   s   r   c                 C   s   | j  d| j S N r   r   selfr   r   r   __str__   s    zUser.__str__c                 C   s   | j  d| j S r   r   r   r   r   r   get_full_name   s    zUser.get_full_namec                 C   s   | j S N)r   r   r   r   r   get_short_name"   s    zUser.get_short_namec                 C   s   ddl m} ||| jS )Nr   )check_password)django.contrib.auth.hashersr%   password)r    raw_passwordr%   r   r   r   r%   %   s    zUser.check_passwordc                 C   s   |   S )z
        Allows us to get a user's token by calling `user.token` instead of `user.generate_jwt_token().
        The `@property` decorator above makes this possible. `token` is called a "dynamic property".
        )_generate_jwt_tokenr   r   r   r   token)   s    z
User.tokenc                 C   sJ   ddl m} ddlm}m} | ||jd }tj| j|d|j	ddS )z
        Generates a JSON Web Token that stores this user's ID and has an expiry date set to TOKEN_EXPIRY_SECONDS into the future.
        r   )settings)datetime	timedelta)seconds)idexpZHS256)	algorithm)
django.confr+   r,   r-   nowTOKEN_EXPIRY_SECONDSjwtencodepk
SECRET_KEY)r    r+   r,   r-   dtr   r   r   r)   1   s    zUser._generate_jwt_tokenc                 C   s   d S r#   r   r   r   r   r   _send_welcome_mail<   s    zUser._send_welcome_mailN)r   r   r   __doc__r   	CharFieldr   username
EmailFieldr   BooleanFieldZis_verifiedUSERNAME_FIELDREQUIRED_FIELDSr   objectsr   r!   r"   r$   r%   propertyr*   r)   r:   r   r   r   r   r      s    
r   c                   @   sT   e Zd ZejeddejdZeje	dddddZ
eje	ddd	dd
Zdd ZdS )LoginInUserFZlogin_in_user)r   related_name	on_deletezSession keyT6   )r   r   r	   z
IP Addressboth)r   protocolunpack_ipv4c                 C   s
   | j j S r#   )r   r   r   r   r   r   r!   F   s    zLoginInUser.__str__N)r   r   r   r   OneToOneFieldr   CASCADEr   r<   r   session_keyGenericIPAddressField
ip_addressr!   r   r   r   r   rD   A   s   rD   )r5   	django.dbr   django.contrib.auth.modelsr   django.utils.translationr   r   managersr   r   ModelrD   r   r   r   r   <module>   s   5