[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:
@@ -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
|
||||
|
||||
#------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user