删除约束,按钮提醒

This commit is contained in:
李鹏宇
2026-07-30 11:36:53 +08:00
parent 637d4498da
commit 5a5ad6a7b3
2 changed files with 47 additions and 19 deletions
+31 -5
View File
@@ -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')
+16 -14
View File
@@ -38,8 +38,10 @@
<button name="revoke" string="撤销" type="object" class="btn btn-blue"
invisible="issue_state == 'draft'" groups="soong_workflow.group_soong_workflow_manager"/>
<button name="issue_cancel" string="取消" type="object" class="btn btn-blue"
confirm="确定要取消此议题吗?取消后议题状态将变为「已取消」,不会删除记录。"
groups="soong_workflow.group_soong_workflow_manager"/>
<button name="my_unlink" string="删除" type="object" class="btn btn-blue"
confirm="确定要删除此议题吗?删除后不可恢复!"
invisible="issue_state not in ['draft', 'to_do']"/>
<button name="approval_details" string="审批详情" type="object" class="btn btn-blue"
invisible="not issue_approval_id"/>
@@ -92,8 +94,8 @@
<button name="library_push" string="推送" type="object" class="btn btn-blue"
invisible="push_invisible"/>
<!-- <button name="revoke" string="撤销" type="object" class="oe_highlight" invisible="issue_state == 'draft'"/>-->
<button name="issue_cancel" string="取消" type="object" class="btn btn-blue"/>
<button name="unlink" string="删除" type="object" class="btn btn-blue"/>
<button name="issue_cancel" string="取消" type="object" class="btn btn-blue" confirm="确定要取消此议题吗?取消后议题状态将变为「已取消」,不会删除记录。"/>
<button name="unlink" string="删除" type="object" class="btn btn-blue" confirm="确定要删除此议题吗?删除后不可恢复!"/>
<button name="correction" string="修正提醒" type="object" class="btn btn-blue" invisible="is_confirm" groups="base.group_system"/>
<button name="correction_confirm" string="确认" type="object" class="btn btn-blue" invisible="not is_confirm" groups="base.group_system"/>
<button name="approval_details" string="审批详情" type="object" class="btn btn-blue"
@@ -317,7 +319,7 @@
<field name="issue_library_approval_line_ids" readonly="1">
<tree editable="bottom">
<button name="open_record" type="object" string="详情" class="btn btn-blue"/>
<button name="unlink" string="删除" type="object" class="btn btn-blue" groups="soong_workflow.group_soong_workflow_manager"/>
<button name="unlink" string="删除" type="object" class="btn btn-blue" confirm="确定要删除此议题吗?删除后不可恢复!" groups="soong_workflow.group_soong_workflow_manager"/>
<field name="issue_library_id" column_invisible="1"/>
<field name="res_model" column_invisible="1"/>
<field name="res_id" column_invisible="1"/>
@@ -485,8 +487,8 @@
<button name="correction" string="修正提醒" type="object" class="btn btn-blue" invisible="is_confirm"/>
<button name="correction_confirm" string="确认" type="object" class="btn btn-blue" invisible="not is_confirm"/>
<button name="refunded" string="退回" type="object" class="btn btn-blue" invisible="party_char"/>
<button name="issue_cancel" string="取消" type="object" class="btn btn-blue"/>
<button name="unlink" string="删除" type="object" class="btn btn-blue"/>
<button name="issue_cancel" string="取消" type="object" class="btn btn-blue" confirm="确定要取消此议题吗?取消后议题状态将变为「已取消」,不会删除记录。"/>
<button name="unlink" string="删除" type="object" class="btn btn-blue" confirm="确定要删除此议题吗?删除后不可恢复!"/>
</tree>
</field>
</record>
@@ -532,8 +534,8 @@
<button name="correction" string="修正提醒" type="object" class="btn btn-blue" invisible="is_confirm"/>
<button name="correction_confirm" string="确认" type="object" class="btn btn-blue" invisible="not is_confirm"/>
<button name="refunded" string="退回" type="object" class="btn btn-blue" invisible="party_char"/>
<button name="issue_cancel" string="取消" type="object" class="btn btn-blue"/>
<button name="unlink" string="删除" type="object" class="btn btn-blue"/>
<button name="issue_cancel" string="取消" type="object" class="btn btn-blue" confirm="确定要取消此议题吗?取消后议题状态将变为「已取消」,不会删除记录。"/>
<button name="unlink" string="删除" type="object" class="btn btn-blue" confirm="确定要删除此议题吗?删除后不可恢复!"/>
</tree>
</field>
</record>
@@ -612,7 +614,7 @@
<field name="issue_library_approval_line_ids" readonly="1">
<tree editable="bottom">
<button name="open_record" type="object" string="详情" class="btn btn-blue"/>
<button name="unlink" string="删除" type="object" class="btn btn-blue" groups="soong_workflow.group_soong_workflow_manager"/>
<button name="unlink" string="删除" type="object" class="btn btn-blue" confirm="确定要删除此议题吗?删除后不可恢复!" groups="soong_workflow.group_soong_workflow_manager"/>
<field name="issue_library_id" column_invisible="1"/>
<field name="res_model" column_invisible="1"/>
<field name="res_id" column_invisible="1"/>
@@ -745,8 +747,8 @@
<button name="correction" string="修正提醒" type="object" class="btn btn-blue" invisible="is_confirm"/>
<button name="correction_confirm" string="确认" type="object" class="btn btn-blue" invisible="not is_confirm"/>
<button name="refunded" string="退回" type="object" class="btn btn-blue" invisible="class_char"/>
<button name="issue_cancel" string="取消" type="object" class="btn btn-blue"/>
<button name="unlink" string="删除" type="object" class="btn btn-blue"/>
<button name="issue_cancel" string="取消" type="object" class="btn btn-blue" confirm="确定要取消此议题吗?取消后议题状态将变为「已取消」,不会删除记录。"/>
<button name="unlink" string="删除" type="object" class="btn btn-blue" confirm="确定要删除此议题吗?删除后不可恢复!"/>
</tree>
</field>
</record>
@@ -823,7 +825,7 @@
<field name="issue_library_approval_line_ids" readonly="1">
<tree editable="bottom">
<button name="open_record" type="object" string="详情" class="btn btn-blue"/>
<button name="unlink" string="删除" type="object" class="btn btn-blue" groups="soong_workflow.group_soong_workflow_manager"/>
<button name="unlink" string="删除" type="object" class="btn btn-blue" confirm="确定要删除此议题吗?删除后不可恢复!" groups="soong_workflow.group_soong_workflow_manager"/>
<field name="issue_library_id" column_invisible="1"/>
<field name="res_model" column_invisible="1"/>
<field name="res_id" column_invisible="1"/>
@@ -943,8 +945,8 @@
<button name="correction" string="修正提醒" type="object" class="btn btn-blue" invisible="is_confirm"/>
<button name="correction_confirm" string="确认" type="object" class="btn btn-blue" invisible="not is_confirm"/>
<button name="refunded" string="退回" type="object" class="btn btn-blue" invisible="boss_char"/>
<button name="issue_cancel" string="取消" type="object" class="btn btn-blue"/>
<button name="unlink" string="删除" type="object" class="btn btn-blue"/>
<button name="issue_cancel" string="取消" type="object" class="btn btn-blue" confirm="确定要取消此议题吗?取消后议题状态将变为「已取消」,不会删除记录。"/>
<button name="unlink" string="删除" type="object" class="btn btn-blue" confirm="确定要删除此议题吗?删除后不可恢复!"/>
</tree>
</field>
</record>
@@ -1021,7 +1023,7 @@
<field name="issue_library_approval_line_ids" readonly="1">
<tree editable="bottom">
<button name="open_record" type="object" string="详情" class="btn btn-blue"/>
<button name="unlink" string="删除" type="object" class="btn btn-blue" groups="soong_workflow.group_soong_workflow_manager"/>
<button name="unlink" string="删除" type="object" class="btn btn-blue" confirm="确定要删除此议题吗?删除后不可恢复!" groups="soong_workflow.group_soong_workflow_manager"/>
<field name="issue_library_id" column_invisible="1"/>
<field name="res_model" column_invisible="1"/>
<field name="res_id" column_invisible="1"/>