diff options
Diffstat (limited to 'addons/mail/models/mail_thread.py')
| -rw-r--r-- | addons/mail/models/mail_thread.py | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/addons/mail/models/mail_thread.py b/addons/mail/models/mail_thread.py index ba652d9ce48..8b7522afa61 100644 --- a/addons/mail/models/mail_thread.py +++ b/addons/mail/models/mail_thread.py @@ -63,7 +63,8 @@ class MailThread(models.AbstractModel): _mail_post_access = 'write' # access required on the document to post on it _mail_mass_mailing = False # enable mass mailing on this model - message_is_follower = fields.Boolean('Is Follower', compute='_compute_is_follower') + message_is_follower = fields.Boolean( + 'Is Follower', compute='_compute_is_follower', search='_search_is_follower') message_follower_ids = fields.One2many( 'mail.followers', 'res_id', string='Followers', domain=lambda self: [('res_model', '=', self._name)]) @@ -135,6 +136,18 @@ class MailThread(models.AbstractModel): for record in self: record.message_is_follower = record.id in following_ids + @api.model + def _search_is_follower(self, operator, operand): + followers = self.env['mail.followers'].sudo().search([ + ('res_model', '=', self._name), + ('partner_id', '=', self.env.user.partner_id.id), + ]) + # Cases ('message_is_follower', '=', True) or ('message_is_follower', '!=', False) + if (operator == '=' and operand) or (operator == '!=' and not operand): + return [('id', 'in', followers.mapped('res_id'))] + else: + return [('id', 'not in', followers.mapped('res_id'))] + @api.multi def _get_message_unread(self): res = dict((res_id, 0) for res_id in self.ids) |
