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: 非管理员用户不显示筛选区域
|
||||
if not self.session_manager.is_admin():
|
||||
# 创建空的 filter_frame 以避免后续代码访问属性时报错
|
||||
self.filter_frame = ttk.Frame(parent)
|
||||
self.filter_canvas = None
|
||||
return
|
||||
|
||||
# 创建复选框容器
|
||||
@@ -520,7 +523,15 @@ class MaterialValidationTab(ttk.Frame):
|
||||
self._apply_manager_filter()
|
||||
|
||||
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 [
|
||||
manager for manager, var in self.manager_checkboxes.items()
|
||||
if var.get()
|
||||
@@ -897,8 +908,17 @@ class MaterialValidationTab(ttk.Frame):
|
||||
self._update_log(f"初始化筛选器失败:{str(e)}", "ERROR")
|
||||
|
||||
def _restore_manager_filter_state(self, selected_managers: List[str]):
|
||||
"""恢复负责人筛选状态"""
|
||||
"""恢复负责人筛选状态
|
||||
|
||||
PERMISSION CHECK: 非管理员用户直接应用筛选(不需要操作复选框)
|
||||
"""
|
||||
try:
|
||||
# PERMISSION CHECK: 非管理员用户直接应用筛选
|
||||
if not self.session_manager.is_admin():
|
||||
self._apply_manager_filter()
|
||||
return
|
||||
|
||||
# 管理员:恢复复选框状态
|
||||
for manager in selected_managers:
|
||||
if manager in self.manager_checkboxes:
|
||||
self.manager_checkboxes[manager].set(True)
|
||||
|
||||
Reference in New Issue
Block a user