mirror of
https://github.com/BerriAI/litellm.git
synced 2025-04-25 18:54:30 +00:00
* fix(proxy/_types.py): allow internal user to call api playground * fix(new_usage.tsx): cleanup tag based usage - only show for proxy admin not clear what tags internal user should be allowed to see * fix(team_endpoints.py): allow internal user view spend for teams they belong to * fix(team_endpoints.py): return team alias on `/team/daily/activity` API allows displaying team alias on ui * fix: fix linting error * fix(entity_usage.tsx): allow viewing top keys by team * fix(entity_usage.tsx): show alias, if available in breakdown allows entity alias to be easily displayed * Show usage by key (on all up, team, and tag usage dashboards) (#10152) * fix(entity_usage.tsx): allow user to select team in team usage tab * fix(new_usage.tsx): load all tags for filtering * fix(tag_management_endpoints.py): return dynamic tags from db on `/tag/list` * fix(litellm_pre_call_utils.py): support x-litellm-tags even if tag based routing not enabled * fix(new_usage.tsx): show breakdown of usage by api key on dashboard helpful when looking at spend by team * fix(networking.tsx): exclude litellm-dashboard team id's from calls adds noisy ui tokens to key activity * fix(new_usage.tsx): allow user to see activity by key on main tab * feat(internal_user_endpoints.py): refactor to use common_daily_activity function reuses same logic across teams/keys/tags Allows returning team_alias in api_keys consistently * fix(leftnav.tsx): swap old usage with new usage tab * fix(entity_usage.tsx): show breakdown of teams in daily spend chart * style(new_usage.tsx): show global usage tab if user is admin / has admin view * fix(new_usage.tsx): add disclaimer for new usage dashboard * fix(new_usage.tsx): fix linting error * Allow filtering usage dashboard by team + tag (#10150) * fix(entity_usage.tsx): allow user to select team in team usage tab * fix(new_usage.tsx): load all tags for filtering * fix(tag_management_endpoints.py): return dynamic tags from db on `/tag/list` * fix(litellm_pre_call_utils.py): support x-litellm-tags even if tag based routing not enabled * fix: fix linting error
48 lines
1.4 KiB
Python
48 lines
1.4 KiB
Python
from typing import Any, Union
|
|
|
|
from litellm.proxy._types import (
|
|
GenerateKeyRequest,
|
|
LiteLLM_ManagementEndpoint_MetadataFields_Premium,
|
|
LiteLLM_TeamTable,
|
|
LitellmUserRoles,
|
|
UserAPIKeyAuth,
|
|
)
|
|
from litellm.proxy.utils import _premium_user_check
|
|
|
|
|
|
def _user_has_admin_view(user_api_key_dict: UserAPIKeyAuth) -> bool:
|
|
return (
|
|
user_api_key_dict.user_role == LitellmUserRoles.PROXY_ADMIN
|
|
or user_api_key_dict.user_role == LitellmUserRoles.PROXY_ADMIN_VIEW_ONLY
|
|
)
|
|
|
|
|
|
def _is_user_team_admin(
|
|
user_api_key_dict: UserAPIKeyAuth, team_obj: LiteLLM_TeamTable
|
|
) -> bool:
|
|
for member in team_obj.members_with_roles:
|
|
if (
|
|
member.user_id is not None and member.user_id == user_api_key_dict.user_id
|
|
) and member.role == "admin":
|
|
return True
|
|
|
|
return False
|
|
|
|
|
|
def _set_object_metadata_field(
|
|
object_data: Union[LiteLLM_TeamTable, GenerateKeyRequest],
|
|
field_name: str,
|
|
value: Any,
|
|
) -> None:
|
|
"""
|
|
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
|
|
"""
|
|
if field_name in LiteLLM_ManagementEndpoint_MetadataFields_Premium:
|
|
_premium_user_check()
|
|
object_data.metadata = object_data.metadata or {}
|
|
object_data.metadata[field_name] = value
|