我正在尝试创建一个向导,从res.partner的窗体视图中的按钮启动,其页脚上有两个按钮(除了'取消'一个):第一个启动一个方法,在相关内部做东西res.partner记录(但它对主要问题并不重要);第二个打开带有预编译值的电子邮件表单(同样,来自相关的res.partner的记录集值)。
我的问题是:当我点击打开电子邮件表单的“发送电子邮件”按钮时,如何阻止向导关闭,以便(在我完成电子邮件本身之后)我可以回到向导然后单击“执行操作”按钮?
我在Python 2.7.14中使用Odoo 8。 我已经阅读了类似的线程"Odoo - prevent button from closing wizard",但我不认为这些解决方案可以提供帮助:大多数解决方案只是打开一个新的向导(使用旧的向导),但这不是我需要的。电子邮件完成后,我需要旧的向导留在那里。
我的代码:
1-启动向导的按钮(来自res.partner):
<button string="Execute action" type="action"
name="%(execute_action_wizard)d"
attrs="{'invisible': [('action_required', '=', False)]}"
class="oe_highlight"/>
2-启动向导的操作:
<record id="execute_action_wizard"
model="ir.actions.act_window">
<field name="name">Execute action</field>
<field name="res_model">
account.payment.action.wizard</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id"
ref="execute_action_wizard_form_view"/>
<field name="target">new</field>
</record>
3-向导本身内的按钮:
<button name="compute_execute_action"
string="Execute action"
class="oe_highlight"
type="object"/>
<button name="open_form_send_mail"
string="Send email"
class="oe_highlight"
type="object"
attrs="{'invisible':[('send_mail', '=', False)]}"/>
4-电子邮件表单方法:
@api.multi
def open_form_send_mail(self):
self.ensure_one()
template_id = self.email_template_id.id
partner_id = self._context['active_ids'][0]
compose_form_id = self.env.ref(
'mail.email_compose_message_wizard_form', False).id
ctx = dict(
default_res_id=partner_id,
default_use_template=True,
default_template_id=template_id or False,
default_composition_mode='comment',
default_model='res.partner',
default_partner_ids=[(6, 0, [partner_id])],
default_subject=_(u"Client email")
)
return {
'name': _('Compose Email'),
'context': ctx,
'type': 'ir.actions.act_window',
'target': 'new',
'res_model': 'mail.compose.message',
'views': [(compose_form_id, 'form')],
'view_id': compose_form_id,
'view_mode': 'form',
'view_type': 'form',
'flags': {'action_buttons': True},
}
请帮帮我。这让我发疯了。