You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

45 lines
1.7 KiB

  1. # Copyright 2019 Eficent Business and IT Consulting Services, S.L.
  2. # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
  3. from odoo import api, models, _
  4. from odoo.exceptions import AccessError
  5. class Message(models.Model):
  6. _inherit = 'mail.message'
  7. @api.multi
  8. def write(self, vals):
  9. user = self.env.user
  10. if self._uid == 1:
  11. rec = super(Message, self).write(vals=vals)
  12. elif self._name != 'mail.message':
  13. rec = super(Message, self).write(vals=vals)
  14. elif user.has_group(
  15. 'message_security_author.group_mail_message_manager'):
  16. rec = super(Message, self).write(vals=vals)
  17. elif not self.filtered(lambda m: user not in m.author_id.user_ids):
  18. rec = super(Message, self).write(vals=vals)
  19. else:
  20. raise AccessError(
  21. _("Sorry, you are not allowed to modify this document."))
  22. return rec
  23. @api.multi
  24. def unlink(self):
  25. user = self.env.user
  26. if self._uid == 1:
  27. rec = super(Message, self).unlink()
  28. elif self._name != 'mail.message':
  29. rec = super(Message, self).unlink()
  30. elif self._context.get('deleting_mail_thread'):
  31. rec = super(Message, self).unlink()
  32. elif user.has_group(
  33. 'message_security_author.group_mail_message_manager'):
  34. rec = super(Message, self).unlink()
  35. elif not self.filtered(lambda m: user not in m.author_id.user_ids):
  36. rec = super(Message, self).unlink()
  37. else:
  38. raise AccessError(
  39. _("Sorry, you are not allowed to delete this document."))
  40. return rec