[FIX] mail: fix permission issue when starring/marking messages

If a user does not have write permissions on a model, he should still be
able to remove himself from the many2many relation.

This caused a problem: some messages could not be modified by a user
(star/unstar or mark as read)
This commit is contained in:
Géry Debongnie
2015-10-16 15:52:01 +02:00
parent 4c7ab52a67
commit 9f86de81bc
+10 -2
View File
@@ -150,12 +150,18 @@ class Message(models.Model):
def set_message_needaction(self, partner_ids=None):
if not partner_ids:
partner_ids = [self.env.user.partner_id.id]
if set(partner_ids) == set([self.env.user.partner_id.id]):
# a user should be able to mark a message as needaction for him
self = self.sudo()
return self.write({'needaction_partner_ids': [(4, pid) for pid in partner_ids]})
@api.multi
def set_message_done(self, partner_ids=None):
if not partner_ids:
partner_ids = [self.env.user.partner_id.id]
if set(partner_ids) == set([self.env.user.partner_id.id]):
# a user should be able to mark a message as done for him
self = self.sudo()
return self.write({'needaction_partner_ids': [(3, pid) for pid in partner_ids]})
@api.multi
@@ -167,10 +173,12 @@ class Message(models.Model):
:param bool create_missing: create notifications for missing entries
(i.e. when acting on displayed messages not notified)
"""
# a user should always be able to star a message he can read
self.check_access_rule('read')
if starred:
self.write({'starred_partner_ids': [(4, self.env.user.partner_id.id)]})
self.sudo().write({'starred_partner_ids': [(4, self.env.user.partner_id.id)]})
else:
self.write({'starred_partner_ids': [(3, self.env.user.partner_id.id)]})
self.sudo().write({'starred_partner_ids': [(3, self.env.user.partner_id.id)]})
return starred
#------------------------------------------------------