o
    ނi*                     @   s   d dl Z d dlZd dl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 d d	lmZ d d
lmZ d dlmZ d dlmZmZmZ dgZdd ZdddZdS )    N)timezone)	getConfig)Request)Credentials)InstalledAppFlow)build)encoders)MIMEText)MIMEBase)MIMEMultipart)BrandingCompanyEmail_templatez*https://www.googleapis.com/auth/gmail.sendc              
   C   s  zt  d d }t  d }| |d  }| |d  }|d }t|ddd	}| }W d    n1 s7w   Y  |d
| d d| d d| d d| d }d }tj|rdt|t	}|ri|j
s|rx|jrx|jrx|t  nttt	}	|	jdd}t|d}||  W d    n1 sw   Y  tdd|d}
td}| d |d< d|d  d|d< d|d< t|d }|| td!d"}t| |d#d! t|  }d$|i}|
  ! j"d%|d&#  W d S  t$y } z d }~ww )'NDIR	root_pathSEND_EMAIL_CONFIGcredstokenz4/app_api/functions/email_templates/registration.htmlrzutf-8)encodingz[user_name]namez[user_email]emailz[user_password]passwordz[login_url]urlr   portwgmailv1credentialsmixedTozHirelines <sender>Fromz*Welcome to Hirelines! Your Account DetailsSubjecthtml plainzContent-Transfer-EncodingrawmeuserIdbody)%r   openreadreplaceospathexistsr   from_authorized_user_fileSCOPESvalidexpiredrefresh_tokenrefreshr   r   from_client_secrets_filecredrun_local_serverwriteto_jsonr   r   r	   attachr   encode_base64
add_headerbase64urlsafe_b64encodeas_bytesdecodeusersmessagessendexecute	Exception)	mail_datar   email_configr   r   template_file_pathtemplate_fileemail_template
email_bodyflowservicemessage	emailbodyeml_atchencoded_messagecreate_draft_request_bodye rZ   2/home/acert/hirelines/app_api/functions/mailing.pysendRegistrainMail   sZ   






 r\   c           :   
   C   sL  zd}t  d d }t  d }	| |	d  }
| |	d  }d }tj|r.t|t}|r3|jsj|rB|jrB|j	rB|
t  nt|
t}|jdd}t|d	}||  W d    n1 sew   Y  td
d|d}tjj| d }tjj| d}|r|}ntjjdd}d}|rtjj|| |d}ntjj|| d}|r|rtjj|| |d}ntjj|| d}n|rtjj|d|d}ntjj|dd}|jr|jn|j}|dkrdd |dD }|d }d|dd  }n|}|	d }|}td}|r|jnd|d< | d| d|d< ||d< |dkr ||d< |r&|j nd}|r.|j!nd}tjj| d } |rL|" D ]\}}|#||}q@|rR|j$nd}t%&d |}|rb|'dnd } |j(rk|j(nd}!i }"t%)d!}#|#*|!D ]}|+ \}$}%|%, |"|$< qy|j-r|j-nd}&|#d"| #d#|j.rt/|j.nd#d$|#d%|&#d&|"d'r|"d'nd(#d)|"d*r|"d*nd(#d+|"d,r|"d,nd(#d-|"d.r|"d.nd(}d/| d0}'t0|'d1}(|1|( |d ur|})|)2t34d2})|)j#t34d2d3}*t4j5d4d5}+|)|+ j#t34d2d3},t46 7d6}-|*7d6}.|,7d6}/d7| }0d8| j8 d9 | d: }1d;| d< | d= | | }2d>| d? | d@ | dA | }3|3dB| dC | 7 }3|3dD| dE | dF | dG | dH | dI | dJ | 7 }3|3dK| dL | dM |. | dN |/ | dO |- | |1 | 7 }3|3dP|- | 7 }3|3|2dQ |- | |0 dR |- | dS | dT | dU | 7 }3|3dV| dW | dX | dY | 7 }3dZ}4t0|3d[}5td\}6|1|6 |61|5 t9:|; < }7d]|7i}8|= > j?d^|8d_@  W d S  tAy% }9 ztBt/|9  d }9~9ww )`Nz
r   r   r   r   r   r   r   r   r   r   r   )	companyid)idr(   )event
company_id
paper_type)r_   r`   Call_Schedulec                 S   s   g | ]}|  qS rZ   )strip).0r   rZ   rZ   r[   
<listcomp>   s    zsendEmail.<locals>.<listcomp>,z,    r#   r!   r&   z <r$   r%   r"   Ccz--brand-primary-color:\s*(.*?);z6(Linkedin|Facebook|Youtube|Twitter)\s*:\s*(.*?)(?:,|$)z[clr_primary]z[logo]z	[heading]z[company_website]z
[Linkedin]Linkedin#z
[Facebook]Facebookz	[Youtube]Youtubez	[Twitter]Twitterz
            z	
        r'   zAsia/Kolkata)tzinfo   )minutesz%Y%m%dT%H%M%SzDESCRIPTION: exam invitationzORGANIZER;CN=z:mailto:firstz @gmail.comzKATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=ACCEPTED;RSVP=TRUEz ;CN=z mailto:zBEGIN:VCALENDARzPRODID:pyICSParserzVERSION:2.0zCALSCALE:GREGORIANzBEGIN:VTIMEZONEzTZID:Asia/KolkatazBEGIN:STANDARDzDTSTART:19700101T000000zTZOFFSETFROM:+0530zTZOFFSETTO:+0530z
TZNAME:ISTzEND:STANDARDzEND:VTIMEZONEzMETHOD:REQUESTzBEGIN:VEVENTzDTSTART:zDTEND:zDTSTAMP:zUID:FIXMEUIDzCREATED:zLAST-MODIFIED:z	LOCATION:z
SEQUENCE:0zSTATUS:CONFIRMEDzSUMMARY:Exam invitation zTRANSP:OPAQUEz
END:VEVENTzEND:VCALENDARz[
.ics file will be visible in the invite of outlook and outlook.com but not google calendarzcalendar;method=REQUESTalternativer*   r+   r,   )Cr   r2   r3   r4   r   r5   r6   r7   r8   r9   r:   r   r   r;   r=   r/   r>   r?   r   r   objectsfilterlastr   getr   sender_labelr   splitjoinr   email_subjectrQ   template_headingitemsr1   contentresearchgroupsociallinkscompilefinditergroupsrc   websitelogourlstrr	   r@   
astimezonepytzr   	timedeltanowstrftimecompany_namerC   rD   rE   rF   rG   rH   rI   rJ   rK   print):companyra   participant_paper_idr_   replacementsto_emailcalender_detailsCRLFr   rM   
creds_pathr   r   rR   token1rS   brandcompany_objrP   checkrv   
email_listcc_recipientssender_emailreceiver_emailrT   rQ   rz   placeholdervaluecssmatchbrand_primary_colorsocial_linksocial_linkssocial_links_patternplatformr   company_websitehtml_contentrU   cal_timeexamdtstartdur	examdtenddtstampdtstartdtenddescription	organizerattendeeicaleml_bodypart_calmsgAlternativerW   rX   rY   rZ   rZ   r[   	sendEmailU   s   








 <@<$


 r   )N) r2   rC   r}   r   	mimetypesdjango.utilsr   hirelines.metadatar   google.auth.transport.requestsr   google.oauth2.credentialsr   google_auth_oauthlib.flowr   googleapiclient.discoveryr   r   r   email.mime.textr	   email.mime.baser
   email.mime.multipartr   app_api.modelsr   r   r   r6   r\   r   rZ   rZ   rZ   r[   <module>   s&    >