From 68a2935af21156ad84f661054a04b5cb73bdd164 Mon Sep 17 00:00:00 2001 From: Kawa Date: Mon, 13 Apr 2026 10:48:43 +0200 Subject: [PATCH] feat(09-03): add .ps1 script download routes and detail-page links - Refactor install/uninstall/detect handlers into shared _*_response() helpers - Add .ps1 route aliases: /scripts/install.ps1, /scripts/uninstall.ps1, /scripts/detect.ps1 - Add Scripts section to printer_detail.html inside {% if has_driver %} with 3 download links - All 6 new tests green, full suite 106/106 passing --- imptune/api/scripts.py | 51 ++++++++++++++++++++------- imptune/templates/printer_detail.html | 11 ++++++ 2 files changed, 50 insertions(+), 12 deletions(-) diff --git a/imptune/api/scripts.py b/imptune/api/scripts.py index a5375b6..cbc53e1 100644 --- a/imptune/api/scripts.py +++ b/imptune/api/scripts.py @@ -35,13 +35,10 @@ def _get_printer_and_driver(printer_id: int): return (printer, driver, driver_name), None -@router.get("/{printer_id}/scripts/install") -def get_install_script(printer_id: int): - """Download the PowerShell install script for a printer.""" +def _install_response(printer_id: int): result, error = _get_printer_and_driver(printer_id) if error is not None: return error - printer, driver, driver_name = result rendered = render_install( printer_name=printer.name, @@ -60,13 +57,10 @@ def get_install_script(printer_id: int): ) -@router.get("/{printer_id}/scripts/uninstall") -def get_uninstall_script(printer_id: int): - """Download the PowerShell uninstall script for a printer.""" +def _uninstall_response(printer_id: int): result, error = _get_printer_and_driver(printer_id) if error is not None: return error - printer, driver, driver_name = result rendered = render_uninstall( printer_name=printer.name, @@ -79,16 +73,49 @@ def get_uninstall_script(printer_id: int): ) -@router.get("/{printer_id}/scripts/detect") -def get_detect_script(printer_id: int): - """Download the PowerShell detection script for a printer.""" +def _detect_response(printer_id: int): result, error = _get_printer_and_driver(printer_id) if error is not None: return error - printer, driver, driver_name = result rendered = render_detect(printer_name=printer.name) return PlainTextResponse( content=rendered, headers={"Content-Disposition": 'attachment; filename="detect.ps1"'}, ) + + +@router.get("/{printer_id}/scripts/install") +def get_install_script(printer_id: int): + """Download the PowerShell install script for a printer.""" + return _install_response(printer_id) + + +@router.get("/{printer_id}/scripts/install.ps1") +def get_install_script_ps1(printer_id: int): + """Download the PowerShell install script for a printer (.ps1 alias).""" + return _install_response(printer_id) + + +@router.get("/{printer_id}/scripts/uninstall") +def get_uninstall_script(printer_id: int): + """Download the PowerShell uninstall script for a printer.""" + return _uninstall_response(printer_id) + + +@router.get("/{printer_id}/scripts/uninstall.ps1") +def get_uninstall_script_ps1(printer_id: int): + """Download the PowerShell uninstall script for a printer (.ps1 alias).""" + return _uninstall_response(printer_id) + + +@router.get("/{printer_id}/scripts/detect") +def get_detect_script(printer_id: int): + """Download the PowerShell detection script for a printer.""" + return _detect_response(printer_id) + + +@router.get("/{printer_id}/scripts/detect.ps1") +def get_detect_script_ps1(printer_id: int): + """Download the PowerShell detection script for a printer (.ps1 alias).""" + return _detect_response(printer_id) diff --git a/imptune/templates/printer_detail.html b/imptune/templates/printer_detail.html index c4e7a9d..81633a3 100644 --- a/imptune/templates/printer_detail.html +++ b/imptune/templates/printer_detail.html @@ -45,6 +45,17 @@ " x-text="copiedUninstall ? 'Copied!' : 'Copy'" class="secondary outline"> +

Scripts

+ + Download Install Script + + + Download Uninstall Script + + + Download Detect Script + +

Export

Download NinjaRMM ZIP Download .intunewin