fix: prevent AttributeError for User users by skipping filter area creation
- Modified _create_widgets() to conditionally create filter area only for admin users - Modified _create_filter_checkboxes() to return early for non-admin users - This prevents AttributeError when accessing self.filter_frame for User users - Admin users retain full filtering functionality - Fixes the 'MaterialTypeManagementDialog' object has no attribute 'filter_frame' error Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -385,10 +385,10 @@ class MaterialTypeManagementDialog(tk.Toplevel):
|
||||
main_container = ttk.Frame(self, padding=10)
|
||||
main_container.pack(fill=tk.BOTH, expand=True)
|
||||
|
||||
# 顶部:筛选区域
|
||||
# 顶部:筛选区域 - 仅管理员可见
|
||||
if self.session_manager.is_admin():
|
||||
filter_frame = ttk.LabelFrame(main_container, text="筛选(按负责人)", padding=10)
|
||||
filter_frame.pack(fill=tk.X, pady=(0, 10))
|
||||
|
||||
self._create_filter_area(filter_frame)
|
||||
|
||||
# 中部:数据表格
|
||||
@@ -513,19 +513,16 @@ class MaterialTypeManagementDialog(tk.Toplevel):
|
||||
|
||||
def _create_filter_checkboxes(self):
|
||||
"""创建筛选复选框"""
|
||||
# PERMISSION CHECK: 非管理员用户不创建筛选 UI
|
||||
if not self.session_manager.is_admin():
|
||||
self.managers = [self.session_manager.get_username()]
|
||||
return
|
||||
|
||||
# 管理员:清空并重新创建复选框
|
||||
for widget in self.filter_frame.winfo_children():
|
||||
widget.destroy()
|
||||
self.manager_checkboxes.clear()
|
||||
|
||||
# PERMISSION CHECK: 非管理员用户隐藏筛选 UI
|
||||
if not self.session_manager.is_admin():
|
||||
self.managers = [self.session_manager.get_username()]
|
||||
ttk.Label(
|
||||
self.filter_frame,
|
||||
text=f"仅显示您的数据(负责人:{self.session_manager.get_username()})"
|
||||
).pack(anchor="w")
|
||||
return
|
||||
|
||||
# 管理员:获取所有负责人
|
||||
from db.materials_to_be_deleted_dao import MaterialsTypeToBeDeletedDAO
|
||||
dao = MaterialsTypeToBeDeletedDAO()
|
||||
|
||||
Reference in New Issue
Block a user