summaryrefslogtreecommitdiff
path: root/addons/mail/models/mail_thread.py
diff options
context:
space:
mode:
Diffstat (limited to 'addons/mail/models/mail_thread.py')
-rw-r--r--addons/mail/models/mail_thread.py15
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)