fix(wcd): verify imported stickers and remap production assets
This commit is contained in:
+10
-10
@@ -438,7 +438,7 @@ async def _create_wcd_job(wcd_file: UploadFile, user_params: dict) -> JobCreateR
|
||||
meta = _register_import_asset(str(item.get("name") or pkg_id), asset_bytes, mime)
|
||||
real_id = str(meta["asset_id"])
|
||||
remap[pkg_id] = real_id
|
||||
file_map[pkg_id] = {
|
||||
file_map[real_id] = {
|
||||
"path": str(_asset_dir(real_id) / f"asset{_asset_extension_for_mime(mime)}"),
|
||||
"mime": mime,
|
||||
}
|
||||
@@ -1323,15 +1323,15 @@ def _asset_meta_items() -> list[dict]:
|
||||
|
||||
|
||||
def _find_asset_by_sha256(digest: str) -> dict | None:
|
||||
for meta in _asset_meta_items():
|
||||
if meta.get("sha256") == digest:
|
||||
return meta
|
||||
for meta in _asset_meta_items():
|
||||
try:
|
||||
ext = _asset_extension_for_mime(str(meta.get("mime_type") or ""))
|
||||
path = _asset_dir(str(meta["asset_id"])) / f"asset{ext}"
|
||||
if path.exists() and hashlib.sha256(path.read_bytes()).hexdigest() == digest:
|
||||
meta["sha256"] = digest
|
||||
if not path.exists():
|
||||
continue
|
||||
actual_digest = hashlib.sha256(path.read_bytes()).hexdigest()
|
||||
if actual_digest == digest:
|
||||
meta["sha256"] = actual_digest
|
||||
_write_asset_meta(_asset_dir(str(meta["asset_id"])), meta)
|
||||
return meta
|
||||
except Exception:
|
||||
@@ -1528,7 +1528,7 @@ async def update_design_template(
|
||||
return DesignTemplate(**data)
|
||||
|
||||
|
||||
@app.delete("/api/design-templates/{template_id}", status_code=204)
|
||||
@app.delete("/api/design-templates/{template_id}", status_code=204, response_model=None)
|
||||
def delete_design_template(template_id: str) -> None:
|
||||
template_dir = _design_template_dir(template_id)
|
||||
if not (template_dir / "template.json").exists():
|
||||
@@ -1790,7 +1790,7 @@ def analyze_asset_line_spacing(
|
||||
return LineSpacingAnalysisSummary(**result.as_dict())
|
||||
|
||||
|
||||
@app.delete("/api/assets/{asset_id}", status_code=204)
|
||||
@app.delete("/api/assets/{asset_id}", status_code=204, response_model=None)
|
||||
def delete_asset(asset_id: str) -> None:
|
||||
d = _asset_dir(asset_id)
|
||||
meta = _read_asset_meta(d)
|
||||
@@ -1916,7 +1916,7 @@ async def update_project(
|
||||
return Project(**data)
|
||||
|
||||
|
||||
@app.delete("/api/projects/{project_id}", status_code=204)
|
||||
@app.delete("/api/projects/{project_id}", status_code=204, response_model=None)
|
||||
def delete_project(project_id: str) -> None:
|
||||
pdir = _project_dir(project_id)
|
||||
path = pdir / "project.json"
|
||||
@@ -2011,7 +2011,7 @@ async def upload_font(
|
||||
return Font(**meta)
|
||||
|
||||
|
||||
@app.delete("/api/fonts/{font_id}", status_code=204)
|
||||
@app.delete("/api/fonts/{font_id}", status_code=204, response_model=None)
|
||||
def delete_font(font_id: str) -> None:
|
||||
"""删除已上传字体(内置默认字体不可删除)。"""
|
||||
if font_id == "__default__":
|
||||
|
||||
Reference in New Issue
Block a user