Merge pull request #243 from hbrunn/8.0-web_menu_navbar_needaction

[FIX] count needactions from the same model only once
pull/227/head
Pedro M. Baeza 2015-11-23 13:54:32 +01:00
commit c5f9f90024
3 changed files with 23 additions and 6 deletions

View File

@ -26,6 +26,7 @@
"summary": "Show the sum of submenus' needaction counters in main menu", "summary": "Show the sum of submenus' needaction counters in main menu",
"depends": [ "depends": [
'web', 'web',
'mail',
], ],
"data": [ "data": [
"data/ir_config_parameter.xml", "data/ir_config_parameter.xml",

View File

@ -27,10 +27,15 @@ class IrUiMenu(models.Model):
def get_navbar_needaction_data(self): def get_navbar_needaction_data(self):
result = {} result = {}
for this in self: for this in self:
result[this.id] = sum(map( count_per_model = {}
lambda x: x['needaction_counter'], for menu_id, needaction in self.search(
self.search([('id', 'child_of', this.ids)]) [('id', 'child_of', this.ids)])._filter_visible_menus()\
._filter_visible_menus().get_needaction_data() .get_needaction_data().iteritems():
.itervalues()) 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 return result

View File

@ -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();
});
},
})
} }