o
    ނi                     @   s   d dl m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mZ d dlmZ d d	lmZmZ d d
l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gZdd Zdd Z dd Z!dS )    )print_functionN)datetime)settings)build)InstalledAppFlow)Request)Credentials)	parseaddrparsedate_to_datetime)	getConfig)Resume
ResumeFileSource   )getEmailFetchUsers)BackgroundScheduler)convert_word_binary_to_pdfz.https://www.googleapis.com/auth/gmail.readonlyc                  C   s   d } t  d d }|d }|d }tj|rt|t} | r"| jsY| r1| jr1| j	r1| 
t  nt|t}|jdd} t|d}||   W d    n1 sTw   Y  tdd	| d
S )NDIR	root_pathz-/app_api/functions/creds/hirelines/token.jsonz-/app_api/functions/creds/hirelines/creds.jsonr   )portwgmailv1)credentials)r   ospathexistsr   from_authorized_user_fileSCOPESvalidexpiredrefresh_tokenrefreshr   r   from_client_secrets_filerun_local_serveropenwriteto_jsonr   )credsr   
token_path	cred_pathflowtoken r-   7/home/acert/hirelines/app_api/functions/email_resume.pygmail_service   s"   
r/   c                     s  z,t  } t }ddd |D }d| d}|   jd|d }|dg }|s0W d S |D ]}|   jd|d	 d
 }|d d }tdd |D d }	t	|	\}
 t
jj|d	 d req2|d dg D ]}|dr)|d }d}| |sqm|d d }|    jd|d	 |d }t|d }| drzt|}W n ty } ztd| d|  W Y d }~nd }~ww t fdd|D d }d }|rtjj|d	 d }|r|j}nd|d	 d}t||d |d |d	 d }|  |j}t
|||d	 |d d!d"}|  t|j|j|d#}|  qmq2W d S  tyL } ztt| td$| W Y d }~d S d }~ww )%Nz OR c                 S   s   g | ]	}d |d  qS )zfrom:emailr-   .0ur-   r-   r.   
<listcomp>6   s    z+fetch_gmail_attachments.<locals>.<listcomp>zhas:attachment newer_than:1d ()me)userIdqmessagesid)r7   r:   payloadheadersc                 s   s$    | ]}|d  dkr|d V  qdS )nameFromvalueNr-   )r2   hr-   r-   r.   	<genexpr>N   s   " z*fetch_gmail_attachments.<locals>.<genexpr>)mailidpartsfilename)z.pdf.doc.docxbodyattachmentId)r7   	messageIdr:   data)rE   rF   zPDF conversion failed for z: c                 3   s(    | ]}|d       kr|V  qdS )r0   N)lowerr1   
from_emailr-   r.   rA   p   s   & )useridRC03r=   	companyid)codelabelrQ   rN   P)sourceidrD   rB   rQ   status)resumeidrD   filecontentzSaving resume failed:)r/   r   joinusersr9   listexecutegetnextr	   r   objectsfilterr   rK   endswithattachmentsbase64urlsafe_b64decoder   	Exceptionprintr   lastr:   saver   rD   str)servicefrom_emailscheck_user_queryqueryresultsr9   msgmsg_datar<   raw_fromr=   partrD   allowed_extattachment_idatt	file_dataeuserrU   sourcerR   
new_resumeresume_filer-   rL   r.   fetch_gmail_attachments0   s    Qr|   c                  C   s&   t  } | jtddddd |   d S )Ncronr   email_process_hirelinesT)triggerminuter:   replace_existing)r   add_jobr|   start)	schedulerr-   r-   r.   processEmailsFetch   s   r   )"
__future__r   r   rc   r   django.confr   googleapiclient.discoveryr   google_auth_oauthlib.flowr   google.auth.transport.requestsr   google.oauth2.credentialsr   email.utilsr	   r
   hirelines.metadatar   app_api.modelsr   r   r   servicesr   !apscheduler.schedulers.backgroundr   doc2pdfr   r   r/   r|   r   r-   r-   r-   r.   <module>   s$    k