
    g=(                         d dl mZ d dlZd dlZ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ZddZdd	Zdd
ZddZd Zd Zd ZddZy)    )openN)CronTrigger)database)helpers)logger)newslettersc                     |st        j                  d       y d| |d}|j                  |       t        j                  j                  |       y )NzCTautulli NewsletterHandler :: Notify called but no action received.T)
newsletternewsletter_idnotify_action)r   debugupdateplexpyNOTIFY_QUEUEput)r   r   kwargsdatas       */opt/Tautulli/plexpy/newsletter_handler.pyadd_newsletter_eachr   #   sG    Z[**,D 	KK
D!    c           	         t        j                  |       }|D ]n  }dj                  |d   |d         }|d   r/t        dj                  |d         |t        |d   dg|d   	       Ot        dj                  |d         |d
       p y )Nr   z{} (newsletter_id {})agent_labelidactiveznewsletter-{}on_croncron)namefuncargsr   T)r   
remove_job)r   get_newslettersformatschedule_newsletter_jobr   )r   newsletters_listr
   newsletter_job_names       r   schedule_newslettersr'   /   s    "22O& 5
5<<Z=VXbcgXhih#O$:$::d;K$LSf)<JtDTV_C`gqrxgy{ $O$:$::d;K$LSf/355r   c                 (   |rMt        j                  |      }|d   j                         rt        t	        |d         dz
  dz        n|d   |d<   t
        j                  |       r|r.t
        j                  |        t        j                  d|z         y 	 t
        j                  | |t        d   |d   |d   |d   |d         	       t        j                  d
|z         y |sQ	 t
        j                  ||| t        d   |d   |d   |d   |d         d        t        j                  d|z         y y # t        $ r"}t        j                  d|z         Y d }~y d }~ww xY w# t        $ r"}t        j                  d|z         Y d }~y d }~ww xY w)N         z>Tautulli NewsletterHandler :: Removed scheduled newsletter: %sr         )minutehourdaymonthday_of_week)r    triggerz9Tautulli NewsletterHandler :: Re-scheduled newsletter: %szBTautulli NewsletterHandler :: Failed to re-schedule newsletter: %s)r    r   r3   misfire_grace_timez6Tautulli NewsletterHandler :: Scheduled newsletter: %sz?Tautulli NewsletterHandler :: Failed to schedule newsletter: %s)shlexsplitisdigitstrintNEWSLETTER_SCHEDget_jobr!   r   inforeschedule_jobr   
ValueErrorerroradd_job)newsletter_job_idr   r   r!   r    r   valueses           r   r$   r$   =   s   T"5;AY5F5F5HCVAY!+q01fUViq	 12''(9:KKX[__`g //%D+%ayvayfQivVWyflmnfo; 0 
 WZ^^_ 		`$$4$5{!!96!9&)6RS9bhijbk@ $(	 %  KKPSWWX   gadeeffg  	`LLZ]^^__	`s2   AD8 'AE& 8	E#EE#&	F/FFc                 *   t        j                  d| z         t        j                  |       }|sy |dv rL|j	                  dd       xs |d   }|j	                  dd       xs |d   }|j	                  dd       xs |d   }n|d   }|d   }|d   }t
        j                  j                         }t        | |      }t        j                  | |d   |d	   |d
   |d   |||||
      }	t        |||	j                  |	j                  |	j                  |	j                  |	j                  j!                  d      |	j"                  j!                  d      |	j$                  |	j&                  |	j(                  |      }
|	j+                         }|rt-        |
       yy )NzHTautulli NewsletterHandler :: Preparing newsletter for newsletter_id %s.r   )testapisubjectbodymessage)r   r   id_nameagent_idconfigemail_config)
r   newsletter_id_namerK   rL   rM   rG   rH   rI   email_msg_idemail_reply_msg_idz
YYYY-MM-DD)r
   r   rG   rH   rI   filename
start_dateend_date
start_timeend_timenewsletter_uuidrO   T)r   r<   r   get_newsletter_configpopemailutils
make_msgid get_last_newsletter_email_msg_idget_agent_classset_notify_statesubject_formattedbody_formattedmessage_formattedfilename_formattedrR   r#   rS   rT   rU   uuidsendset_notify_success)r   r   r   newsletter_configrG   rH   rI   rO   rP   newsletter_agentnewsletter_log_idsuccesss               r   notifyrj   ^   s   
KKZ]jjk#99V'**Y-M1B91Mzz&$'D+<V+D**Y-M1B91M#I. (#I.;;))+L9ers"22FWXaFb<Mj<Y:KH:U@QR`@a;B8<;B@LFX
5 )4E7D1A1S1S.>.M.M1A1S1S2B2U2U4D4O4O4V4VWc4d2B2K2K2R2RS_2`4D4O4O2B2K2K9I9N9N6BD ##%G,- r   c                    | rj|rht        j                         }t        j                         |
d}| d   | d   | d   ||||||||	||d}|j	                  d||       |j                         S t        j                  d       y )	N)	timestamprc   r   rK   
agent_name)r   rK   rm   r   subject_text	body_textmessage_textrR   rS   rT   rU   rO   rQ   newsletter_log
table_namekey_dict
value_dictz9Tautulli NewsletterHandler :: Unable to set notify state.)r   MonitorDatabaser   rl   upsertlast_insert_idr   r?   )r
   r   rG   rH   rI   rQ   rR   rS   rT   rU   rV   rO   dbkeysrB   s                  r   r^   r^      s     m%%'$..0') $.d#3(4 *< 8#0")#") *& *&".&( 			-	P  ""PQr   c                 d    d| i}ddi}t        j                         }|j                  d||       y )Nr   ri   r*   rq   rr   )r   rv   rw   )rh   rz   rB   ry   s       r   re   re      s7    #$D^F		!	!	#BII)DVILr   c                 b    t        j                         }|j                  d| |g      }|r|d   S y )NzSELECT email_msg_id FROM newsletter_log WHERE newsletter_id = ? AND notify_action = ? AND success = 1 ORDER BY timestamp DESC LIMIT 1rO   )r   rv   select_single)r   r   ry   results       r   r\   r\      sE    		!	!	#B @BOQ^A_aF n%% r   c                    t        j                         }| r|j                  d| g      }n|r|j                  d|g      }nd }|r|d   } |d   }|d   }|d   xs, d|j                  dd	      d|j                  dd	      d
| d}t        j
                  j                  xs. t        j                  j                  t        j                  d      }t        j                  j                  ||      }|t        j                  |      v r*	 t        |dd      5 }	|	j                         }
d d d        |
S t        j"                  d|z         y y # 1 sw Y   
S xY w# t        $ r%}t        j                   d| d|       Y d }~y d }~ww xY w)NzNSELECT start_date, end_date, uuid, filename FROM newsletter_log WHERE uuid = ?zSELECT start_date, end_date, uuid, filename FROM newsletter_log JOIN newsletters ON newsletters.id = newsletter_log.newsletter_id WHERE id_name = ? AND notify_action != 'test' ORDER BY timestamp DESC LIMIT 1rc   rR   rS   rQ   newsletter_- _z.htmlr   rzutf-8)encodingz=Tautulli NewsletterHandler :: Failed to retrieve newsletter 'z': z>Tautulli NewsletterHandler :: Newsletter file '%s' is missing.)r   rv   r}   replacer   CONFIGNEWSLETTER_DIRospathjoinDATA_DIRlistdirr   readOSErrorr   r?   warn)rV   rN   ry   r~   rR   rS   newsletter_filenewsletter_foldernewsletter_file_fpn_filer
   rC   s               r   get_newsletterr      s   		!	!	#B!! #35D4EG	!! #D GYEY[
  .L)
*% , _jN`N`adfhNiNVN^N^_bdfNgN]1_ #MM88hBGGLLZg<hWW\\*;_Mbjj):;;|,cGD /!'J/!! KKX[jjk' /!! |gvxyz{{|s6   
E E)	E EE E 	F#FF)NN)N)r   NFNN)ior   r   r5   apscheduler.triggers.cronr   email.utilsrY   r   r   r   r   r   r:   r   r'   r$   rj   r^   re   r\   r    r   r   <module>r      s[   $  	  1        	"5`B3lR:M&!lr   