mirror of
https://github.com/BerriAI/litellm.git
synced 2025-04-27 03:34:10 +00:00
Litellm dev 01 10 2025 p2 (#7679)
* test(test_basic_python_version.py): assert all optional dependencies are marked as extras on poetry Fixes https://github.com/BerriAI/litellm/issues/7677 * docs(secret.md): clarify 'read_and_write' secret manager usage on aws * docs(secret.md): fix doc * build(ui/teams.tsx): add edit/delete button for updating user / team membership on ui allows updating user role to admin on ui * build(ui/teams.tsx): display edit member component on ui, when edit button on member clicked * feat(team_endpoints.py): support updating team member role to admin via api endpoints allows team member to become admin post-add * build(ui/user_dashboard.tsx): if team admin - show all team keys Fixes https://github.com/BerriAI/litellm/issues/7650 * test(config.yml): add tomli to ci/cd * test: don't call python_basic_testing in local testing (covered by python 3.13 testing)
This commit is contained in:
parent
e0d5afbd3e
commit
e54d23c919
15 changed files with 425 additions and 67 deletions
|
@ -920,7 +920,7 @@ async def team_member_update(
|
|||
"""
|
||||
[BETA]
|
||||
|
||||
Update team member budgets
|
||||
Update team member budgets and team member role
|
||||
"""
|
||||
from litellm.proxy.proxy_server import prisma_client
|
||||
|
||||
|
@ -970,6 +970,8 @@ async def team_member_update(
|
|||
user_api_key_dict=user_api_key_dict,
|
||||
)
|
||||
|
||||
team_table = returned_team_info["team_info"]
|
||||
|
||||
## get user id
|
||||
received_user_id: Optional[str] = None
|
||||
if data.user_id is not None:
|
||||
|
@ -995,26 +997,50 @@ async def team_member_update(
|
|||
break
|
||||
|
||||
### upsert new budget
|
||||
if identified_budget_id is None:
|
||||
new_budget = await prisma_client.db.litellm_budgettable.create(
|
||||
data={
|
||||
"max_budget": data.max_budget_in_team,
|
||||
"created_by": user_api_key_dict.user_id or "",
|
||||
"updated_by": user_api_key_dict.user_id or "",
|
||||
}
|
||||
)
|
||||
if data.max_budget_in_team is not None:
|
||||
if identified_budget_id is None:
|
||||
new_budget = await prisma_client.db.litellm_budgettable.create(
|
||||
data={
|
||||
"max_budget": data.max_budget_in_team,
|
||||
"created_by": user_api_key_dict.user_id or "",
|
||||
"updated_by": user_api_key_dict.user_id or "",
|
||||
}
|
||||
)
|
||||
|
||||
await prisma_client.db.litellm_teammembership.create(
|
||||
data={
|
||||
"team_id": data.team_id,
|
||||
"user_id": received_user_id,
|
||||
"budget_id": new_budget.budget_id,
|
||||
},
|
||||
)
|
||||
else:
|
||||
await prisma_client.db.litellm_budgettable.update(
|
||||
where={"budget_id": identified_budget_id},
|
||||
data={"max_budget": data.max_budget_in_team},
|
||||
await prisma_client.db.litellm_teammembership.create(
|
||||
data={
|
||||
"team_id": data.team_id,
|
||||
"user_id": received_user_id,
|
||||
"budget_id": new_budget.budget_id,
|
||||
},
|
||||
)
|
||||
elif identified_budget_id is not None:
|
||||
await prisma_client.db.litellm_budgettable.update(
|
||||
where={"budget_id": identified_budget_id},
|
||||
data={"max_budget": data.max_budget_in_team},
|
||||
)
|
||||
|
||||
### update team member role
|
||||
if data.role is not None:
|
||||
team_members: List[Member] = []
|
||||
for member in team_table.members_with_roles:
|
||||
if member.user_id == received_user_id:
|
||||
team_members.append(
|
||||
Member(
|
||||
user_id=member.user_id,
|
||||
role=data.role,
|
||||
user_email=data.user_email or member.user_email,
|
||||
)
|
||||
)
|
||||
else:
|
||||
team_members.append(member)
|
||||
|
||||
team_table.members_with_roles = team_members
|
||||
|
||||
_db_team_members: List[dict] = [m.model_dump() for m in team_members]
|
||||
await prisma_client.db.litellm_teamtable.update(
|
||||
where={"team_id": data.team_id},
|
||||
data={"members_with_roles": json.dumps(_db_team_members)}, # type: ignore
|
||||
)
|
||||
|
||||
return TeamMemberUpdateResponse(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue