mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-07-03 13:19:23 +08:00
fix(assets): mark path-derived upload tags automatic
Amp-Thread-ID: https://ampcode.com/threads/T-019ecf39-2e6f-747d-ae80-addba6b8e4f5 Co-authored-by: Amp <amp@ampcode.com>
This commit is contained in:
parent
44b3239068
commit
f74388346e
@ -106,17 +106,28 @@ def _ingest_file_from_path(
|
|||||||
backend_tags = get_path_derived_tags_from_path(locator)
|
backend_tags = get_path_derived_tags_from_path(locator)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
backend_tags = []
|
backend_tags = []
|
||||||
norm = normalize_tags([*list(tags), *backend_tags])
|
caller_tags = normalize_tags(tags)
|
||||||
if norm:
|
backend_tags = normalize_tags(backend_tags)
|
||||||
|
all_tags = normalize_tags([*caller_tags, *backend_tags])
|
||||||
|
if all_tags:
|
||||||
if require_existing_tags:
|
if require_existing_tags:
|
||||||
validate_tags_exist(session, norm)
|
validate_tags_exist(session, all_tags)
|
||||||
add_tags_to_reference(
|
if backend_tags:
|
||||||
session,
|
add_tags_to_reference(
|
||||||
reference_id=reference_id,
|
session,
|
||||||
tags=norm,
|
reference_id=reference_id,
|
||||||
origin=tag_origin,
|
tags=backend_tags,
|
||||||
create_if_missing=not require_existing_tags,
|
origin="automatic",
|
||||||
)
|
create_if_missing=not require_existing_tags,
|
||||||
|
)
|
||||||
|
if caller_tags:
|
||||||
|
add_tags_to_reference(
|
||||||
|
session,
|
||||||
|
reference_id=reference_id,
|
||||||
|
tags=caller_tags,
|
||||||
|
origin=tag_origin,
|
||||||
|
create_if_missing=not require_existing_tags,
|
||||||
|
)
|
||||||
|
|
||||||
_update_metadata_with_filename(
|
_update_metadata_with_filename(
|
||||||
session,
|
session,
|
||||||
|
|||||||
@ -94,6 +94,47 @@ class TestIngestFileFromPath:
|
|||||||
ref_tags = get_reference_tags(session, reference_id=result.reference_id)
|
ref_tags = get_reference_tags(session, reference_id=result.reference_id)
|
||||||
assert set(ref_tags) == {"models", "checkpoints"}
|
assert set(ref_tags) == {"models", "checkpoints"}
|
||||||
|
|
||||||
|
def test_path_derived_tags_use_automatic_origin(
|
||||||
|
self, mock_create_session, temp_dir: Path, session: Session
|
||||||
|
):
|
||||||
|
input_dir = temp_dir / "input"
|
||||||
|
output_dir = temp_dir / "output"
|
||||||
|
temp_root = temp_dir / "temp"
|
||||||
|
for directory in (input_dir, output_dir, temp_root):
|
||||||
|
directory.mkdir()
|
||||||
|
file_path = input_dir / "pasted" / "tagged.png"
|
||||||
|
file_path.parent.mkdir()
|
||||||
|
file_path.write_bytes(b"data")
|
||||||
|
|
||||||
|
with (
|
||||||
|
patch("app.assets.services.path_utils.folder_paths") as mock_fp,
|
||||||
|
patch(
|
||||||
|
"app.assets.services.path_utils.get_comfy_models_folders",
|
||||||
|
return_value=[],
|
||||||
|
),
|
||||||
|
):
|
||||||
|
mock_fp.get_input_directory.return_value = str(input_dir)
|
||||||
|
mock_fp.get_output_directory.return_value = str(output_dir)
|
||||||
|
mock_fp.get_temp_directory.return_value = str(temp_root)
|
||||||
|
|
||||||
|
result = _ingest_file_from_path(
|
||||||
|
abs_path=str(file_path),
|
||||||
|
asset_hash="blake3:pathorigin",
|
||||||
|
size_bytes=4,
|
||||||
|
mtime_ns=1234567890000000000,
|
||||||
|
info_name="Tagged Asset",
|
||||||
|
tags=["input", "manual-label"],
|
||||||
|
)
|
||||||
|
|
||||||
|
assert result.reference_id is not None
|
||||||
|
links = session.query(AssetReferenceTag).filter_by(
|
||||||
|
asset_reference_id=result.reference_id
|
||||||
|
)
|
||||||
|
origin_by_tag = {link.tag_name: link.origin for link in links}
|
||||||
|
assert origin_by_tag["input"] == "automatic"
|
||||||
|
assert origin_by_tag["pasted"] == "automatic"
|
||||||
|
assert origin_by_tag["manual-label"] == "manual"
|
||||||
|
|
||||||
def test_idempotent_upsert(self, mock_create_session, temp_dir: Path, session: Session):
|
def test_idempotent_upsert(self, mock_create_session, temp_dir: Path, session: Session):
|
||||||
file_path = temp_dir / "dup.bin"
|
file_path = temp_dir / "dup.bin"
|
||||||
file_path.write_bytes(b"content")
|
file_path.write_bytes(b"content")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user