diff --git a/addons/project/models/project.py b/addons/project/models/project.py index edec05a4b62..402a7110038 100644 --- a/addons/project/models/project.py +++ b/addons/project/models/project.py @@ -2653,7 +2653,7 @@ class ProjectTags(models.Model): @api.model def _name_search(self, name, domain=None, operator='ilike', limit=None, order=None, name_get_uid=None): - if 'project_id' in self.env.context and operator == 'ilike': + if self.env.context.get('project_id') and operator == 'ilike': # `domain` has the form of the default filter ['!', ['id', 'in', ]] # passed to exclude already selected tags -> exclude them in our query too excluded_ids = list(domain[1][2]) \ diff --git a/addons/project/tests/test_project_flow.py b/addons/project/tests/test_project_flow.py index e8b1d171f24..ba00a0b9b41 100644 --- a/addons/project/tests/test_project_flow.py +++ b/addons/project/tests/test_project_flow.py @@ -438,3 +438,11 @@ class TestProjectFlow(TestProjectCommon, MailCommon): self.assertEqual(len(project_A.message_ids), init_nb_log + 2, "should have 2 new messages: one for tracking, one for template") + + def test_private_task_search_tag(self): + task = self.env['project.task'].create({ + 'name': 'Test Private Task', + }) + # Tag name_search should not raise Error if project_id is False + task.tag_ids.with_context(project_id=task.project_id.id).name_search( + args=["!", ["id", "in", []]])