o
    ưi=                     @   sn   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
dZde	d	efddZdS )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                    s  t d|  | d u rg S ddlm} |d u rtd|jjjd| idI d H }|d u r.g S |j}t d| | g }|D ]}|rVt	|t
rV|d}|rVt	|trV|| q<d	}|j||I d H }t d
| |d u rog S g }	|D ]}
|
rt	|
t
r|
dd d ur|	|
d qs|	S )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: %sZuser_idzi
        SELECT user_email
        FROM "LiteLLM_UserTable"
        WHERE user_id = ANY($1::TEXT[]);
    z2Email Alerting: Got all Emails for team, emails=%sZ
user_email)r   debugZlitellm.proxy.proxy_serverr	   	ExceptiondbZlitellm_teamtableZfind_uniqueZmembers_with_roles
isinstancedictgetstrappendZ	query_raw)r   r	   Zteam_rowZ_team_membersZ_team_member_user_idsmemberZ_user_idZ	sql_query_resultZemailsuser r   Z/home/app/Keep/.python/lib/python3.10/site-packages/litellm/integrations/email_alerting.pyget_all_team_member_emails   sN   

r   webhook_eventc                    s  ddl m} | j}| j}td| tdtdd}tdd}|du r)t}|du r/t	}t
|I dH }d|}td	| | j}| j}	d
}
|du rStd| d| d| d|	 d| j d| d}
|d| d| |
d}||d |d |d dI dH  dS )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=%sZSMTP_SENDER_LOGOZEMAIL_LOGO_URLNZ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   r   )Zreceiver_emailr   r   F)Zlitellm.proxy.utilsr   r   
team_aliasr   r   osgetenvLITELLM_LOGO_URLLITELLM_SUPPORT_CONTACTr   joinZevent_message
max_budgetr   warningZspend)r   r   Z_team_idr   Zemail_logo_urlZemail_support_contactZrecipient_emailsZrecipient_emails_strZ
event_namer%   Zemail_html_contentZemail_eventr   r   r   send_team_budget_alertE   s^   
	r'   )N)__doc__r    typingr   r   Zlitellm._loggingr   r   Zlitellm.proxy._typesr   r"   r#   r   listr   boolr'   r   r   r   r   <module>   s    5