
    h              
           d dl mZmZmZ d dlmZmZmZmZm	Z	 d dl
mZ de	defdZde	dedefdZd	eeef   d
ededdfdZdededee   dee   de	f
dZy)    )AnyUnionOptional)GenerateKeyRequest1LiteLLM_ManagementEndpoint_MetadataFields_PremiumLiteLLM_TeamTableLitellmUserRolesUserAPIKeyAuth)_premium_user_checkuser_api_key_dictreturnc                 z    | j                   t        j                  k(  xs | j                   t        j                  k(  S )N)	user_roler	   PROXY_ADMINPROXY_ADMIN_VIEW_ONLY)r   s    k/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/proxy/management_endpoints/common_utils.py_user_has_admin_viewr      s7    ##'7'C'CC 	Q&&*:*P*PP    team_objc                     |j                   D ]:  }|j                  |j                  | j                  k(  s*|j                  dk(  s: y y)NadminTF)members_with_rolesuser_idrole)r   r   members      r   _is_user_team_adminr      sD     --NN&6>>=N=V=V+VkkW$	 . r   object_data
field_namevalueNc                 p    |t         v r
t                | j                  xs i | _        || j                  |<   y)z
    Helper function to set metadata fields that require premium user checks

    Args:
        object_data: The team data object to modify
        field_name: Name of the metadata field to set
        value: Value to set for the field
    N)r   r   metadata)r   r   r   s      r   _set_object_metadata_fieldr"       s6     FF&//52K',K$r   team_idr   
max_budgetexisting_budget_idc                  K   |/| j                   j                  d||didddii       d{    y|r*| j                  j                  d|id	|i       d{    y| j                  j                  ||j                  xs d
|j                  xs d
dddi       d{   }| j                   j                  d||di||dd|j                  iidddd|j                  iiid       d{    y7 7 7 X7 w)aC  
    Helper function to Create/Update or Delete the budget within the team membership
    Args:
        tx: The transaction object
        team_id: The ID of the team
        user_id: The ID of the user
        max_budget: The maximum budget for the team
        existing_budget_id: The ID of the existing budget, if any
        user_api_key_dict: User API Key dictionary containing user information

    If max_budget is None, the user's budget is removed from the team membership.
    If max_budget exists, a budget is updated or created and linked to the team membership.
    Nuser_id_team_id)r   r#   litellm_budget_table
disconnectT)wheredata	budget_idr$    )r$   
created_by
updated_byteam_membership)r+   includeconnect)r   r#   r(   )createupdate)litellm_teammembershipr4   litellm_budgettabler3   r   upsertr,   )txr#   r   r$   r%   r   
new_budgets          r   _upsert_budget_and_membershipr:   3   sq    , ''..$'g&NO(<*>? / 
 	
 	
 	$$++ 23
+ , 
 	
 	
 	 --44$+339r+339r

 #D) 5  J 
#
#
*
*"" 
 #"Z-A-AB) 'Z-A-AB)
 +   1	
	
sG   ,C?C7+C?C9AC?"C;#AC?1C=2C?9C?;C?=C?)typingr   r   r   litellm.proxy._typesr   r   r   r	   r
   litellm.proxy.utilsr   boolr   r   strr"   floatr:    r   r   <module>rB      s    ' '  4N t 	%	1B			-(*<<=-- - 
	-&E E 	E
 E !E &Er   