[FIX] project: compute doc_count on new project

Scenario:

- add doc_count field in project.project view
- create new project

Issue: error and can't create new project
> File "addons/project/models/project.py",
> line 190, in _compute_attached_docs_count
> psycopg2.errors.SyntaxError: syntax error at or near ")"
> LINE 6: AND res_id IN ()

Fix: only do the query if there is non-NewID IDs

opw-3584925

closes odoo/odoo#142074

X-original-commit: 4d9a5cedef9459f0e86f16631170f2dc965d0a3b
Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>
This commit is contained in:
Nicolas Lempereur
2023-11-15 16:54:47 +00:00
parent f6d9f80e6e
commit d0e7c62465
+23 -21
View File
@@ -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)