mirror of
https://github.com/BerriAI/litellm.git
synced 2025-04-27 03:34:10 +00:00
Litellm dev 02 18 2025 p3 (#8640)
* fix(team_endpoints.py): cleanup user <-> team association on team delete Fixes issue where user table still listed team membership post delete * test(test_team.py): update e2e test - ensure user/team membership is deleted on team delete * fix(base_invoke_transformation.py): fix deepseek r1 transformation remove deepseek name from model url * test(test_completion.py): assert model route not in url * feat(base_invoke_transformation.py): infer region name from model arn prevent errors due to different region name in env var vs. model arn, respect if explicitly set in call though * test: fix test * test: skip on internal server error
This commit is contained in:
parent
bf6c013de0
commit
e08e8eda47
9 changed files with 108 additions and 21 deletions
|
@ -814,7 +814,6 @@ async def team_member_add(
|
|||
@management_endpoint_wrapper
|
||||
async def team_member_delete(
|
||||
data: TeamMemberDeleteRequest,
|
||||
http_request: Request,
|
||||
user_api_key_dict: UserAPIKeyAuth = Depends(user_api_key_auth),
|
||||
):
|
||||
"""
|
||||
|
@ -1128,15 +1127,21 @@ async def delete_team(
|
|||
raise HTTPException(status_code=400, detail={"error": "No team id passed in"})
|
||||
|
||||
# check that all teams passed exist
|
||||
team_rows: List[LiteLLM_TeamTable] = []
|
||||
for team_id in data.team_ids:
|
||||
team_row = await prisma_client.get_data( # type: ignore
|
||||
team_id=team_id, table_name="team", query_type="find_unique"
|
||||
)
|
||||
if team_row is None:
|
||||
try:
|
||||
team_row_base: BaseModel = (
|
||||
await prisma_client.db.litellm_teamtable.find_unique(
|
||||
where={"team_id": team_id}
|
||||
)
|
||||
)
|
||||
except Exception:
|
||||
raise HTTPException(
|
||||
status_code=404,
|
||||
status_code=400,
|
||||
detail={"error": f"Team not found, passed team_id={team_id}"},
|
||||
)
|
||||
team_row_pydantic = LiteLLM_TeamTable(**team_row_base.model_dump())
|
||||
team_rows.append(team_row_pydantic)
|
||||
|
||||
# Enterprise Feature - Audit Logging. Enable with litellm.store_audit_logs = True
|
||||
# we do this after the first for loop, since first for loop is for validation. we only want this inserted after validation passes
|
||||
|
@ -1174,6 +1179,26 @@ async def delete_team(
|
|||
|
||||
## DELETE ASSOCIATED KEYS
|
||||
await prisma_client.delete_data(team_id_list=data.team_ids, table_name="key")
|
||||
|
||||
# ## DELETE TEAM MEMBERSHIPS
|
||||
for team_row in team_rows:
|
||||
### get all team members
|
||||
team_members = team_row.members_with_roles
|
||||
### call team_member_delete for each team member
|
||||
tasks = []
|
||||
for team_member in team_members:
|
||||
tasks.append(
|
||||
team_member_delete(
|
||||
data=TeamMemberDeleteRequest(
|
||||
team_id=team_row.team_id,
|
||||
user_id=team_member.user_id,
|
||||
user_email=team_member.user_email,
|
||||
),
|
||||
user_api_key_dict=user_api_key_dict,
|
||||
)
|
||||
)
|
||||
await asyncio.gather(*tasks)
|
||||
|
||||
## DELETE TEAMS
|
||||
deleted_teams = await prisma_client.delete_data(
|
||||
team_id_list=data.team_ids, table_name="team"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue