From 5a5ad6a7b33dacd683efa7eb3908cb022ee2adbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Thu, 30 Jul 2026 11:36:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E7=BA=A6=E6=9D=9F=EF=BC=8C?= =?UTF-8?q?=E6=8C=89=E9=92=AE=E6=8F=90=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_issue/models/issue_library.py | 36 +++++++++++++++++++--- yuthon_issue/views/issue_library_views.xml | 30 +++++++++--------- 2 files changed, 47 insertions(+), 19 deletions(-) diff --git a/yuthon_issue/models/issue_library.py b/yuthon_issue/models/issue_library.py index d236c848d..903a7ec93 100644 --- a/yuthon_issue/models/issue_library.py +++ b/yuthon_issue/models/issue_library.py @@ -908,20 +908,46 @@ class IssueLibrary(models.Model): ]) def unlink(self): + """删除议题:仅待推送/待申报/已取消状态可删,管理员可绕过""" + # 判断当前用户是否为系统管理员 + is_admin = self.env.user.has_group('base.group_system') + # 可删除的议题状态:待推送、待申报、已取消 + deletable_states = ('to_do', 'draft', 'cancel') + # 获取议题状态的中文标签映射 + state_label = dict(self._fields['issue_state'].selection) for i in self: - if i.issue_state == 'on_meet': - raise UserError('议题已上会,不能删除') + # 管理员跳过状态检查 + if is_admin: + continue + # 非可删状态抛出弹窗提醒 + if i.issue_state not in deletable_states: + raise UserError( + '议题【%s】已进入流程(当前状态:%s),不能删除!\n' + '如需作废,请先走"取消"流程。' % (i.name, state_label[i.issue_state]) + ) return super().unlink() def my_unlink(self): + """我的议题删除:非管理员只能删自己创建的,且仅限待推送/待申报/已取消状态""" + # 判断当前用户是否为系统管理员 is_admin = self.env.user.has_group('base.group_system') + # 当前登录用户 current_user = self.env.user + # 可删除的议题状态:待推送、待申报、已取消 + deletable_states = ('to_do', 'draft', 'cancel') + # 获取议题状态的中文标签映射 + state_label = dict(self._fields['issue_state'].selection) for i in self: - if i.issue_state == 'on_meet': - raise UserError('议题已上会,不能删除') + # 非可删状态抛出弹窗提醒 + if i.issue_state not in deletable_states: + raise UserError( + '议题【%s】已进入流程(当前状态:%s),不能删除!\n' + '如需作废,请先走"取消"流程。' % (i.name, state_label[i.issue_state]) + ) + # 非管理员只能删除自己创建的议题 if not is_admin: if i.employee_id.user_id != current_user: - raise UserError('只能删除自己的记录,无权删除他人数据') + raise UserError('只能删除自己创建的议题,无权删除他人数据!') return super().unlink() @api.depends('name') diff --git a/yuthon_issue/views/issue_library_views.xml b/yuthon_issue/views/issue_library_views.xml index 4331d7d0e..24330f758 100644 --- a/yuthon_issue/views/issue_library_views.xml +++ b/yuthon_issue/views/issue_library_views.xml @@ -38,8 +38,10 @@