certflow.views.bases.lookup_table_manager_view module

通用对照表管理界面基类

把「材质牌号 / 口径映射 / 型号→压力」等基础字典表的 CRUD 维护界面统一到 一套**列定义驱动 + 共享控件**的框架中,避免每个表重复手写工具栏、表格、 增删改与编辑表单。

共享控件(certflow.widgets): - ActionToolbar:按钮簇工具栏(按内容定宽) - EnhancedTable:列元数据 → 表头 + 选择/编辑行为 + 列头点击客户端排序 - FilterBar:统一条件契约的字段级筛选条 - ConfirmDialog:危险操作二次确认 - DialogButtonBar:确认 / 取消按钮栏

字段类型(field_type): - text 普通文本(QLineEdit) - int 整数(空→None;必填时空值抛 ValueError) - float 浮点数(同上) - bool 布尔(QCheckBox,可设 default) - choice 下拉单选(QComboBox,choices 列表,可含空串表示允许为空)

使用方式:子类只需声明 _COLUMNS``(表格列)与 ``_EDIT_FIELDS``(编辑表单), 并提供一个实现标准 CRUD 接口的控制器(``list_all / get_by_id / create / update / delete / close)即可。

class certflow.views.bases.lookup_table_manager_view.ColumnSpec(header, field, editable=True, field_type='text')[源代码]

基类:object

表格列定义。

参数:
header

表头显示文本

Type:

str

field

对应 ORM 模型字段名(用于 getattr 取值)

Type:

str

editable

是否可编辑(当前仅作语义标记,表格本身只读)

Type:

bool

field_type

字段类型,决定表格中的展示方式(bool → ✅/❌)

Type:

str

header: str
field: str
editable: bool = True
field_type: str = 'text'
class certflow.views.bases.lookup_table_manager_view.FieldSpec(field, label, field_type='text', placeholder='', choices=None, required=False, empty_as_none=False, default=None)[源代码]

基类:object

编辑表单字段定义。

参数:
field

模型字段名

Type:

str

label

表单标签(可含 * 提示必填)

Type:

str

field_type

字段类型(text/int/float/bool/choice)

Type:

str

placeholder

输入框占位提示

Type:

str

choices

choice 类型的下拉选项列表(可含空串表示允许为空)

Type:

list[str] | None

required

是否必填(空值抛 ValueError

Type:

bool

empty_as_none

文本为空时返回 None(而非空串)

Type:

bool

default

bool 类型的默认勾选值;其他类型暂未使用

Type:

Any

field: str
label: str
field_type: str = 'text'
placeholder: str = ''
choices: list[str] | None = None
required: bool = False
empty_as_none: bool = False
default: Any = None
class certflow.views.bases.lookup_table_manager_view.LookupRecordEditDialog(edit_fields, record=None, title='编辑记录', parent=None)[源代码]

基类:QDialog

通用编辑子对话框(新增/编辑共用),由 FieldSpec 列表驱动构建表单。

参数:
  • edit_fields (list[FieldSpec])

  • record (Any)

  • title (str)

  • parent (QWidget | None)

get_data()[源代码]

收集表单数据,按字段类型转换;必填为空抛 ValueError

返回:

字段名 → 值(空文本按类型转为 None 或空串)

返回类型:

dict[str, Any]

staticMetaObject = PySide6.QtCore.QMetaObject("LookupRecordEditDialog" inherits "QDialog": )
class certflow.views.bases.lookup_table_manager_view.LookupTableManagerView(*, controller, columns, edit_fields, title, window_title=None, extra_actions=None, dict_key=None, quick_filters=None, table_key=None, parent=None)[源代码]

基类:QDialog

通用对照表管理对话框(列定义驱动 + 共享控件)。

子类通过传入 controller / columns / edit_fields / title 即可获得完整的「工具栏 + 表格 + 增删改 + 编辑表单」能力,无需重复造轮子。

参数:
refresh()[源代码]

从数据库重新加载全量数据并应用当前筛选/排序。

返回类型:

None

on_add()[源代码]

新增记录

返回类型:

None

on_edit()[源代码]

编辑选中记录

返回类型:

None

on_delete()[源代码]

删除选中记录(共享件 ConfirmDialog 统一二次确认)

返回类型:

None

on_export_csv()[源代码]

把当前 DB 表整表导出为 CSV 快照(与界面编辑保持同步)。

返回类型:

None

on_import_csv()[源代码]

从 CSV 快照 upsert 回 DB(外部编辑的 CSV 同步进库)。

返回类型:

None

closeEvent(event)[源代码]

关闭时释放控制器会话

参数:

event (Any)

返回类型:

None

staticMetaObject = PySide6.QtCore.QMetaObject("LookupTableManagerView" inherits "QDialog": )