certflow.controllers.output_controller module

统一输出控制器(§11.8 阶段4 控制器收敛)。

聚合打印 / 扫描两控制器,对外提供单一调度入口 OutputController.run(target, action, **kwargs), 避免 OutputView / main_window 直接散落多处控制器引用。各子目标仍由既有 PrinterController / ScanController 承担实际工作(蓝图 §11.8 阶段4『或保留 PrinterController/ScanController 被 dispatch 调』),本类只做统一路由 + 显式 dispatch 表。

设计要点: - 打印机控制器(PrinterController)跨打印 / 扫描共享一份(它内部以 worker 列表承载并发,

共享安全);扫描控制器(ScanController)由 前台 ScanView 持有,PrintView 的后台扫描 仍使用其独立实例(避免与前台任务互相 cancel / 信号交叉)。

  • dispatch 表为目标驱动的显式映射,便于后续接入 output.targets.<t>.run 配置键。

class certflow.controllers.output_controller.OutputController(session=None, printer_name=None, printer_controller=None, scan_controller=None)[源代码]

基类:object

打印 / 扫描统一调度控制器(§11.8 阶段4)。

参数:
run(target, action='print', **kwargs)[源代码]

按 (target, action) 显式 dispatch 到对应控制器方法。

参数:
  • target (str) -- "print" / "scan"

  • action (str) -- 目标内的动作键(见 _dispatch 表)

  • **kwargs (Any) -- 透传给具体控制器方法

返回:

被调方法的返回值(generate_scans 返回 task_id;print_certificate 为 None)

抛出:

KeyError -- target/action 不在 dispatch 表中

返回类型:

Any

property printer_controller: PrinterController
property scan_controller: ScanController
get_controller(target)[源代码]

按目标取对应控制器(统一出口)。

参数:

target (str)

返回类型:

Any

get_printers()[源代码]
返回类型:

list[str]

property current_printer: str
get_printer_status()[源代码]
返回类型:

bool