
    ^h=                     r    S r SSKrSSKJrJr  SSKJrJr  SSKJ	r	  Sr
SrSS\\   S	\4S
 jjrS\	S	\4S jrg)z$
Functions for sending Email Alerts
    N)ListOptional)verbose_loggerverbose_proxy_logger)WebhookEventz9https://litellm-listing.s3.amazonaws.com/litellm_logo.pngzsupport@berri.aiteam_idreturnc                 @  #    [         R                  " SU 5        U c  / $ SSKJn  Uc  [	        S5      eUR
                  R                  R                  SU 0S9I S h  vN nUc  / $ UR                  n[         R                  " SU U5        / nU He  nU(       d  M  [        U[        5      (       d  M#  UR                  S5      nU(       d  M=  [        U[        5      (       d  MT  UR                  U5        Mg     S	nUR
                  R                  Xt5      I S h  vN n[         R                  " S
U5        Uc  / $ / n	U HX  n
U
(       d  M  [        U
[        5      (       d  M#  U
R                  SS 5      c  M8  U	R                  U
R                  S5      5        MZ     U	$  GN> N7f)Nz7Email Alerting: Getting all team members for team_id=%sr   )prisma_clientzNot connected to DB!r   )wherez@Email Alerting: Got team members for team_id=%s Team Members: %suser_idzi
        SELECT user_email
        FROM "LiteLLM_UserTable"
        WHERE user_id = ANY($1::TEXT[]);
    z2Email Alerting: Got all Emails for team, emails=%s
user_email)r   debuglitellm.proxy.proxy_serverr   	Exceptiondblitellm_teamtablefind_uniquemembers_with_roles
isinstancedictgetstrappend	query_raw)r   r   team_row_team_members_team_member_user_idsmember_user_id	sql_query_resultemailsusers              ]/home/james-whalen/.local/lib/python3.13/site-packages/litellm/integrations/email_alerting.pyget_all_team_member_emailsr&      s~    A7 	8.//"%%77CCw
 D  H 	//MJ
 (*6j..zz),HxJx55%,,X6	  I "$$..yPPGMwW	F4JtT**txxd/K/WMM$((<01  MO8 QsN   AFF9FF0F
F!5FF,FFF3'FFwebhook_eventc                   #    SSK Jn  U R                  nU R                  n[        R
                  " SU5        [        R                  " S[        R                  " SS5      5      n[        R                  " SS5      nUc  [        nUc  [        n[        U5      I Sh  vN nSR                  U5      n[        R
                  " S	U5        U R                  nU R                  n	S
n
Uc  [        R                  " SU5        SU SU SU	 SU R                    SU S3n
USU SU 3U
S.nU" US   US   US   S9I Sh  vN   g N N7f)zp
Send an Email Alert to All Team Members when the Team Budget is crossed
Returns -> True if sent, False if not.
r   )
send_emailz5Email Alerting: Sending Team Budget Alert for team=%sSMTP_SENDER_LOGOEMAIL_LOGO_URLNEMAIL_SUPPORT_CONTACT,z/Email Alerting: Sending team budget alert to %szAlert from LiteLLM ServerzSEmail Alerting: Trying to send email alert to no recipient, got recipient_emails=%sz
    <img src="za" alt="LiteLLM Logo" width="150" height="50" /> <br/><br/><br/>

    Budget Crossed for Team <b> zP </b> <br/> <br/>

    Your Teams LLM API usage has crossed it's <b> budget of $z </b>, current spend is <b>$z</b><br /> <br />

    API requests will be rejected until either (a) you increase your budget or (b) your budget gets reset <br /> <br />

    If you have any questions, please send an email to zA <br /> <br />

    Best, <br />
    The LiteLLM team <br />
    zLiteLLM z
 for Team )tosubjecthtmlr.   r/   r0   )receiver_emailr/   r0   F)litellm.proxy.utilsr)   r   
team_aliasr   r   osgetenvLITELLM_LOGO_URLLITELLM_SUPPORT_CONTACTr&   joinevent_message
max_budgetr   warningspend)r'   r)   _team_idr3   email_logo_urlemail_support_contactrecipient_emailsrecipient_emails_str
event_namer:   email_html_contentemail_events               r%   send_team_budget_alertrE   E   s    
 /$$H))J? YY1299=Mt3TUNII&=tD )$ 77AA #)9 :9;O ,,J))J4#$$a 	

 !!+ ->>H\Iefsfyfyez {8 9N7N O  #j\J<@"K "4(I&    W BJs%   BED>BE8E 9E E)N)__doc__r4   typingr   r   litellm._loggingr   r   litellm.proxy._typesr   r6   r7   r   listr&   boolrE        r%   <module>rN      sU    
 ! A - O , 2hsm 2t 2jC C CrM   