Ë
    Ýªg=  ã                   ól   — d Z ddlZddlmZmZ ddlmZmZ ddlm	Z	 dZ
dZddee   d	efd
„Zde	d	efd„Zy)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              ƒ   óæ  K  — t        j                  d| «       | €g S ddlm} |€t	        d«      ‚|j
                  j                  j                  d| i¬«      ƒ d {  –—† }|€g S |j                  }t        j                  d| |«       g }|D ]L  }|sŒt        |t        «      sŒ|j                  d«      }|sŒ+t        |t        «      sŒ<|j                  |«       ŒN d	}|j
                  j                  ||«      ƒ d {  –—† }t        j                  d
|«       |€g S g }	|D ]I  }
|
sŒt        |
t        «      sŒ|
j                  dd «      €Œ*|	j                  |
j                  d«      «       ŒK |	S 7 Œ7 Œs­w)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              úX/var/www/openai/venv/lib/python3.12/site-packages/litellm/integrations/email_alerting.pyÚget_all_team_member_emailsr&      st  è ø€ Ü×ÑØAÀ7ôð €Øˆ	Ý8àÐÜÐ.Ó/Ð/à"×%Ñ%×7Ñ7×CÑCàwð
ð Dó ÷ €Hð ÐØˆ	à×/Ñ/€MÜ×ÑØJØØôð
 (*ÐÛˆÚ”j ¬Õ.Ø—z‘z )Ó,ˆHÚœJ x´Õ5Ø%×,Ñ,¨XÕ6ð	  ð€Ið "×$Ñ$×.Ñ.¨yÐ:OÓP×P€Gä×ÑÐMÈwÔWà€Øˆ	à€FÛˆÚ”J˜t¤TÕ*¨t¯x©x¸ÀdÓ/KÑ/WØM‰M˜$Ÿ(™( <Ó0Õ1ð ð €MðOùð8 QúsN   ‚AE1ÁE,Á4E1ÂE1Â"E1Â6E1Ã4E1Ã;E/Ã<'E1Ä$E1Ä5E1Å%E1Å/E1Úwebhook_eventc              ƒ   ó|  K  — ddl m} | j                  }| j                  }t	        j
                  d|«       t        j                  dt        j                  dd«      «      }t        j                  dd«      }|€t        }|€t        }t        |«      ƒ d{  –—† }dj                  |«      }t	        j
                  d	|«       | j                  }| j                  }	d
}
|€t        j                  d|«       d|› d|› d|	› d| j                   › d|› d}
|d|› d|› |
dœ} ||d   |d   |d   ¬«      ƒ d{  –—†  y7 Œ¢7 Œ­w)z|
    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Ü×ÑØ?Àôô —Y‘YÐ1´2·9±9Ð=MÈtÓ3TÓU€NÜŸI™IÐ&=¸tÓDÐð ÐÜ)ˆØÐ$Ü 7ÐÜ7¸ÓA×AÐØ #§¡Ð)9Ó :ÐÜ×ÑØ9Ð;Oôð ×,Ñ,€JØ×)Ñ)€JØ4ÐàÐ#Ü×$Ñ$ØaØ ô	
ð
ØÐð !à!+ ð ->à>H¸\ÐIeÐfs×fyÑfyÐezð {8ð 9NÐ7Nð OðÐð  #Ø˜j˜\¨°J°<Ð@Ø"ñ€Kñ Ø" 4Ñ(Ø˜IÑ&Ø˜Ñ ô÷ ð ð ðW BøðJús%   ‚BD<ÂD8ÂBD<Ä2D:Ä3D<Ä:D<)N)Ú__doc__r4   Útypingr   r   Úlitellm._loggingr   r   Úlitellm.proxy._typesr   r6   r7   r   Úlistr&   ÚboolrE   © ó    r%   Ú<module>rN      sU   ðñó 
ß !ç AÝ -ð OÐ Ø,Ð ñ2¨h°s©mð 2Àtó 2ðjC°ð CÀô CrM   