diff --git a/web_menu_navbar_needaction/__openerp__.py b/web_menu_navbar_needaction/__openerp__.py index e1356e9c..4f54faf9 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/models/ir_ui_menu.py b/web_menu_navbar_needaction/models/ir_ui_menu.py index 052446ad..8cc1b553 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 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 93a859ad..799b6120 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(); + }); + }, + }) }