mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-03-15 14:17:40 +08:00
Pass preview_id and mime_type through all asset creation fast paths
The duplicate-content upload path and hash-based creation paths were silently dropping preview_id and mime_type. This wires both fields through _register_existing_asset, create_from_hash, and all route call sites so behavior is consistent regardless of whether the asset content already exists. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
a8b7a714d4
commit
d74545c496
@ -349,6 +349,7 @@ async def create_asset_from_hash_route(request: web.Request) -> web.Response:
|
|||||||
user_metadata=body.user_metadata,
|
user_metadata=body.user_metadata,
|
||||||
owner_id=USER_MANAGER.get_request_user_id(request),
|
owner_id=USER_MANAGER.get_request_user_id(request),
|
||||||
mime_type=body.mime_type,
|
mime_type=body.mime_type,
|
||||||
|
preview_id=body.preview_id,
|
||||||
)
|
)
|
||||||
if result is None:
|
if result is None:
|
||||||
return _build_error_response(
|
return _build_error_response(
|
||||||
@ -436,6 +437,7 @@ async def upload_asset(request: web.Request) -> web.Response:
|
|||||||
user_metadata=spec.user_metadata or {},
|
user_metadata=spec.user_metadata or {},
|
||||||
owner_id=owner_id,
|
owner_id=owner_id,
|
||||||
mime_type=spec.mime_type,
|
mime_type=spec.mime_type,
|
||||||
|
preview_id=spec.preview_id,
|
||||||
)
|
)
|
||||||
if result is None:
|
if result is None:
|
||||||
delete_temp_file_if_exists(parsed.tmp_path)
|
delete_temp_file_if_exists(parsed.tmp_path)
|
||||||
|
|||||||
@ -124,6 +124,7 @@ class CreateFromHashBody(BaseModel):
|
|||||||
tags: list[str] = Field(default_factory=list)
|
tags: list[str] = Field(default_factory=list)
|
||||||
user_metadata: dict[str, Any] = Field(default_factory=dict)
|
user_metadata: dict[str, Any] = Field(default_factory=dict)
|
||||||
mime_type: str | None = None
|
mime_type: str | None = None
|
||||||
|
preview_id: str | None = None
|
||||||
|
|
||||||
@field_validator("hash")
|
@field_validator("hash")
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|||||||
@ -137,6 +137,7 @@ def _register_existing_asset(
|
|||||||
tag_origin: str = "manual",
|
tag_origin: str = "manual",
|
||||||
owner_id: str = "",
|
owner_id: str = "",
|
||||||
mime_type: str | None = None,
|
mime_type: str | None = None,
|
||||||
|
preview_id: str | None = None,
|
||||||
) -> RegisterAssetResult:
|
) -> RegisterAssetResult:
|
||||||
user_metadata = user_metadata or {}
|
user_metadata = user_metadata or {}
|
||||||
|
|
||||||
@ -148,14 +149,22 @@ def _register_existing_asset(
|
|||||||
if mime_type and asset.mime_type != mime_type:
|
if mime_type and asset.mime_type != mime_type:
|
||||||
update_asset_hash_and_mime(session, asset_id=asset.id, mime_type=mime_type)
|
update_asset_hash_and_mime(session, asset_id=asset.id, mime_type=mime_type)
|
||||||
|
|
||||||
|
if preview_id:
|
||||||
|
if not reference_exists(session, preview_id):
|
||||||
|
preview_id = None
|
||||||
|
|
||||||
ref, ref_created = get_or_create_reference(
|
ref, ref_created = get_or_create_reference(
|
||||||
session,
|
session,
|
||||||
asset_id=asset.id,
|
asset_id=asset.id,
|
||||||
owner_id=owner_id,
|
owner_id=owner_id,
|
||||||
name=name,
|
name=name,
|
||||||
|
preview_id=preview_id,
|
||||||
)
|
)
|
||||||
|
|
||||||
if not ref_created:
|
if not ref_created:
|
||||||
|
if preview_id and ref.preview_id != preview_id:
|
||||||
|
ref.preview_id = preview_id
|
||||||
|
|
||||||
tag_names = get_reference_tags(session, reference_id=ref.id)
|
tag_names = get_reference_tags(session, reference_id=ref.id)
|
||||||
result = RegisterAssetResult(
|
result = RegisterAssetResult(
|
||||||
ref=extract_reference_data(ref),
|
ref=extract_reference_data(ref),
|
||||||
@ -278,6 +287,8 @@ def upload_from_temp_path(
|
|||||||
tags=tags or [],
|
tags=tags or [],
|
||||||
tag_origin="manual",
|
tag_origin="manual",
|
||||||
owner_id=owner_id,
|
owner_id=owner_id,
|
||||||
|
mime_type=mime_type,
|
||||||
|
preview_id=preview_id,
|
||||||
)
|
)
|
||||||
return UploadResult(
|
return UploadResult(
|
||||||
ref=result.ref,
|
ref=result.ref,
|
||||||
@ -412,6 +423,7 @@ def create_from_hash(
|
|||||||
user_metadata: dict | None = None,
|
user_metadata: dict | None = None,
|
||||||
owner_id: str = "",
|
owner_id: str = "",
|
||||||
mime_type: str | None = None,
|
mime_type: str | None = None,
|
||||||
|
preview_id: str | None = None,
|
||||||
) -> UploadResult | None:
|
) -> UploadResult | None:
|
||||||
canonical = hash_str.strip().lower()
|
canonical = hash_str.strip().lower()
|
||||||
|
|
||||||
@ -426,6 +438,7 @@ def create_from_hash(
|
|||||||
tag_origin="manual",
|
tag_origin="manual",
|
||||||
owner_id=owner_id,
|
owner_id=owner_id,
|
||||||
mime_type=mime_type,
|
mime_type=mime_type,
|
||||||
|
preview_id=preview_id,
|
||||||
)
|
)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
logging.warning("create_from_hash: no asset found for hash %s", canonical)
|
logging.warning("create_from_hash: no asset found for hash %s", canonical)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user