3
؀h#                 @   s  d dl mZmZmZmZmZmZmZmZ d dl	m	Z	m
Z
mZ d dlmZmZ d dlmZ d dlZd dlZd dlZd dlZd dlZd dljZ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"T dd Z#ej$ddd Z%ej$ddd Z&dd Z'ej$ddd Z(dS )    )Flaskjsonifyrender_templateurl_forrequestredirectjsonmake_response)datetime	timedeltadate)
SalesforceSalesforceLogin)
exceptionsN)app)db)SalesforceDetails)SalesforceCode)*c             C   s   | j j  d S )N)sessionclose)self r   ,/booking_service/app/routes/callback_urls.pyr      s    r   z	/callbackc              C   s   t j} tj| }tj|jd d }tjjtjtj	d kj
 }|rTd|_	tj |_t|tj d}tjj| yt| W n( tk
r } ztt|S d }~X nX ytjj  tt W n& tk
r   tjj  tt Y nX tdddS )Ncoder      )salesforce_code
created_atz4https://bookings.olpejetaconservancy.org/sales-forcei.  )r   )r   urlurlparseparse_qsqueryr   r   r   filterdeletion_markerfirstr
   now
updated_ataddgetSalesforceToken	Exceptionr   strcommitr   rollbackr   )r   parsedr   get_codeZsf_codeer   r   r   salesforceCallback   s.    



r0   z/salesforce/authenticatec              C   s.   t jdjtjd tjd tjd d} | jS )Nzhttps://olpejeta.my.salesforce.com/services/oauth2/authorize?client_id={}&client_secret={}&redirect_uri={}&grant_type=authorization_code&response_type=code&scope={}SF_CONSUMER_KEYSF_CONSUMER_SECRETSF_REDIRECT_URIzfull refresh_token)requestsgetformatr   configcontent)r   r   r   r   authenticateSalesforce>   s    (r9   c             C   s  dt jd | t jd t jd d}ddi}tjd||d	}tjjtjtj	d kjtj
| kj }|j }y"|d
 |_|d |_|d |_W n. tk
r } ztt|W Y d d }~X nX ytjj  tt W nB tk
r } z$tjj  tt tt|W Y d d }~X nX d S )NZauthorization_coder3   r1   r2   )
grant_typeZredirect_urir   	client_idclient_secretzcontent-typez!application/x-www-form-urlencodedz8https://olpejeta.my.salesforce.com/services/oauth2/token)dataheadersaccess_tokenrefresh_tokeninstance_url)r   r7   r4   postr   r   r!   r   r"   r#   r   r$   r   r?   r@   rA   r)   r*   r+   r   r,   )r   	json_datar>   get_sf_detailsr.   Z
sf_detailsr/   r   r   r   r(   G   s0    



r(   z/salesforce/accessc              C   s   t jjtjtjd kj } | j}| j}| j	}t
||d}y|jd}|d }d}W n tjk
rn   d}Y nX |rd|tjd tjd d	}d
di}	tjd||	d}
|
j d }||d}t|dfS )N)rA   
session_idzSELECT Id FROM Contact LIMIT 1recordsFTr@   r1   r2   )r:   r@   r;   r<   zcontent-typez!application/x-www-form-urlencodedz8https://olpejeta.my.salesforce.com/services/oauth2/token)r=   r>   r?   )r?   rA      )r   r   r!   r   r"   r#   r$   r?   r@   rA   r   sf_exceptionsSalesforceExpiredSessionr   r7   r4   rB   r   r   )get_detailsr?   r@   rA   sf	is_recordrecordZexpired_sessionrC   r>   Zget_refresh_detailsr=   r   r   r    return_salesforce_access_detailsz   s.    

rN   ))flaskr   r   r   r   r   r   r   r	   r
   r   r   simple_salesforcer   r   r   rH   pymysqlosmathr4   uuidurllib.parseparser   base64	tracebackroutesr   r   database.callback_detailsr   database.salesforce_coder   functions.validationr   router0   r9   r(   rN   r   r   r   r   <module>   s"   ((
&	3