Skip to content

Commit bdd9a8d

Browse files
authored
✨ Model access supports modification access - bugs fix
✨ Model access supports modification access - bugs fix
2 parents 3553661 + 1ce8c04 commit bdd9a8d

File tree

3 files changed

+43
-18
lines changed

3 files changed

+43
-18
lines changed

backend/apps/model_managment_app.py

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -90,23 +90,26 @@ async def create_model(request: ModelRequest, authorization: Optional[str] = Hea
9090

9191
@router.post("/create_provider", response_model=ModelResponse)
9292
async def create_provider_model(request: ProviderModelRequest, authorization: Optional[str] = Header(None)):
93-
try:
94-
model_data = request.model_dump()
95-
model_list=[]
96-
if model_data["provider"] == ProviderEnum.SILICON.value:
97-
provider = SiliconModelProvider()
98-
model_list = await provider.get_models(model_data)
99-
return ModelResponse(
100-
code=200,
101-
message=f"Provider model {model_data['provider']} created successfully",
102-
data=model_list
103-
)
104-
except Exception as e:
105-
return ModelResponse(
106-
code=500,
107-
message=f"Failed to create provider model: {str(e)}",
108-
data=None
109-
)
93+
try:
94+
model_data = request.model_dump()
95+
model_list=[]
96+
if model_data["provider"] == ProviderEnum.SILICON.value:
97+
provider = SiliconModelProvider()
98+
model_list = await provider.get_models(model_data)
99+
# Sort by the first letter of id in descending order
100+
if isinstance(model_list, list):
101+
model_list.sort(key=lambda m: str((m.get("id") if isinstance(m, dict) else m) or "")[:1].lower(), reverse=False)
102+
return ModelResponse(
103+
code=200,
104+
message=f"Provider model {model_data['provider']} created successfully",
105+
data=model_list
106+
)
107+
except Exception as e:
108+
return ModelResponse(
109+
code=500,
110+
message=f"Failed to create provider model: {str(e)}",
111+
data=None
112+
)
110113

111114

112115
@router.post("/batch_create_models", response_model=ModelResponse)

frontend/app/[locale]/setup/modelSetup/model/ModelDeleteDialog.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,7 @@ export const ModelDeleteDialog = ({
351351
pendingSelectedProviderIds.has(pm.id)
352352
)
353353

354-
if (allEnabledModels.length > 0) {
354+
if (allEnabledModels) {
355355
const apiKey = getApiKeyByType(deletingModelType)
356356
// Pass all currently enabled models
357357
await modelService.addBatchCustomModel({

test/backend/app/test_model_managment_app.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -735,6 +735,28 @@ def test_create_provider_model_exception(self, mock_get_silicon):
735735
self.assertEqual(data["code"], 500)
736736
self.assertIn("Failed to create provider model: Silicon API error", data["message"])
737737

738+
def test_create_provider_model_silicon_success_backend_sorted(self):
739+
backend_client_local, backend_model_app = _build_backend_client_with_s3_stub()
740+
with patch.object(backend_model_app.SiliconModelProvider, "get_models", new=AsyncMock(return_value=[{"id": "b2"}, {"id": "A1"}, {"id": "a0"}, {"id": "c3"}])) as mock_get:
741+
request_data = {"provider": "silicon", "api_key": "test_key"}
742+
response = backend_client_local.post("/model/create_provider", json=request_data, headers=self.auth_header)
743+
self.assertEqual(response.status_code, 200)
744+
data = response.json()
745+
self.assertEqual(data["code"], 200)
746+
self.assertIn("Provider model silicon created successfully", data["message"])
747+
self.assertEqual([m["id"] for m in data["data"]], ["A1", "a0", "b2", "c3"])
748+
mock_get.assert_called_once()
749+
750+
def test_create_provider_model_exception_backend(self):
751+
backend_client_local, backend_model_app = _build_backend_client_with_s3_stub()
752+
with patch.object(backend_model_app.SiliconModelProvider, "get_models", new=AsyncMock(side_effect=Exception("Silicon API error"))) as mock_get:
753+
request_data = {"provider": "silicon", "api_key": "test_key"}
754+
response = backend_client_local.post("/model/create_provider", json=request_data, headers=self.auth_header)
755+
self.assertEqual(response.status_code, 200)
756+
data = response.json()
757+
self.assertEqual(data["code"], 500)
758+
self.assertIn("Failed to create provider model: Silicon API error", data["message"])
759+
mock_get.assert_called_once()
738760

739761
@patch("test_model_managment_app.get_current_user_id")
740762
@patch("test_model_managment_app.get_model_by_display_name")

0 commit comments

Comments
 (0)