fix: handle material validation filter for non-admin users
- Fix _get_selected_managers() to return current username for non-admin users - Fix _restore_manager_filter_state() to skip checkbox operations for non-admin users - Initialize filter_frame attribute for non-admin users to avoid AttributeError Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -400,6 +400,9 @@ class MaterialValidationTab(ttk.Frame):
|
|||||||
"""创建负责人筛选区域"""
|
"""创建负责人筛选区域"""
|
||||||
# PERMISSION CHECK: 非管理员用户不显示筛选区域
|
# PERMISSION CHECK: 非管理员用户不显示筛选区域
|
||||||
if not self.session_manager.is_admin():
|
if not self.session_manager.is_admin():
|
||||||
|
# 创建空的 filter_frame 以避免后续代码访问属性时报错
|
||||||
|
self.filter_frame = ttk.Frame(parent)
|
||||||
|
self.filter_canvas = None
|
||||||
return
|
return
|
||||||
|
|
||||||
# 创建复选框容器
|
# 创建复选框容器
|
||||||
@@ -520,7 +523,15 @@ class MaterialValidationTab(ttk.Frame):
|
|||||||
self._apply_manager_filter()
|
self._apply_manager_filter()
|
||||||
|
|
||||||
def _get_selected_managers(self) -> List[str]:
|
def _get_selected_managers(self) -> List[str]:
|
||||||
"""获取选中的负责人列表"""
|
"""获取选中的负责人列表
|
||||||
|
|
||||||
|
PERMISSION CHECK: 非管理员用户返回当前用户名
|
||||||
|
"""
|
||||||
|
# PERMISSION CHECK: 非管理员用户直接返回当前用户名
|
||||||
|
if not self.session_manager.is_admin():
|
||||||
|
return [self.session_manager.get_username()]
|
||||||
|
|
||||||
|
# 管理员:从复选框获取选中的负责人
|
||||||
return [
|
return [
|
||||||
manager for manager, var in self.manager_checkboxes.items()
|
manager for manager, var in self.manager_checkboxes.items()
|
||||||
if var.get()
|
if var.get()
|
||||||
@@ -897,8 +908,17 @@ class MaterialValidationTab(ttk.Frame):
|
|||||||
self._update_log(f"初始化筛选器失败:{str(e)}", "ERROR")
|
self._update_log(f"初始化筛选器失败:{str(e)}", "ERROR")
|
||||||
|
|
||||||
def _restore_manager_filter_state(self, selected_managers: List[str]):
|
def _restore_manager_filter_state(self, selected_managers: List[str]):
|
||||||
"""恢复负责人筛选状态"""
|
"""恢复负责人筛选状态
|
||||||
|
|
||||||
|
PERMISSION CHECK: 非管理员用户直接应用筛选(不需要操作复选框)
|
||||||
|
"""
|
||||||
try:
|
try:
|
||||||
|
# PERMISSION CHECK: 非管理员用户直接应用筛选
|
||||||
|
if not self.session_manager.is_admin():
|
||||||
|
self._apply_manager_filter()
|
||||||
|
return
|
||||||
|
|
||||||
|
# 管理员:恢复复选框状态
|
||||||
for manager in selected_managers:
|
for manager in selected_managers:
|
||||||
if manager in self.manager_checkboxes:
|
if manager in self.manager_checkboxes:
|
||||||
self.manager_checkboxes[manager].set(True)
|
self.manager_checkboxes[manager].set(True)
|
||||||
|
|||||||
Reference in New Issue
Block a user