From 6310be5e764b665683aa0cafe928562675b03c1d Mon Sep 17 00:00:00 2001 From: Kawa Date: Fri, 10 Apr 2026 16:21:34 +0200 Subject: [PATCH] feat(06-01): wire icon into .intunewin staging before build MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- imptune/api/packages.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/imptune/api/packages.py b/imptune/api/packages.py index 2877c81..387e7de 100644 --- a/imptune/api/packages.py +++ b/imptune/api/packages.py @@ -2,6 +2,7 @@ import io import json import os +import shutil import tempfile import zipfile @@ -9,7 +10,7 @@ from fastapi import APIRouter from fastapi.responses import PlainTextResponse, Response 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.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: 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 output_path = os.path.join(tmpdir, "out.intunewin") build_intunewin(tmpdir, "install.ps1", output_path)