diff --git a/project_analytic_code/__manifest__.py b/project_analytic_code/__manifest__.py index 8f7d740f88..e89603c0a9 100644 --- a/project_analytic_code/__manifest__.py +++ b/project_analytic_code/__manifest__.py @@ -7,7 +7,7 @@ "author": "Pierre Verkest, Odoo Community Association (OCA)", "website": "https://github.com/OCA/project", "category": "Project Management", - "version": "14.0.1.0.0", + "version": "17.0.0.1.0", "license": "AGPL-3", "depends": [ "project", diff --git a/project_analytic_code/models/project.py b/project_analytic_code/models/project.py index 4eecaad723..20e3a3cfd0 100644 --- a/project_analytic_code/models/project.py +++ b/project_analytic_code/models/project.py @@ -7,25 +7,24 @@ class Project(models.Model): _inherit = "project.project" + _rec_names_search = [ + "name", + "analytic_account_code", + ] + analytic_account_code = fields.Char( string="Analytic code", related="analytic_account_id.code", store=True, - index=True, + index="btree_not_null", ) - @api.model - def name_search(self, name="", args=None, operator="ilike", limit=100): - args = list(args or []) - if name: - args += ["|", ("analytic_account_code", "=", name)] - return super().name_search(name=name, args=args, operator=operator, limit=limit) - - def name_get(self): - result = super().name_get() - # Prepend analytic_account_code to display_name - for i, (res_item, project) in enumerate(zip(result, self)): + @api.depends("analytic_account_code") + def _compute_display_name(self): + # res is null but avoid noqa: W8110 + res = super()._compute_display_name() + for project in self: code = project.analytic_account_code if code: - result[i] = (res_item[0], "[%s] %s" % (code, res_item[1])) - return result + project.display_name = f"[{code}] {project.display_name}" + return res diff --git a/project_analytic_code/tests/test_project.py b/project_analytic_code/tests/test_project.py index 00f353fe4f..c71fcc3f7d 100644 --- a/project_analytic_code/tests/test_project.py +++ b/project_analytic_code/tests/test_project.py @@ -2,18 +2,23 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from odoo.tests import tagged -from odoo.tests.common import SavepointCase +from odoo.tests.common import TransactionCase @tagged("post_install", "-at_install") -class TestProject(SavepointCase): +class TestProject(TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() cls.project = cls.env.ref("project.project_project_1") cls.project.name = "Test project name" + cls.plan = cls.env["account.analytic.plan"].create({"name": "Test plan"}) cls.project.analytic_account_id = cls.env["account.analytic.account"].create( - {"name": "Test Analytic account name", "code": "Test Weird code"} + { + "name": "Test Analytic account name", + "code": "Test Weird code", + "plan_id": cls.plan.id, + } ) def test_search_project_by_account_analytic_code(self): @@ -24,3 +29,15 @@ def test_search_project_by_account_analytic_code(self): result[0][1], f"[{self.project.analytic_account_id.code}] {self.project.name}", ) + + def test_project_display_name(self): + self.assertEqual( + self.project.display_name, + f"[{self.project.analytic_account_id.code}] {self.project.name}", + ) + self.project.analytic_account_id = False + + self.assertEqual( + self.project.display_name, + f"{self.project.name}", + ) diff --git a/project_analytic_code/views/project.xml b/project_analytic_code/views/project.xml index ae5ebb30cf..cecb7253eb 100644 --- a/project_analytic_code/views/project.xml +++ b/project_analytic_code/views/project.xml @@ -1,41 +1,23 @@ - - - - project_analytic_code.project.select - project.project - - - ["|", ("name", "ilike", self), ("analytic_account_code", "=", self)] - - - - + + + project_analytic_code.project.select + project.project + + + ["|", ("name", "ilike", self), ("analytic_account_code", "=", self)] - + + + + + - - - project.project.kanban.project_analytic_code - project.project - 200 - - - - - - - [] - - - - -