From 4e570347d1f7ed71b1b7167b38767c47f4df6d80 Mon Sep 17 00:00:00 2001 From: cristina Date: Thu, 16 Jul 2020 14:39:39 +0200 Subject: [PATCH 1/7] helpdesk_mgmt: change domain function for user_id --- helpdesk_mgmt/models/helpdesk_ticket.py | 46 +++++++++++++++---- helpdesk_mgmt/views/helpdesk_ticket_views.xml | 2 +- 2 files changed, 37 insertions(+), 11 deletions(-) diff --git a/helpdesk_mgmt/models/helpdesk_ticket.py b/helpdesk_mgmt/models/helpdesk_ticket.py index 61508fde3a..dbe3b395b6 100644 --- a/helpdesk_mgmt/models/helpdesk_ticket.py +++ b/helpdesk_mgmt/models/helpdesk_ticket.py @@ -43,8 +43,17 @@ def _compute_automatic_user_assignment(self): _user_id = self.search_user_id_by_strategy() self.user_id = _user_id.id if _user_id else None - def _inverse_automatic_user_assignment(self): - pass + + # def _get_user_domain(self): + # + # # if rec.user_id and rec.user_ids and rec.user_id not in rec.team_id.user_ids: + # # rec.update({"user_id": False}) + # res = [("share", "=", False)] + # if self.team_id and self.team_id.user_ids and self.user_id in self.team_id.user_ids: + # import pdb; pdb.set_trace() + # res.append(("id", "in", self.user_ids.ids)) + # print(res) + # return res @api.model def _read_group_stage_ids(self, stages, domain, order): @@ -59,7 +68,7 @@ def _read_group_stage_ids(self, stages, domain, order): string="Assigned user", compute=_compute_automatic_user_assignment, store=True, - inverse=_inverse_automatic_user_assignment, + readonly=False ) user_ids = fields.Many2many( comodel_name="res.users", related="team_id.user_ids", string="Users" @@ -77,6 +86,9 @@ def _read_group_stage_ids(self, stages, domain, order): partner_id = fields.Many2one(comodel_name="res.partner", string="Contact") partner_name = fields.Char() partner_email = fields.Char(string="Email") + computed_domain = fields.Boolean( + compute="_compute_computed_domain" + ) last_stage_update = fields.Datetime( string="Last Stage Update", default=fields.Datetime.now @@ -174,18 +186,32 @@ def _onchange_partner_id(self): @api.onchange("team_id", "user_id") def _onchange_domain_user_id(self): - if self.user_id and self.user_ids and self.user_id not in self.team_id.user_ids: - self.update({"user_id": False}) + res = "" if self.team_id and self.team_id.user_ids: - return { + if self.user_id not in self.team_id.user_ids: + self.update({"user_id": False}) + res = { "domain": { - "user_id": [("id", "in", self.user_ids.ids), ("share", "=", False)] + "user_id": [ + ("id", "in", self.team_id.user_ids.ids), ("share", "=", False) + ] } } - if self.team_id and not self.team_id.user_ids: - return {"domain": {"user_id": [("share", "=", False)]}} else: - return {"domain": {"user_id": []}} + res = { + "domain": { + "user_id": [ + ("share", "=", False) + ] + } + } + print(res) + return res + + def _compute_computed_domain(self): + for record in self: + record._onchange_domain_user_id() + record.computed_domain = True # --------------------------------------------------- # CRUD diff --git a/helpdesk_mgmt/views/helpdesk_ticket_views.xml b/helpdesk_mgmt/views/helpdesk_ticket_views.xml index ff033a93b9..152182ddea 100644 --- a/helpdesk_mgmt/views/helpdesk_ticket_views.xml +++ b/helpdesk_mgmt/views/helpdesk_ticket_views.xml @@ -111,10 +111,10 @@ + From 540394941d1b1bd4ce1f51e73be39f5d5fb4ba99 Mon Sep 17 00:00:00 2001 From: cristina Date: Tue, 21 Jul 2020 10:28:16 +0200 Subject: [PATCH 2/7] [FIX] helpdesk_mgmt: assigned user domain The domain wasn't loading properly when going back from the ticket form view and entering again. We fixed this by means of a computed field dedicated only for this purpose. --- helpdesk_mgmt/models/helpdesk_ticket.py | 48 +++++++------------ helpdesk_mgmt/views/helpdesk_ticket_views.xml | 3 +- 2 files changed, 20 insertions(+), 31 deletions(-) diff --git a/helpdesk_mgmt/models/helpdesk_ticket.py b/helpdesk_mgmt/models/helpdesk_ticket.py index dbe3b395b6..67f010a12f 100644 --- a/helpdesk_mgmt/models/helpdesk_ticket.py +++ b/helpdesk_mgmt/models/helpdesk_ticket.py @@ -43,17 +43,17 @@ def _compute_automatic_user_assignment(self): _user_id = self.search_user_id_by_strategy() self.user_id = _user_id.id if _user_id else None - - # def _get_user_domain(self): - # - # # if rec.user_id and rec.user_ids and rec.user_id not in rec.team_id.user_ids: - # # rec.update({"user_id": False}) - # res = [("share", "=", False)] - # if self.team_id and self.team_id.user_ids and self.user_id in self.team_id.user_ids: - # import pdb; pdb.set_trace() - # res.append(("id", "in", self.user_ids.ids)) - # print(res) - # return res + @api.depends("team_id") + def _compute_domain_user_id(self): + for record in self: + if record.team_id and record.user_ids: + helpdesk_team = self.env["res.users"].search( + [("id", "in", record.user_ids.ids)] + ) + record.computed_domain_user_id = [(6, 0, helpdesk_team.ids)] + else: + helpdesk_team = self.env["res.users"].search([("share", "=", False)]) + record.computed_domain_user_id = [(6, 0, helpdesk_team.ids)] @api.model def _read_group_stage_ids(self, stages, domain, order): @@ -63,12 +63,15 @@ def _read_group_stage_ids(self, stages, domain, order): number = fields.Char(string="Ticket number", default="/", readonly=True) name = fields.Char(string="Title", required=True) description = fields.Text(required=True) + computed_domain_user_id = fields.Many2many( + "res.users", compute="_compute_domain_user_id" + ) user_id = fields.Many2one( comodel_name="res.users", string="Assigned user", compute=_compute_automatic_user_assignment, store=True, - readonly=False + readonly=False, ) user_ids = fields.Many2many( comodel_name="res.users", related="team_id.user_ids", string="Users" @@ -86,10 +89,6 @@ def _read_group_stage_ids(self, stages, domain, order): partner_id = fields.Many2one(comodel_name="res.partner", string="Contact") partner_name = fields.Char() partner_email = fields.Char(string="Email") - computed_domain = fields.Boolean( - compute="_compute_computed_domain" - ) - last_stage_update = fields.Datetime( string="Last Stage Update", default=fields.Datetime.now ) @@ -193,26 +192,15 @@ def _onchange_domain_user_id(self): res = { "domain": { "user_id": [ - ("id", "in", self.team_id.user_ids.ids), ("share", "=", False) + ("id", "in", self.team_id.user_ids.ids), + ("share", "=", False), ] } } else: - res = { - "domain": { - "user_id": [ - ("share", "=", False) - ] - } - } - print(res) + res = {"domain": {"user_id": [("share", "=", False)]}} return res - def _compute_computed_domain(self): - for record in self: - record._onchange_domain_user_id() - record.computed_domain = True - # --------------------------------------------------- # CRUD # --------------------------------------------------- diff --git a/helpdesk_mgmt/views/helpdesk_ticket_views.xml b/helpdesk_mgmt/views/helpdesk_ticket_views.xml index 152182ddea..d1893e868f 100644 --- a/helpdesk_mgmt/views/helpdesk_ticket_views.xml +++ b/helpdesk_mgmt/views/helpdesk_ticket_views.xml @@ -111,10 +111,11 @@ - + From 8afbc7d5570b9b2e33615ce36b8688eef93b7435 Mon Sep 17 00:00:00 2001 From: cristina Date: Tue, 21 Jul 2020 10:46:31 +0200 Subject: [PATCH 3/7] [ADD] helpdesk_mgmt: new tests --- helpdesk_mgmt/tests/test_helpdesk_ticket.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/helpdesk_mgmt/tests/test_helpdesk_ticket.py b/helpdesk_mgmt/tests/test_helpdesk_ticket.py index c0ef3f9002..c4e7fa8161 100644 --- a/helpdesk_mgmt/tests/test_helpdesk_ticket.py +++ b/helpdesk_mgmt/tests/test_helpdesk_ticket.py @@ -137,6 +137,8 @@ def test_automatic_assign(self): self.assertEqual(self.auto_assign_ticket_id.user_id.id, self.user_demo.id) self.auto_assign_ticket_id.user_id = None self.assertEqual(len(self.auto_assign_ticket_id.user_id), 0) + self._onchange_domain_user_id() + self._compute_domain_user_id() # Fixed self.team_id.auto_assign_type = "fixed" From f2c457d96c3700b1fddf7603d3a50fa64d045701 Mon Sep 17 00:00:00 2001 From: cristina Date: Tue, 21 Jul 2020 10:53:41 +0200 Subject: [PATCH 4/7] helpdesk: black --- setup/helpdesk_mgmt/setup.py | 3 +-- setup/helpdesk_mgmt_rating/setup.py | 3 +-- setup/helpdesk_sale_order/setup.py | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/setup/helpdesk_mgmt/setup.py b/setup/helpdesk_mgmt/setup.py index 28c57bb640..8e51b9b56f 100644 --- a/setup/helpdesk_mgmt/setup.py +++ b/setup/helpdesk_mgmt/setup.py @@ -1,6 +1,5 @@ import setuptools setuptools.setup( - setup_requires=['setuptools-odoo'], - odoo_addon=True, + setup_requires=["setuptools-odoo"], odoo_addon=True, ) diff --git a/setup/helpdesk_mgmt_rating/setup.py b/setup/helpdesk_mgmt_rating/setup.py index 28c57bb640..8e51b9b56f 100644 --- a/setup/helpdesk_mgmt_rating/setup.py +++ b/setup/helpdesk_mgmt_rating/setup.py @@ -1,6 +1,5 @@ import setuptools setuptools.setup( - setup_requires=['setuptools-odoo'], - odoo_addon=True, + setup_requires=["setuptools-odoo"], odoo_addon=True, ) diff --git a/setup/helpdesk_sale_order/setup.py b/setup/helpdesk_sale_order/setup.py index 28c57bb640..8e51b9b56f 100644 --- a/setup/helpdesk_sale_order/setup.py +++ b/setup/helpdesk_sale_order/setup.py @@ -1,6 +1,5 @@ import setuptools setuptools.setup( - setup_requires=['setuptools-odoo'], - odoo_addon=True, + setup_requires=["setuptools-odoo"], odoo_addon=True, ) From 80563e80ce1009bccf37b91005507a3ca1fe762d Mon Sep 17 00:00:00 2001 From: cristina Date: Tue, 21 Jul 2020 11:00:41 +0200 Subject: [PATCH 5/7] helpdesk_mgmt: black in test file --- helpdesk_mgmt/tests/test_helpdesk_ticket.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helpdesk_mgmt/tests/test_helpdesk_ticket.py b/helpdesk_mgmt/tests/test_helpdesk_ticket.py index ca77f26712..0cee535ec6 100644 --- a/helpdesk_mgmt/tests/test_helpdesk_ticket.py +++ b/helpdesk_mgmt/tests/test_helpdesk_ticket.py @@ -152,7 +152,7 @@ def test_automatic_assign(self): self.assertEqual(len(self.auto_assign_ticket_id.user_id), 0) self._onchange_domain_user_id() self._compute_domain_user_id() - + # Fixed self.team_id.auto_assign_type = "fixed" self.team_id._onchange_assign_user_domain() From 98ea98e3993adef9248967be55140c393b167a9c Mon Sep 17 00:00:00 2001 From: cristina Date: Tue, 21 Jul 2020 11:10:38 +0200 Subject: [PATCH 6/7] [FIX] helpdesk_mgmt: ticket tests --- helpdesk_mgmt/tests/test_helpdesk_ticket.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/helpdesk_mgmt/tests/test_helpdesk_ticket.py b/helpdesk_mgmt/tests/test_helpdesk_ticket.py index 0cee535ec6..c9153ebee8 100644 --- a/helpdesk_mgmt/tests/test_helpdesk_ticket.py +++ b/helpdesk_mgmt/tests/test_helpdesk_ticket.py @@ -150,8 +150,8 @@ def test_automatic_assign(self): self.assertEqual(self.auto_assign_ticket_id.user_id.id, self.user_demo.id) self.auto_assign_ticket_id.user_id = None self.assertEqual(len(self.auto_assign_ticket_id.user_id), 0) - self._onchange_domain_user_id() - self._compute_domain_user_id() + self.ticket._onchange_domain_user_id() + self.ticket._compute_domain_user_id() # Fixed self.team_id.auto_assign_type = "fixed" From 303d46a6e166741081d883362ae3717652f7ad49 Mon Sep 17 00:00:00 2001 From: Catalin Date: Tue, 21 Jul 2020 12:40:27 +0200 Subject: [PATCH 7/7] [FIX] helpdesk_mgmt: added checks for the ticket creation before sending the user assignemnt email as if the id does not exist yet -ie, NewId- the template generation it'll fail --- helpdesk_mgmt/models/helpdesk_ticket.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helpdesk_mgmt/models/helpdesk_ticket.py b/helpdesk_mgmt/models/helpdesk_ticket.py index ebb6d97dad..bb55ba666a 100644 --- a/helpdesk_mgmt/models/helpdesk_ticket.py +++ b/helpdesk_mgmt/models/helpdesk_ticket.py @@ -44,7 +44,7 @@ def _compute_automatic_user_assignment(self): ): _user_id = record.search_user_id_by_strategy() record.user_id = _user_id.id if _user_id else None - if isinstance(record.user_id.id, int) and record.user_id.id != user_id.id: + if isinstance(record.id, int) and record.user_id.id != user_id.id: record.send_user_mail() @api.depends("team_id")