a
    d                     @   s   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 d dlmZ d d	lmZ d d
lmZ d dlmZ d dlZd dlmZ G dd deZdd ZG dd dejZe
edd ZdS )    )datetime)settings)AbstractUser)EmailMultiAlternatives)models)receiver)render_to_string)reverse)gettext_lazy)reset_password_token_created)IsAdminUserN)DEFAULT_FROM_EMAILc                   @   sT   e Zd ZdZejeddddZejdddZ	ejdddd	d
Z
d	Zd	Zdd Zd	S )Userz Default user for Verify Trusted.zName of UserT   )blank
max_lengthr   )defaultr      N)r   r   nullr   c                 C   s   t dd| jidS )zLGet url for user's detail view.

		Returns:
			str: URL for user detail.

		zusers:detailusername)kwargs)r	   r   self r   ;/var/www/html/Ranjet/backend/verify_trusted/users/models.pyget_absolute_url   s    zUser.get_absolute_url)__name__
__module____qualname____doc__r   	CharField_nameIntegerFieldZfail_to_loginip
first_name	last_namer   r   r   r   r   r      s   r   c                 C   s:   t t d}|d}d| jj||t|d  S )Nz%Y_%m_%d_%H_%M_%S.zuser/{0}_{1}.{2}   )	strr   nowstrftimesplitformatuseridlen)instancefilenameZtimestrZnew_filenamer   r   r   user_directory_path&   s
    
r3   c                       s  e Zd ZejeejdddZejddddZ	ejddddZ
ejeddddZejd	dddZejd
dddZejdddZejddddZejdddddZejdddddZejdddddZejdddddZejddddZejddZdd Z fddZ  ZS )ProfileTZprofile)	on_deleteprimary_keyrelated_name2    )r   r   r   i  )	upload_tor   r   r   r   r   en)r   r   F)r   r   r   $   )r   r   r   r         )r   r   r   )r   c                 C   s   d | jS )Nz{}'s profile)r-   r.   r   r   r   r   __str__E   s    zProfile.__str__c                    s*   | j stt | _ t j|i | d S )N)connect_tokenr)   uuiduuid4supersave)r   argsr   	__class__r   r   rD   H   s    zProfile.save)r   r   r   r   OneToOneFieldr   CASCADEr.   r    r%   r&   
ImageFieldr3   Zphotoaddresslanguage	DateFieldZdue_dateBooleanFieldZunsubscribe_emailr@   Zshopify_urlZshopify_tokenZ	charge_idZphone_numberactiver?   rD   __classcell__r   r   rF   r   r4   .   s,   
r4   c                 O   s   t | jv rdnd}tjr$|jjg}ntj}|r~ddtj |j	}tj
|tj|jjdd}td|d}	td	d
t|ddgd}
nTddtj |j	}|jj|tj
tjd}td|d}	tdjdddt|ddgd}
|
|	d |
  dS )a   
	Handles password reset tokens
	When a token is created, an e-mail needs to be sent to the user
	:param sender: View Class that sent the signal
	:param instance: View Instance that sent the signal
	:param reset_password_token: Token Model Object
	:param args:
	:param kwargs:
	:return:
	TFz{}?token={}zhttps://%s/check-registerr(   )
static_urlredirect_url
client_urlr"   is_adminzusers/email/day1_tpl.html)contextzWelcome to Verify TrustedZWelcomezinfo@verifytrusted.comz#verifytrusted.support@sphinxjsc.com)bcczhttps://%s/resetpassword)emailrR   rQ   rS   z!users/email/email_reset_pass.htmlzPassword Reset for {title}zVerify Trusted)titlezReset passwordz	text/htmlN)r   Zpermission_classesr   IS_PRODUCTIONr.   rW   DEFAULT_SEND_TO_EMAILr-   ADMIN_CLIENT_NAMEkeyAWS_S3_CUSTOM_DOMAINCLIENT_NAMEr   r   r   r   attach_alternativesend)senderr1   Zreset_password_tokenrE   r   rT   Zsend_to_emailZreset_password_urlZemail_contexttemplatemsgr   r   r   password_reset_token_createdN   s`    
rd   )r   django.confr   django.contrib.auth.modelsr   django.core.mailr   	django.dbr   django.dispatchr   django.template.loaderr   django.urlsr	   django.utils.translationr
   r!   Z!django_rest_passwordreset.signalsr   Zrest_framework.permissionsr   rA   Zconfig.settings.baser   r   r3   Modelr4   rd   r   r   r   r   <module>   s"    