feat(06-01): wire icon into .intunewin staging before build

- Add shutil import and Icon import to packages.py
- After driver extraction, look up Icon record for printer
- If found and file exists on disk, copy to tmpdir/icon.png
- Missing icon (no DB record or missing file) silently skipped — export still succeeds
- PKG-04 requirement satisfied
This commit is contained in:
2026-04-10 16:21:34 +02:00
parent 2723cc8974
commit 6310be5e76
+9 -1
View File
@@ -2,6 +2,7 @@
import io import io
import json import json
import os import os
import shutil
import tempfile import tempfile
import zipfile import zipfile
@@ -9,7 +10,7 @@ from fastapi import APIRouter
from fastapi.responses import PlainTextResponse, Response from fastapi.responses import PlainTextResponse, Response
import imptune.config as cfg import imptune.config as cfg
from imptune.db.models import Printer from imptune.db.models import Icon, Printer
from imptune.generators.intunewin_builder import build_intunewin from imptune.generators.intunewin_builder import build_intunewin
from imptune.generators.script_generator import render_detect, render_install, render_uninstall from imptune.generators.script_generator import render_detect, render_install, render_uninstall
@@ -144,6 +145,13 @@ def get_intunewin_package(printer_id: int):
with zipfile.ZipFile(driver_zip_path, "r") as driver_zf: with zipfile.ZipFile(driver_zip_path, "r") as driver_zf:
driver_zf.extractall(drivers_subdir) driver_zf.extractall(drivers_subdir)
# Copy icon into staging if one exists for this printer
icon_record = Icon.get_or_none(Icon.printer == printer.id)
if icon_record is not None:
icon_src = os.path.join(cfg.ICONS_DIR, icon_record.sha256)
if os.path.isfile(icon_src):
shutil.copy2(icon_src, os.path.join(tmpdir, "icon.png"))
# Build .intunewin # Build .intunewin
output_path = os.path.join(tmpdir, "out.intunewin") output_path = os.path.join(tmpdir, "out.intunewin")
build_intunewin(tmpdir, "install.ps1", output_path) build_intunewin(tmpdir, "install.ps1", output_path)