diff --git a/addons/project/models/project_project.py b/addons/project/models/project_project.py index f95c31905f5..90f0a16ae3b 100644 --- a/addons/project/models/project_project.py +++ b/addons/project/models/project_project.py @@ -23,30 +23,32 @@ class Project(models.Model): _systray_view = 'activity' def _compute_attached_docs_count(self): - self.env.cr.execute( - """ - WITH docs AS ( - SELECT res_id as id, count(*) as count - FROM ir_attachment - WHERE res_model = 'project.project' - AND res_id IN %(project_ids)s - GROUP BY res_id + docs_count = {} + if self.ids: + self.env.cr.execute( + """ + WITH docs AS ( + SELECT res_id as id, count(*) as count + FROM ir_attachment + WHERE res_model = 'project.project' + AND res_id IN %(project_ids)s + GROUP BY res_id - UNION ALL + UNION ALL - SELECT t.project_id as id, count(*) as count - FROM ir_attachment a - JOIN project_task t ON a.res_model = 'project.task' AND a.res_id = t.id - WHERE t.project_id IN %(project_ids)s - GROUP BY t.project_id + SELECT t.project_id as id, count(*) as count + FROM ir_attachment a + JOIN project_task t ON a.res_model = 'project.task' AND a.res_id = t.id + WHERE t.project_id IN %(project_ids)s + GROUP BY t.project_id + ) + SELECT id, sum(count) + FROM docs + GROUP BY id + """, + {"project_ids": tuple(self.ids)} ) - SELECT id, sum(count) - FROM docs - GROUP BY id - """, - {"project_ids": tuple(self.ids)} - ) - docs_count = dict(self.env.cr.fetchall()) + docs_count = dict(self.env.cr.fetchall()) for project in self: project.doc_count = docs_count.get(project.id, 0)