Ë
    tPêj±  ã                   óŠ   — U d Z ddlZddlmZ ddlmZmZ ddlmZ ddl	m
Z
 dZeed<   d	Zeed
<   ddedz  defd„Zdedefd„Zy)z$
Functions for sending Email Alerts
é    N)ÚFinal)Úverbose_loggerÚverbose_proxy_logger)ÚWebhookEvent)ÚTeamRepositoryz9https://litellm-listing.s3.amazonaws.com/litellm_logo.pngÚLITELLM_LOGO_URLzsupport@berri.aiÚLITELLM_SUPPORT_CONTACTÚteam_idÚreturnc              ƒ   óä  K  — t        j                  d| «       | €g S ddlm} |€t	        d«      ‚t        |«      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   Ú	Exceptionr   ÚtableÚfind_uniqueÚmembers_with_rolesÚ
isinstanceÚdictÚgetÚstrÚappendÚdbÚ	query_raw)r
   r   Úteam_rowÚ_team_membersÚ_team_member_user_idsÚmemberÚ_user_idÚ	sql_queryÚ_resultÚemailsÚusers              úh/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/integrations/email_alerting.pyÚget_all_team_member_emailsr(      sz  è ø€ Ü×ÑÐRÐT[Ô\Ø€Øˆ	Ý8àÐÜÐ.Ó/Ð/ä*¨=Ó9×?Ñ?×KÑKà�wð
ð Ló ÷ €Hð ÐØˆ	à#×6Ñ6€MÜ×ÑØJØØôð
 /1ÐØò 7ˆÚ”j ¬Õ.Ø—z‘z )Ó,ˆHÚœJ x´Õ5Ø%×,Ñ,¨XÕ6ð	7ð€Ið )×+Ñ+×5Ñ5°iÐAVÓW×W€Gä×ÑÐMÈwÔWà€Øˆ	à€FØò 2ˆÚ”J˜t¤TÕ*¨t¯x©x¸ÀdÓ/KÑ/WØ�M‰M˜$Ÿ(™( <Ó0Õ1ð2ð €MðOùð8 XúsN   ‚AE0ÁE+Á4E0ÂE0Â!E0Â5E0Ã4E0Ã:E.Ã;'E0Ä#E0Ä4E0Å%E0Å.E0Ú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Úhtmlr0   r1   r2   )Úreceiver_emailr1   r2   F)Úlitellm.proxy.utilsr+   r
   Ú
team_aliasr   r   ÚosÚgetenvr   r	   r(   ÚjoinÚevent_messageÚ
max_budgetr   ÚwarningÚspend)r)   r+   Ú_team_idr5   Úemail_logo_urlÚemail_support_contactÚrecipient_emailsÚrecipient_emails_strÚ
event_namer:   Úemail_html_contentÚemail_events               r'   Úsend_team_budget_alertrE   D   sŠ  è ø€ õ
 /à#×+Ñ+€HØ%×0Ñ0€JÜ×ÑÐPÐR\Ô]ä—Y‘YÐ1´2·9±9Ð=MÈtÓ3TÓU€NÜŸI™IÐ&=¸tÓDÐð ÐÜ)ˆØÐ$Ü 7ÐÜ$>¸xÓ$H×HÐØ'*§x¡xÐ0@Ó'AÐÜ×ÑÐJÐL`Ôaà%×3Ñ3€JØ%×0Ñ0€JØ4ÐàÐ#Ü×$Ñ$ØaØ ô	
ð
ØÐð !à!+ ð ->à>H¸\ÐIeÐfs×fyÑfyÐezð {8ð 9NÐ7Nð OðÐð  #Ø˜j˜\¨°J°<Ð@Ø"ñ€Kñ Ø" 4Ñ(Ø˜IÑ&Ø˜Ñ ô÷ ð ð ðS IøðFús%   ‚BD<ÂD8ÂBD<Ä2D:Ä3D<Ä:D<)N)Ú__doc__r6   Útypingr   Úlitellm._loggingr   r   Úlitellm.proxy._typesr   Ú$litellm.repositories.team_repositoryr   r   Ú__annotations__r	   r   Úlistr(   ÚboolrE   © ó    r'   ú<module>rP      s_   ðòó 
Ý ç AÝ -Ý ?ð VÐ �%Ó UØ!3Ð ˜Ó 3ñ0¨c°D©jð 0ÀDó 0ðf?°ð ?Àô ?rO   