From eba01d5753852d2a5672ec02cb593995868507da Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Tue, 20 Oct 2015 13:33:24 +0200 Subject: [PATCH 1/2] [FIX] count needactions from the same model only once --- web_menu_navbar_needaction/models/ir_ui_menu.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/web_menu_navbar_needaction/models/ir_ui_menu.py b/web_menu_navbar_needaction/models/ir_ui_menu.py index 052446ad5..8cc1b5537 100644 --- a/web_menu_navbar_needaction/models/ir_ui_menu.py +++ b/web_menu_navbar_needaction/models/ir_ui_menu.py @@ -27,10 +27,15 @@ class IrUiMenu(models.Model): def get_navbar_needaction_data(self): result = {} for this in self: - result[this.id] = sum(map( - lambda x: x['needaction_counter'], - self.search([('id', 'child_of', this.ids)]) - ._filter_visible_menus().get_needaction_data() - .itervalues()) - ) + count_per_model = {} + for menu_id, needaction in self.search( + [('id', 'child_of', this.ids)])._filter_visible_menus()\ + .get_needaction_data().iteritems(): + if needaction['needaction_enabled']: + model = self.env['ir.ui.menu'].browse(menu_id).action\ + .res_model + count_per_model[model] = max( + count_per_model.get(model), + needaction['needaction_counter']) + result[this.id] = sum(count_per_model.itervalues()) return result From f212ba39da513daf377baaf462dcef4a37250b9c Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Tue, 20 Oct 2015 13:51:51 +0200 Subject: [PATCH 2/2] [IMP] reload navbar needaction when a mail was read --- web_menu_navbar_needaction/__openerp__.py | 1 + .../static/src/js/web_menu_navbar_needaction.js | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/web_menu_navbar_needaction/__openerp__.py b/web_menu_navbar_needaction/__openerp__.py index e1356e9c5..4f54faf97 100644 --- a/web_menu_navbar_needaction/__openerp__.py +++ b/web_menu_navbar_needaction/__openerp__.py @@ -26,6 +26,7 @@ "summary": "Show the sum of submenus' needaction counters in main menu", "depends": [ 'web', + 'mail', ], "data": [ "data/ir_config_parameter.xml", diff --git a/web_menu_navbar_needaction/static/src/js/web_menu_navbar_needaction.js b/web_menu_navbar_needaction/static/src/js/web_menu_navbar_needaction.js index 93a859ad3..799b61201 100644 --- a/web_menu_navbar_needaction/static/src/js/web_menu_navbar_needaction.js +++ b/web_menu_navbar_needaction/static/src/js/web_menu_navbar_needaction.js @@ -75,4 +75,15 @@ openerp.web_menu_navbar_needaction = function(instance) }); }, }) + + instance.mail.Thread.include({ + message_fetch_set_read: function (message_list) + { + this._super.apply(this, arguments); + return this.render_mutex.exec(function() + { + instance.client.menu.refresh_navbar_needaction(); + }); + }, + }) }