diff --git a/mail_activity_team/models/mail_activity.py b/mail_activity_team/models/mail_activity.py
index 179dafe00..df9add545 100644
--- a/mail_activity_team/models/mail_activity.py
+++ b/mail_activity_team/models/mail_activity.py
@@ -1,5 +1,7 @@
# Copyright 2018-22 ForgeFlow S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+import json
+
from odoo import SUPERUSER_ID, _, api, fields, models
from odoo.exceptions import ValidationError
@@ -20,42 +22,40 @@ class MailActivity(models.Model):
return self.env["mail.activity.team"].search(domain, limit=1)
user_id = fields.Many2one(required=False)
+ team_user_id = fields.Many2one(related="user_id", readonly=False)
team_id = fields.Many2one(
comodel_name="mail.activity.team", default=lambda s: s._get_default_team_id()
)
+ user_id_domain = fields.Char(compute="_compute_user_id_domain")
+
+ @api.depends("team_id")
+ def _compute_user_id_domain(self):
+ for record in self:
+ domain = []
+ if record.team_id:
+ domain.append(("id", "in", record.team_id.member_ids.ids))
+ record.user_id_domain = json.dumps(domain)
@api.onchange("user_id")
def _onchange_user_id(self):
- res = {"domain": {"team_id": []}}
- if not self.user_id:
- return res
- res["domain"]["team_id"] = [
- "|",
- ("res_model_ids", "=", False),
- ("res_model_ids", "in", self.res_model_id.ids),
- ]
- if self.team_id and self.user_id in self.team_id.member_ids:
- return res
+ if not self.user_id or (
+ self.team_id and self.user_id in self.team_id.member_ids
+ ):
+ return
self.team_id = self.with_context(
default_res_model=self.sudo().res_model_id.model
)._get_default_team_id(user_id=self.user_id.id)
- return res
@api.onchange("team_id")
def _onchange_team_id(self):
- res = {"domain": {"user_id": []}}
- if not self.team_id:
- return res
- res["domain"]["user_id"] = [("id", "in", self.team_id.member_ids.ids)]
- if self.user_id not in self.team_id.member_ids:
+ if self.team_id and self.user_id not in self.team_id.member_ids:
if self.team_id.user_id:
self.user_id = self.team_id.user_id
elif len(self.team_id.member_ids) == 1:
self.user_id = self.team_id.member_ids
else:
self.user_id = self.env["res.users"]
- return res
@api.constrains("team_id", "user_id")
def _check_team_and_user(self):
diff --git a/mail_activity_team/tests/test_mail_activity_team.py b/mail_activity_team/tests/test_mail_activity_team.py
index c0c0bc50d..161b0a495 100644
--- a/mail_activity_team/tests/test_mail_activity_team.py
+++ b/mail_activity_team/tests/test_mail_activity_team.py
@@ -1,5 +1,7 @@
# Copyright 2018-22 ForgeFlow S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+import json
+
from odoo.exceptions import ValidationError
from odoo.tests.common import Form, TransactionCase
@@ -200,6 +202,10 @@ class TestMailActivityTeam(TransactionCase):
self.team2.member_ids = self.employee2
with Form(self.act2) as form:
form.team_id = self.team2
+ self.assertIn(
+ form.user_id,
+ self.env["res.users"].search(json.loads(form.user_id_domain)),
+ )
self.assertEqual(form.user_id, self.employee2)
def test_activity_onchanges_team_different_member_no_leader(self):
diff --git a/mail_activity_team/views/mail_activity_views.xml b/mail_activity_team/views/mail_activity_views.xml
index 2c0be0c55..9b341bd50 100644
--- a/mail_activity_team/views/mail_activity_views.xml
+++ b/mail_activity_team/views/mail_activity_views.xml
@@ -6,8 +6,22 @@
mail.activity
+
+ {'invisible': [('team_id', '!=', False)]}
+
-
+
+
@@ -31,8 +45,21 @@
ref="mail_activity_board.mail_activity_view_form_board"
/>
+
+ {'invisible': [('team_id', '=', False)]}
+
-
+
+