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.

34 lines
1.4 KiB

  1. # Copyright 2018 Eficent Business and IT Consulting Services, S.L.
  2. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
  3. from odoo import api, models, fields
  4. class MailActivity(models.Model):
  5. _inherit = "mail.activity"
  6. def _get_default_team_id(self):
  7. res_model = self.env.context.get('default_res_model', False)
  8. model = self.env['ir.model'].search([('model', '=', res_model)],
  9. limit=1)
  10. domain = [('member_ids', 'in', [self.env.uid])]
  11. if res_model:
  12. domain.extend(['|', ('res_model_ids', '=', False),
  13. ('res_model_ids', 'in', model.ids)])
  14. return self.env['mail.activity.team'].search(domain, limit=1)
  15. team_id = fields.Many2one('mail.activity.team',
  16. default=lambda s: s._get_default_team_id(),)
  17. @api.onchange('res_model_id', 'user_id')
  18. def _onchange_model_user(self):
  19. res = {'domain': {'team_id': []}}
  20. if self.team_id:
  21. if self.user_id not in self.team_id.member_ids:
  22. self.team_id = False
  23. if self.res_model_id:
  24. res['domain']['team_id'] = [
  25. ('res_model_ids', 'in', self.res_model_id.ids)]
  26. if self.user_id:
  27. res['domain']['team_id'] = [
  28. ('member_ids', 'in', self.user_id.ids)]
  29. return res