
    <UhM9                         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
Z
d dlZ ej        e          ZddZd dlZd dl Z d Zd	d
lmZ ddZd dlmZ d dlmZ d dlZd dlZd Zd Zd Zd Zd Zd ZdS )    N)settings)render_to_string)EmailMessage)sync_to_async   c                 |    t           j        d                    fdt          |           D                       }|S )N c              3   @   K   | ]}t          j                  V  d S Nrandomchoice).0_
characterss     ,/var/www/html/e360mart/login_signup/utils.py	<genexpr>zgenerate_otp.<locals>.<genexpr>Z   s-      CC&-
++CCCCCC    )stringdigitsjoinrange)lengthotpr   s     @r   generate_otpr   X   s;    J
''CCCCU6]]CCC
C
CCJr   c                      d} t           j        t           j        z   t           j        z   d                    fdt          |           D                       }|S )N   r	   c              3   @   K   | ]}t          j                  V  d S r   r   )r   ir   s     r   r   z+generate_strong_password.<locals>.<genexpr>e   s-      HHQv}Z00HHHHHHr   )r   ascii_lettersr   punctuationr   r   )r   passwordr   s     @r   generate_strong_passwordr#   b   sP    F%58JJJwwHHHH%--HHHHHHOr      )User   c                     	 d                     t          j        t          j        t          j        z   |                     }t          j                            |          	                                s|S u)NTr	   )k)referral_code)
r   r   choicesr   ascii_uppercaser   r%   objectsfilterexists)r   codes     r   generate_unique_referral_coder0   k   sc    wwv~f&<v}&LPVWWWXX|"""66==?? 	Kr   )SendGridAPIClient)Mailc                    d}dt           j         dd}dd| d         igigdt           j        i| d         d	| d
         dgd}	 t          j        ||t          j        |                    }|j        dk    rd|j        |j        |j	        dS d|j        |j        dS # t          $ r}dt          |          dcY d }~S d }~ww xY w)N%https://api.sendgrid.com/v3/mail/sendBearer application/jsonAuthorizationzContent-Typetoemailto_emailsubjectz
text/plainbodytypevaluepersonalizationsfromr<   contentheadersdata   successstatusstatus_coder=   rF   errorrK   rL   r=   rK   rM   r   SENDGRID_API_KEYDEFAULT_FROM_EMAILrequestspostjsondumpsrL   textrF   	ExceptionstrrG   urlrF   
email_dataresponsees         r   send_email_to_clientr_      sP   
1C>8#<>>* G j!1
 X0
 	? %f 
 J,
=gDJz<R<RSSS3&&#'3 #+	   "'3   
  
 
 
VV
 
 	
 	
 	
 	
 	
 	

%   A	B B 
C)C :C Cc                    d}dt           j         dd}dd| d         igigdt           j        i| d         d	| d
         dgd}	 t          j        ||t          j        |                    }|j        dk    rd|j        |j        |j	        dS d|j        |j        dS # t          $ r}dt          |          dcY d }~S d }~ww xY w)Nr4   r5   r6   r7   r9   r:   r;   r<   	text/htmlr=   r>   rA   rE   rH   rI   rJ   rM   rN   rO   rP   rZ   s         r   
send_emailrc      sP   
1C>8#<>>* G j!1
 X0
 	? $f 
 J,
=gDJz<R<RSSS3&&#'3 #+	   "'3   
  
 
 
VV
 
 	
 	
 	
 	
 	
 	

r`   c                    t          dd| d         i          }d}dt          j         dd}dd| d	         igigdt          j        i| d
         d|dgd}	 t	          j        ||t          j        |                    }|j        dk    rd|j        |j	        |j
        dS d|j        |j	        dS # t          $ r}dt          |          dcY d }~S d }~ww xY w)Nzotp.htmlr   r4   r5   r6   r7   r9   r:   r;   r<   rb   r>   rA   rE   rH   rI   rJ   rM   rN   rO   r   r   rQ   rR   rS   rT   rU   rV   rL   rW   rF   rX   rY   rG   html_contentr[   rF   r\   r]   r^   s          r   send_email_otprh      sm   ":tE{0  L 2C>8#<>>* G j!1
 X0
 	? $% 
 J,
=gDJz<R<RSSS3&&#'3 #+	   "'3   
  
 
 
VV
 
 	
 	
 	
 	
 	
 	

%   A	B1 !B1 1
C;CCCc                    t          dd| d         i          }d}dt          j         dd}dd	| d
         igigd	t          j        i| d         d|dgd}	 t	          j        ||t          j        |                    }|j        dk    rd|j        |j	        |j
        dS d|j        |j	        dS # t          $ r}dt          |          dcY d }~S d }~ww xY w)Nzadminapprove.htmlvendor_namenamer4   r5   r6   r7   r9   r:   r;   r<   rb   r>   rA   rE   rH   rI   rJ   rM   rN   rO   re   rf   s          r   send_approval_emailrm   ,  sp    $$7tF|:  L 2C>8#<>>* G j!1
 X0
 	? $% 
 J,
=gDJz<R<RSSS3&&#'3 #+	   "'3   
  
 
 
VV
 
 	
 	
 	
 	
 	
 	

ri   c                    t          dd| d         i          }d}ddd}dd| d	         igigdt          j        i| d
         d|dgd}	 t          j        ||t          j        |                    }|j        dk    rd|j        |j        |j	        dS d|j        |j        dS # t          $ r}dt          |          dcY d }~S d }~ww xY w)Nzaccountverify.htmlrl   r4   zLBearer SG.X2zhTl38T1CEj4N3qXi7QA.QHAUN5dxvO9F3IHOBYlX-uLtFZLmeQtUZWuwxTaLfAQr6   r7   r9   r:   r;   r<   rb   r>   rA   rE   rH   rI   rJ   rM   rN   rO   )r   r   rR   rS   rT   rU   rV   rL   rW   rF   rX   rY   rf   s          r   send_user_verifyro   b  se    $$8V;  L 2Cg* G j!1
 X0
 	? $% 
 J,
=gDJz<R<RSSS3&&#'3 #+	   "'3   
  
 
 
VV
 
 	
 	
 	
 	
 	
 	

s%   
A	B$ B$ $
C
.C?C
C
c           	         	 t                               d|             d|i}d}t          d|          }t          t          j        | ||          }t          t          j                  }|                    |          }t                               d|  d           d S # t          $ r8}t           
                    d|  d	t          |                      Y d }~d S d }~ww xY w)
Nz)Preparing withdraw opt email for vendor: r   zWithdrawal OTP Verificationzwithdrawal_otp_email.html)
from_email	to_emailsr<   rg   zOtp sent to z for withdraw requestz/Error sending otp for withdraw email to vendor z: )loggerinfor   r2   r   rR   r1   rQ   sendrX   	exceptionrY   )	vendor_emailr   contextr<   email_contentmessagesgr]   r^   s	            r   send_withdraw_otp_emailr|     s   eNNNOOO 3
 1()DgNN2"&	
 
 
 x899777##F<FFFGGGGG e e ec<cc[^_`[a[accdddddddddes   BB   
C"*-CC")r   )r&   ) r   r   django.confr   django.template.loaderr   django.core.mailr   asgiref.syncr   asynciologging	getLogger__name__rs   r   r#   modelsr%   r0   sendgridr1   sendgrid.helpers.mailr2   rS   rU   r_   rc   rh   rm   ro   r|    r   r   <module>r      s     !           3 3 3 3 3 3 ) ) ) ) ) ) & & & & & &  		8	$	$V                 ' & & & & & & & & & & &8  0
 0
 0
f0
 0
 0
d3
 3
 3
j5
 5
 5
l5
 5
 5
pe e e e er   