
    ݦi                         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 Zd Z d Z!y)    )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                  $   d } t               d   d   }|dz   }|dz   }t        j                  j                  |      rt	        j
                  |t              } | r| j                  s| r2| j                  r&| j                  r| j                  t                      n,t        j                  |t              }|j                  d      } t        |d      5 }|j!                  | j#                                d d d        t%        dd	| 
      S # 1 sw Y   xY w)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tokens         ;/home/hirelines/hirelines/app_api/functions/email_resume.pygmail_servicer0      s    EU#K0ILLJKKI 
ww~~j!55j&I U]]u':':MM')$#<<6D ))q)1E*c" 	)eKK(	) $E22	) 	)s    DDc            	         	 t               } t               }dj                  |D cg c]
  }d|d     c}      }d| d}| j                         j	                         j                  d|      j                         }|j                  dg       }|sy |D ]{  }| j                         j	                         j                  d|d	   
      j                         }|d   d   }	t        d |	D        d       }
t        |
      \  }t        j                  j                  |d	         j                         r|d   j                  dg       D ]  }|j                  d      s|d   }d}|j                         j                  |      s=|d   d   }| j                         j	                         j!                         j                  d|d	   |      j                         }t#        j$                  |d         }|j                         j                  d      r	 t'        |      }t        fd|D        d       }d }|r}t,        j                  j                  |d	         j/                         }|r|j0                  }n=d|d	   d}t-        ||d   |d   |d	         }|j3                          |j0                  }t        |||d	   |d   d !      }|j3                          t5        |j0                  |j6                  |"      }|j3                           ~ y c c}w # t(        $ r}t+        d| d|        Y d }~d }~ww xY w# t(        $ r*}t+        t9        |             t+        d#|       Y d }~y d }~ww xY w)$Nz OR zfrom:emailzhas:attachment newer_than:1d ()me)userIdqmessagesid)r5   r8   payloadheadersc              3   8   K   | ]  }|d    dk(  s|d     yw)nameFromvalueN ).0hs     r/   	<genexpr>z*fetch_gmail_attachments.<locals>.<genexpr>N   s     PAAfI<OQwZPs   
)mailidpartsfilename)z.pdf.doc.docxbodyattachmentId)r5   	messageIdr8   data)rF   rG   zPDF conversion failed for z: c              3   l   K   | ]+  }|d    j                         j                         k(  s(| - yw)r2   N)lower)r@   u
from_emails     r/   rB   z*fetch_gmail_attachments.<locals>.<genexpr>p   s/      dq1W:;K;K;MQ[QaQaQc;c ds   )44)useridRC03r<   	companyid)codelabelrS   rP   P)sourceidrE   rC   rS   status)resumeidrE   filecontentzSaving resume failed:)r0   r   joinusersr7   listexecutegetnextr
   r   objectsfilterr   rM   endswithattachmentsbase64urlsafe_b64decoder   	Exceptionprintr   lastr8   saver   rE   str)servicefrom_emailsrN   check_user_queryqueryresultsr7   msgmsg_datar:   raw_fromr<   partrE   allowed_extattachment_idatt	file_dataeuserrW   sourcerT   
new_resumeresume_filerO   s                            @r/   fetch_gmail_attachmentsr~   0   sx   g*/(*!;;k'R%'
|(<'RS01A0B!D --/**,11 2 
 ') 	
 ;;z2. O	'C}}//155t9 6  gi 
 y))4GPPRVWH(2D*~~$$CI$6==? !+//< ?'88J'#J/H";K#>>+44[A $(L$@M!--/224@@BFF#"%d)( G  gi	  !' 8 8V EI~~'001BCP(B9(MI   dK dfjkD#H!'!6!6d4j!6!I!N!N!P!'-yyH &(T
2#7D%+%)&*6l*.{*;'+Dz	&F #KKM'-yyH!'#+!)"4y"&{"3""J OO%",!+#-#6#6$-#K
  $$&?'!O	' (Sn  ) P!$>xj1#"NOOPR  *c!f%q))*sa   #M LAM CM  B5M L!C4M M 	M $L;5M ;M  M 	M6 M11M6c                  l    t               } | j                  t        dddd       | j                          y )Ncronr   email_process_hirelinesT)triggerminuter8   replace_existing)r   add_jobr~   start)	schedulers    r/   processEmailsFetchr      s0    #%I-vaLew{|OO    )"
__future__r   r   re   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    r0   r~   r   r?   r   r/   <module>r      sK    %     + 6 2 1 8 ( 5 5 ( A /
:	;38h*Vr   