o
    ff                     @   s4  d dl Z d dlZd dlmZ d dlmZ d dlmZmZm	Z	 d dl
mZmZ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 e jdZe jdZeeeZedd Ze	j dddd Z!e	j dddd Z"e	j dddd Z#dd Z$dd Z%dd Z&dd Z'd d! Z(e(  dS )"    N)Message)	HTTPError)dbmailcelery)User	UserGroupUserHasUserGroup)make_request_with_retry)SendGridAPIClient)Mail)Client)current_app)contextmanagerTWILIO_ACCOUNT_SIDTWILIO_AUTH_TOKENc                  c   s,    t  } |  }|  dV  |  dS )zJContext manager to push and pop Flask app context for use in Celery tasks.N)r   _get_current_objectapp_contextpushpop)appctx r   0/var/www/html/stripe-gateway/tasks/user_tasks.pyuse_app_context   s   r   T)bindc                 C   s   t d t a z1|d d d }|d d d }|d d d d d d d	 }tjd
| d| d|  W n& ty` } zd| }tj| tj	j
|ddd | j|dd }~ww W d    d S 1 slw   Y  d S )Nz%>>> handle_payment_succeeded: {event}dataobjectcustomer_emailcustomer_namelinesr   plannicknamezpayment succeeded for / plan: z*Error processing payment succeeded event: +18444274584+14157864324bodyfrom_toexc)loggingdebugr   r   loggerinfo	Exceptionerrortwilio_clientmessagescreateretry)selfeventemailnamer!   eerrr   r   r   handle_payment_succeeded   s(   
 "
"r=   c           	      C   s\  t d t  zl|d d d }|d d d }|d d d d d d d	 }tjd
| d| d|  tjj|d	 }|sit
|}t||||dd}tj| tj  t|j| t||| nt|j| tj  W n& ty } zd| }tj| tjj|ddd | j|dd }~ww W d    d S 1 sw   Y  d S )Nz(>>> handle_subscription_created: {event}r   r   r   r   r    r   r!   r"   zsubscription created for r#   r$   r9   a)userr9   r:   passwordstatusz-Error processing subscription created event: r%   r&   r'   r+   )r-   r.   r   r   r/   r0   r   query	filter_byfirstgenerate_passwordr   sessionaddcommitadd_user_to_groupsid
send_emailupdate_user_groupsr1   r2   r3   r4   r5   r6   )	r7   r8   r9   r:   r!   r@   rA   r;   r<   r   r   r   handle_subscription_created1   s<   
 

"rN   c                 C   s  t d t y zH|d d d }|d d d }|d d d d d d d	 }tjj|d
 }tj	d|j
 d| d| d|  |rPd|_tj  W n' tyx } ztjd|  tjjd| ddd | j|dd }~ww W d    d S 1 sw   Y  d S )Nz(>>> handle_subscription_deleted: {event}r   r   r   r   r    r   r!   r"   r>   z"subscription deleted for user id #z - r#   r$   iz-Error processing subscription deleted event: r%   z+1234567890r'   r+   )r-   r.   r   r   rC   rD   rE   r   r/   r0   rK   rB   r   rG   rI   r1   r2   r3   r4   r5   r6   )r7   r8   r9   r:   r!   r@   r;   r   r   r   handle_subscription_deletedT   s0   
 &
"rP   c                 C   s8   dd l }td}|| |   }| d d S )Nr   PASSWORD_SALT   )hashlibosgetenvsha256encodedigesthex)r9   rS   salthashedr   r   r   rF   j   s   
rF   c                 C   s   d|v r.t jjdd }t jjdd }tjt| |jd tjt| |jd d S d|v rHt jjdd }tjt| |jd d S d S )NzForbidden Library)
group_namezWhite Rabbit)users_idusers_groups_id)	r   rC   rD   rE   r   rG   rH   r	   rK   )user_idr!   forbidden_groupwhite_rabbit_groupr   r   r   rJ   p   s   rJ   c                 C   s    t jj| d  t| | d S )N)r]   )r	   rC   rD   deleterJ   )r_   r!   r   r   r   rM   z   s   rM   c                 C   s   t d|  dd| d|  d| dd}zttjd}||}t|j t|j t|j	 W d S  t
yJ } zt|j W Y d }~d S d }~ww )	Nznoreply@truthtide.tvz!Welcome to TruthTide Members SitezDear zT,

Your login credentials to https://members.truthtide.tv have been created.
login: z
password: 
)
from_email	to_emailssubjecthtml_contentSENDGRID_API_KEY)r   r   rT   environgetsendprintstatus_coder(   headersr1   message)r9   r:   rA   ro   sgresponser;   r   r   r   rL   ~   s    


rL   c                  C   s(   t j } | D ]
}td|  qdS )z%Function to log all registered tasks.zTask registered: N)r   taskskeysr-   r0   )	all_tasks	task_namer   r   r   log_registered_tasks   s   
rv   ))rT   r-   
flask_mailr   requests.exceptionsr   webhooks.extensionsr   r   r   webhooks.modelsr   r   r	   webhooks.utilsr
   sendgridr   sendgrid.helpers.mailr   twilio.restr   flaskr   
contextlibr   ri   rj   r   r   r3   r   taskr=   rN   rP   rF   rJ   rM   rL   rv   r   r   r   r   <module>   s:   






"


