From 77ff6348b26048dadb0f0c9d01a5e0056630b7f4 Mon Sep 17 00:00:00 2001 From: Malay Khamar Date: Tue, 20 Dec 2022 11:26:04 +0000 Subject: [PATCH] [FIX] note: fix the export all xlsx report error When the user exports the note records, an error is raised because the '__count' key does not exist in the result of the 'read_group' method. Steps to reproduce: ------------------ - Go to the Notes - Click on the list view of notes and filter group by Stage. - Click on the export all button to print the excel report and see the error. Expected behavior: ----------------- The data should be exported in `csv` file. Current behavior: ---------------- An error is raised when the user wants to export the data. closes odoo/odoo#108394 X-original-commit: 3bd979421744a11b6f10c95f47cf378720079ffb Signed-off-by: Xavier Bol (xbo) --- addons/note/models/note.py | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/addons/note/models/note.py b/addons/note/models/note.py index e5e8b471a10..dd89b29c693 100644 --- a/addons/note/models/note.py +++ b/addons/note/models/note.py @@ -92,15 +92,20 @@ class Note(models.Model): def read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True): if groupby and groupby[0] == "stage_id" and (len(groupby) == 1 or lazy): stages = self.env['note.stage'].search([('user_id', '=', self.env.uid)]) - if stages: # if the user has some stages - result = [{ # notes by stage for stages user - '__context': {'group_by': groupby[1:]}, - '__domain': domain + [('stage_ids.id', '=', stage.id)], - 'stage_id': (stage.id, stage.name), - 'stage_id_count': self.search_count(domain + [('stage_ids', '=', stage.id)]), - '__fold': stage.fold, - } for stage in stages] - + if stages: + # if the user has some stages + result = [] + for stage in stages: + # notes by stage for stages user + nb_stage_counts = self.search_count(domain + [('stage_ids', '=', stage.id)]) + result.append({ + '__context': {'group_by': groupby[1:]}, + '__domain': domain + [('stage_ids.id', '=', stage.id)], + 'stage_id': (stage.id, stage.name), + 'stage_id_count': nb_stage_counts, + '__count': nb_stage_counts, + '__fold': stage.fold, + }) # note without user's stage nb_notes_ws = self.search_count(domain + [('stage_ids', 'not in', stages.ids)]) if nb_notes_ws: @@ -110,6 +115,7 @@ class Note(models.Model): dom_in = result[0]['__domain'].pop() result[0]['__domain'] = domain + ['|', dom_in, dom_not_in] result[0]['stage_id_count'] += nb_notes_ws + result[0]['__count'] += nb_notes_ws else: # add the first stage column result = [{ @@ -117,6 +123,7 @@ class Note(models.Model): '__domain': domain + [dom_not_in], 'stage_id': (stages[0].id, stages[0].name), 'stage_id_count': nb_notes_ws, + '__count': nb_notes_ws, '__fold': stages[0].name, }] + result else: # if stage_ids is empty, get note without user's stage @@ -126,7 +133,8 @@ class Note(models.Model): '__context': {'group_by': groupby[1:]}, '__domain': domain, 'stage_id': False, - 'stage_id_count': nb_notes_ws + 'stage_id_count': nb_notes_ws, + '__count': nb_notes_ws }] else: result = []