Help

0

Odoo[12]: How to Add one or more Followers automatically from Drop-down field.

Avatar
Kiran

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
2Answers
3
Avatar
Malay Khamar
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
8Comments
Avatar
Discard
Avatar
Kiran
-

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.

Avatar
Malay Khamar
-

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,

Avatar
Kiran
-

Hello @Malay,

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

Avatar
Malay Khamar
-

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

Avatar
Kiran
-

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

Avatar
Malay Khamar
-

hello Kiran,

Please check my updated answer.

Thanks

Avatar
Kiran
-

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.

Avatar
Malay Khamar
-

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.