odoo-12:如何解决 write() 方法问题
odoo-12 : How to solve the write() method problem
在我的例子中,我继承了 crm 表单并添加了一个 mamy2many 字段这个名称 [估计分配给] 当我 select 来自该字段的用户并保存记录时 selected 用户在添加关注者中添加并发送邮件。现在的问题是,当我将看板卡从一个阶段更改为另一个阶段时,如果在表格估计字段中分配了一些用户,邮件也会发送给这些用户。
但我只想在打开记录和 select 估计字段中的用户时发送邮件,然后单击我想发送邮件的保存按钮。不是当我将看板卡从一个阶段更改为另一个阶段时。
如果你知道请告诉我。
@api.model
def create(self, vals):
lead_res = super(CrmLead, self).create(vals)
for rec in lead_res:
if rec.estimation_id:
partner_ids = []
for est_rec in rec.estimation_id:
if est_rec.partner_id and est_rec.partner_id.email:
user_name = self.env.user.name_get()[0][1]
partner_ids.append(est_rec.partner_id.id)
template_obj = self.env['mail.mail']
template_data = {
'subject': 'New Estimation Asign : ',
'body_html': "Hello,</br><h5>" + user_name + " invited you to follow Lead/Opportunity document : " + rec.name + "</h5>",
'email_from': self.env['mail.message']._get_default_from(),
'email_to': est_rec.partner_id.email
}
template_id = template_obj.create(template_data)
template_obj.send(template_id)
if partner_ids:
rec.message_subscribe(partner_ids, None)
return lead_res
@api.multi
def write(self, vals):
res = super(CrmLead, self).write(vals)
for rec in self:
if rec.estimation_id:
partner_ids = []
for est_rec in rec.estimation_id:
if est_rec.partner_id and est_rec.partner_id.email:
user_name = self.env.user.name_get()[0][1]
partner_ids.append(est_rec.partner_id.id)
template_obj = self.env['mail.mail']
template_data = {
'subject': 'New Estimation Asign : ',
'body_html': "Hello,</br><h5>" + user_name + " invited you to follow Lead/Opportunity document : " + rec.name + "</h5>",
'email_from': self.env['mail.message']._get_default_from(),
'email_to': est_rec.partner_id.email
}
template_id = template_obj.create(template_data)
print('===================To sent ==================', est_rec.partner_id.email)
template_obj.send(template_id)
rec.message_subscribe(partner_ids, None)
#message_unsubscribe
message_partner_ids = rec.message_partner_ids.ids
est_ids = [est_rec.partner_id.id for est_rec in rec.estimation_id] + [self.env.ref('base.partner_root').id]
unsub_partners = set(message_partner_ids) - set(est_ids)
if list(unsub_partners):
rec.message_unsubscribe(list(unsub_partners))
else:
print("+++++============= Else Part =============+++++")
return res
尝试添加另一个条件以在 estimation_id
发生变化时发送邮件。
if u'estimation_id' in vals and rec.estimation_id:
编辑
以下代码将计算新添加的用户:
user_ids = {rec.id: [user_id.id for user_id in rec.estimation_id] for rec in self}
res = super(CrmLead, self).write(vals)
for rec in self:
new_user_ids = [user.id for user in rec.estimation_id if user.id not in user_ids[rec.id]]
在我的例子中,我继承了 crm 表单并添加了一个 mamy2many 字段这个名称 [估计分配给] 当我 select 来自该字段的用户并保存记录时 selected 用户在添加关注者中添加并发送邮件。现在的问题是,当我将看板卡从一个阶段更改为另一个阶段时,如果在表格估计字段中分配了一些用户,邮件也会发送给这些用户。
但我只想在打开记录和 select 估计字段中的用户时发送邮件,然后单击我想发送邮件的保存按钮。不是当我将看板卡从一个阶段更改为另一个阶段时。
如果你知道请告诉我。
@api.model
def create(self, vals):
lead_res = super(CrmLead, self).create(vals)
for rec in lead_res:
if rec.estimation_id:
partner_ids = []
for est_rec in rec.estimation_id:
if est_rec.partner_id and est_rec.partner_id.email:
user_name = self.env.user.name_get()[0][1]
partner_ids.append(est_rec.partner_id.id)
template_obj = self.env['mail.mail']
template_data = {
'subject': 'New Estimation Asign : ',
'body_html': "Hello,</br><h5>" + user_name + " invited you to follow Lead/Opportunity document : " + rec.name + "</h5>",
'email_from': self.env['mail.message']._get_default_from(),
'email_to': est_rec.partner_id.email
}
template_id = template_obj.create(template_data)
template_obj.send(template_id)
if partner_ids:
rec.message_subscribe(partner_ids, None)
return lead_res
@api.multi
def write(self, vals):
res = super(CrmLead, self).write(vals)
for rec in self:
if rec.estimation_id:
partner_ids = []
for est_rec in rec.estimation_id:
if est_rec.partner_id and est_rec.partner_id.email:
user_name = self.env.user.name_get()[0][1]
partner_ids.append(est_rec.partner_id.id)
template_obj = self.env['mail.mail']
template_data = {
'subject': 'New Estimation Asign : ',
'body_html': "Hello,</br><h5>" + user_name + " invited you to follow Lead/Opportunity document : " + rec.name + "</h5>",
'email_from': self.env['mail.message']._get_default_from(),
'email_to': est_rec.partner_id.email
}
template_id = template_obj.create(template_data)
print('===================To sent ==================', est_rec.partner_id.email)
template_obj.send(template_id)
rec.message_subscribe(partner_ids, None)
#message_unsubscribe
message_partner_ids = rec.message_partner_ids.ids
est_ids = [est_rec.partner_id.id for est_rec in rec.estimation_id] + [self.env.ref('base.partner_root').id]
unsub_partners = set(message_partner_ids) - set(est_ids)
if list(unsub_partners):
rec.message_unsubscribe(list(unsub_partners))
else:
print("+++++============= Else Part =============+++++")
return res
尝试添加另一个条件以在 estimation_id
发生变化时发送邮件。
if u'estimation_id' in vals and rec.estimation_id:
编辑
以下代码将计算新添加的用户:
user_ids = {rec.id: [user_id.id for user_id in rec.estimation_id] for rec in self}
res = super(CrmLead, self).write(vals)
for rec in self:
new_user_ids = [user.id for user in rec.estimation_id if user.id not in user_ids[rec.id]]