mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-19 00:01:29 +00:00
fix(team): regenerate schema types and clear lint gates for bulk member update
This commit is contained in:
parent
db9decaed7
commit
8ce1be5eae
6 changed files with 5701 additions and 87 deletions
|
|
@ -3706,12 +3706,12 @@ class TeamMemberUpdateResponse(MemberUpdateResponse):
|
|||
|
||||
|
||||
class TeamMemberBulkUpdateFields(LiteLLMPydanticObjectBase):
|
||||
max_budget_in_team: Optional[float] = None
|
||||
role: Optional[Literal["admin", "user"]] = None
|
||||
tpm_limit: Optional[int] = None
|
||||
rpm_limit: Optional[int] = None
|
||||
budget_duration: Optional[str] = None
|
||||
allowed_models: Optional[List[str]] = None
|
||||
max_budget_in_team: float | None = None
|
||||
role: Literal["admin", "user"] | None = None
|
||||
tpm_limit: int | None = None
|
||||
rpm_limit: int | None = None
|
||||
budget_duration: str | None = None
|
||||
allowed_models: list[str] | None = None
|
||||
|
||||
@model_validator(mode="after")
|
||||
def require_at_least_one_field(self):
|
||||
|
|
@ -3722,7 +3722,7 @@ class TeamMemberBulkUpdateFields(LiteLLMPydanticObjectBase):
|
|||
|
||||
class BulkTeamMemberUpdateRequest(LiteLLMPydanticObjectBase):
|
||||
team_id: str
|
||||
user_ids: Optional[List[str]] = None
|
||||
user_ids: list[str] | None = None
|
||||
all_members_in_team: bool = False
|
||||
update_fields: TeamMemberBulkUpdateFields
|
||||
|
||||
|
|
@ -3743,8 +3743,8 @@ class FailedTeamMemberUpdate(MemberUpdateResponse):
|
|||
class BulkTeamMemberUpdateResponse(LiteLLMPydanticObjectBase):
|
||||
team_id: str
|
||||
total_requested: int
|
||||
successful_updates: List[TeamMemberUpdateResponse]
|
||||
failed_updates: List[FailedTeamMemberUpdate]
|
||||
successful_updates: list[TeamMemberUpdateResponse]
|
||||
failed_updates: list[FailedTeamMemberUpdate]
|
||||
|
||||
|
||||
class TeamModelAddRequest(BaseModel):
|
||||
|
|
|
|||
|
|
@ -3060,8 +3060,8 @@ async def bulk_update_team_members(
|
|||
)
|
||||
|
||||
update_fields = data.update_fields.model_dump(exclude_unset=True)
|
||||
successful_updates: List[TeamMemberUpdateResponse] = []
|
||||
failed_updates: List[FailedTeamMemberUpdate] = []
|
||||
successful_updates: list[TeamMemberUpdateResponse] = []
|
||||
failed_updates: list[FailedTeamMemberUpdate] = []
|
||||
for user_id in user_ids:
|
||||
try:
|
||||
response = await team_member_update(
|
||||
|
|
|
|||
|
|
@ -2732,32 +2732,6 @@ export interface Member {
|
|||
allowed_models?: string[] | null;
|
||||
}
|
||||
|
||||
export interface TeamMemberBulkUpdateFields {
|
||||
role?: "admin" | "user" | null;
|
||||
max_budget_in_team?: number | null;
|
||||
tpm_limit?: number | null;
|
||||
rpm_limit?: number | null;
|
||||
budget_duration?: string | null;
|
||||
allowed_models?: string[] | null;
|
||||
}
|
||||
|
||||
export const teamMemberBulkUpdateCall = async (
|
||||
accessToken: string,
|
||||
teamId: string,
|
||||
userIds: string[],
|
||||
allMembersInTeam: boolean,
|
||||
updateFields: TeamMemberBulkUpdateFields,
|
||||
) => {
|
||||
return apiClient.post(`/team/member/bulk_update`, {
|
||||
accessToken,
|
||||
body: {
|
||||
team_id: teamId,
|
||||
...(allMembersInTeam ? { all_members_in_team: true } : { user_ids: userIds }),
|
||||
update_fields: updateFields,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
export const teamMemberAddCall = async (accessToken: string, teamId: string, formValues: Member) => {
|
||||
try {
|
||||
const url = proxyBaseUrl ? `${proxyBaseUrl}/team/member_add` : `/team/member_add`;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { useUISettings } from "@/app/(dashboard)/hooks/uiSettings/useUISettings";
|
||||
import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized";
|
||||
import { Member, TeamMemberBulkUpdateFields, teamMemberBulkUpdateCall } from "@/components/networking";
|
||||
import { Member } from "@/components/networking";
|
||||
import BudgetDurationDropdown from "@/components/common_components/budget_duration_dropdown";
|
||||
import NotificationsManager from "@/components/molecules/notifications_manager";
|
||||
import NumericalInput from "@/components/shared/numerical_input";
|
||||
|
|
@ -12,6 +12,7 @@ import { Button, Checkbox, Form, Modal, Select, Space, Tooltip, Typography } fro
|
|||
import type { ColumnsType } from "antd/es/table";
|
||||
import { useState } from "react";
|
||||
import MemberTable from "@/components/common_components/MemberTable";
|
||||
import { TeamMemberBulkUpdateFields, teamMemberBulkUpdateCall } from "./teamMemberBulkUpdate";
|
||||
import { TeamData } from "./TeamInfo";
|
||||
|
||||
interface TeamMemberTabProps {
|
||||
|
|
@ -229,7 +230,7 @@ export default function TeamMemberTab({
|
|||
|
||||
setIsBulkUpdating(true);
|
||||
try {
|
||||
const response = await teamMemberBulkUpdateCall(accessToken, teamData.team_id, userIds, false, updateFields);
|
||||
const response = await teamMemberBulkUpdateCall(accessToken, teamData.team_id, userIds, updateFields);
|
||||
await onMembersUpdated?.();
|
||||
setIsBulkUpdateVisible(false);
|
||||
setSelectedMembers([]);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,31 @@
|
|||
import { getGlobalLitellmHeaderName, getProxyBaseUrl } from "@/components/networking";
|
||||
import { createApiClient } from "@/lib/http/client";
|
||||
|
||||
export interface TeamMemberBulkUpdateFields {
|
||||
role?: "admin" | "user" | null;
|
||||
max_budget_in_team?: number | null;
|
||||
tpm_limit?: number | null;
|
||||
rpm_limit?: number | null;
|
||||
budget_duration?: string | null;
|
||||
allowed_models?: string[] | null;
|
||||
}
|
||||
|
||||
const apiClient = createApiClient({
|
||||
getBaseUrl: getProxyBaseUrl,
|
||||
getAuthHeaderName: getGlobalLitellmHeaderName,
|
||||
});
|
||||
|
||||
export const teamMemberBulkUpdateCall = async (
|
||||
accessToken: string,
|
||||
teamId: string,
|
||||
userIds: string[],
|
||||
updateFields: TeamMemberBulkUpdateFields,
|
||||
) =>
|
||||
apiClient.post(`/team/member/bulk_update`, {
|
||||
accessToken,
|
||||
body: {
|
||||
team_id: teamId,
|
||||
user_ids: userIds,
|
||||
update_fields: updateFields,
|
||||
},
|
||||
});
|
||||
5704
ui/litellm-dashboard/src/lib/http/schema.d.ts
generated
vendored
5704
ui/litellm-dashboard/src/lib/http/schema.d.ts
generated
vendored
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue