From fadbf21b4f385864daa60ab15e4da2a12e43c979 Mon Sep 17 00:00:00 2001 From: Will Miao <13051207myq@gmail.com> Date: Sun, 19 Oct 2025 20:05:58 +0800 Subject: [PATCH] fix(relink): keep sha untouched during relinking --- py/services/metadata_sync_service.py | 9 --------- tests/services/test_metadata_sync_service.py | 7 ++++--- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/py/services/metadata_sync_service.py b/py/services/metadata_sync_service.py index b9b192ff..cd160a57 100644 --- a/py/services/metadata_sync_service.py +++ b/py/services/metadata_sync_service.py @@ -344,15 +344,6 @@ class MetadataSyncService: + (f" with version: {model_version_id}" if model_version_id else "") ) - primary_model_file: Optional[Dict[str, Any]] = None - for file_info in civitai_metadata.get("files", []): - if file_info.get("primary", False) and file_info.get("type") == "Model": - primary_model_file = file_info - break - - if primary_model_file and primary_model_file.get("hashes", {}).get("SHA256"): - metadata["sha256"] = primary_model_file["hashes"]["SHA256"].lower() - metadata_path = os.path.splitext(file_path)[0] + ".metadata.json" await self.update_model_metadata( metadata_path, diff --git a/tests/services/test_metadata_sync_service.py b/tests/services/test_metadata_sync_service.py index 09d56f5a..4af25168 100644 --- a/tests/services/test_metadata_sync_service.py +++ b/tests/services/test_metadata_sync_service.py @@ -373,7 +373,7 @@ async def test_fetch_and_update_model_returns_rate_limit_error(tmp_path): @pytest.mark.asyncio -async def test_relink_metadata_fetches_version_and_updates_sha(tmp_path): +async def test_relink_metadata_fetches_version_without_overwriting_sha(tmp_path): provider = SimpleNamespace( get_model_by_hash=AsyncMock(), get_model_version=AsyncMock( @@ -393,7 +393,7 @@ async def test_relink_metadata_fetches_version_and_updates_sha(tmp_path): helpers = build_service(default_provider=provider) - metadata = {"model_name": "Local"} + metadata = {"model_name": "Local", "sha256": "original"} result = await helpers.service.relink_metadata( file_path=str(tmp_path / "model.safetensors"), metadata=metadata, @@ -401,7 +401,8 @@ async def test_relink_metadata_fetches_version_and_updates_sha(tmp_path): model_version_id=2, ) - assert result["sha256"] == "abcdef" + assert result["model_name"] == "Remote" + assert result["sha256"] == "original" helpers.metadata_manager.save_metadata.assert_awaited_once()