[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:
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user