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 = ttk.Frame(self, padding=10)
|
||||||
main_container.pack(fill=tk.BOTH, expand=True)
|
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 = ttk.LabelFrame(main_container, text="筛选(按负责人)", padding=10)
|
||||||
filter_frame.pack(fill=tk.X, pady=(0, 10))
|
filter_frame.pack(fill=tk.X, pady=(0, 10))
|
||||||
|
|
||||||
self._create_filter_area(filter_frame)
|
self._create_filter_area(filter_frame)
|
||||||
|
|
||||||
# 中部:数据表格
|
# 中部:数据表格
|
||||||
@@ -513,19 +513,16 @@ class MaterialTypeManagementDialog(tk.Toplevel):
|
|||||||
|
|
||||||
def _create_filter_checkboxes(self):
|
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():
|
for widget in self.filter_frame.winfo_children():
|
||||||
widget.destroy()
|
widget.destroy()
|
||||||
self.manager_checkboxes.clear()
|
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
|
from db.materials_to_be_deleted_dao import MaterialsTypeToBeDeletedDAO
|
||||||
dao = MaterialsTypeToBeDeletedDAO()
|
dao = MaterialsTypeToBeDeletedDAO()
|
||||||
|
|||||||
Reference in New Issue
Block a user