This question has been flagged

Hi Community,

I Inherited the crm.lead model and i created the one drop-down custom field in this field display only group assign users. now i want to do that when i select which users from Dropdown list this users goes and add automatically in the Followers.

How to do this. If you know about it Please let me know.

See My Code.

.py File

estimation_id = fields.Many2many('res.users', default=lambda self:self.env.user, domain=lambda self: [("groups_id", "=", self.env.ref( "estimation.group_user_hide" ).id)], select=True, track_visibility='onchange', string='Estimation Asign To')

Avatar
Discard
Best Answer
Hello,
Please Try this code,
@api.model
def create(self, vals):
lead_res = super(Salecrmlead, self).create(vals)
for rec in lead_res:
if rec.estimation_ids:
partner_ids = []
for est_rec in rec.estimation_ids:
if est_rec.partner_id and est_rec.partner_id.email:
partner_ids.append(est_rec.partner_id.id)
if partner_ids:
rec.message_subscribe(partner_ids, None)
return lead_res

@api.multi
def write(self, vals):
res = super(Salecrmlead, self).write(vals)
for rec in self:
if rec.estimation_ids:
partner_ids = []
for est_rec in rec.estimation_ids:
if est_rec.partner_id and est_rec.partner_id.email:
partner_ids.append(est_rec.partner_id.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_ids] + [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))
return res
Hope it will work for you,
Thanks
Avatar
Discard
Author

Hello @Malay,

Thanks for your reply

Your code is work but email functionality don't work. when you manually Add Follower that time system send the mail. so we need to send the mail so what we do suggest me bro.

Hello,

After adding followers, you can use send mail functionality of mail templates or mail message and send the mail to the new followers.

You can take reference from "add_followers" invite wizard method from Mail module in odoo.

Hope it will help you,

Thanks,

Author

Hello @Malay,

Can you say me how use write method for the same example. if you know please suggest me how to do this. ?

Hello,

Please check this code,

@api.multi

def write(self, vals):

res = super(Salecrmlead, self).write(vals)

for rec in self:

if rec.estimation_ids:

partner_ids = []

for est_rec in rec.estimation_ids:

if est_rec.partner_id and est_rec.partner_id.email:

partner_ids.append(est_rec.partner_id.id)

rec.message_subscribe(partner_ids, None)

return res

thanks

Author

Thanks @Malay,

Now i Have last issue is that

When we are in edit mode and add the Users from dropdown list that time users are added in the followers. but when we remove the user from Dropdown that time the user can't remove into the follower's list. Bro if you know the solution please let me know.

Thanks In Advanced

hello Kiran,

Please check my updated answer.

Thanks

Author

Hello @Malay

As your updated code. i can't remove the single record from the Add Followers List. Record is removed from the Dropdown list but it's as it is in a Add Followers list. How to remove single record from the Add Followers List. PLease let know.

To unsubscribe the user, use message_unsubscribe method same as the message_subscribe. you need to pass only the removed partner ids in the message_unsubscribe method like:
rec.message_unsubscribe(removed_partner_ids, None)

Hope it will work for you.