diff --git a/addons/mail/models/mail_activity.py b/addons/mail/models/mail_activity.py index 656542fa8f2..f9e868e5fe6 100644 --- a/addons/mail/models/mail_activity.py +++ b/addons/mail/models/mail_activity.py @@ -132,33 +132,39 @@ class MailActivity(models.Model): def create(self, values): activity = super(MailActivity, self).create(values) self.env[activity.res_model].browse(activity.res_id).message_subscribe(partner_ids=[activity.user_id.partner_id.id]) - self.env['bus.bus'].sendone( - (self._cr.dbname, 'res.partner', activity.user_id.partner_id.id), - {'type': 'activity_updated', 'activity_created': True}) + if activity.date_deadline <= fields.Date.today(): + self.env['bus.bus'].sendone( + (self._cr.dbname, 'res.partner', activity.user_id.partner_id.id), + {'type': 'activity_updated', 'activity_created': True}) return activity @api.multi def write(self, values): - res = super(MailActivity, self).write(values) if values.get('user_id'): pre_responsibles = self.mapped('user_id.partner_id') + res = super(MailActivity, self).write(values) + if values.get('user_id'): for activity in self: self.env[activity.res_model].browse(activity.res_id).message_subscribe(partner_ids=[activity.user_id.partner_id.id]) - self.env['bus.bus'].sendone( - (self._cr.dbname, 'res.partner', activity.user_id.partner_id.id), - {'type': 'activity_updated', 'activity_created': True}) - for partner in pre_responsibles: - self.env['bus.bus'].sendone( - (self._cr.dbname, 'res.partner', partner.id), - {'type': 'activity_updated', 'activity_deleted': True}) + if activity.date_deadline <= fields.Date.today(): + self.env['bus.bus'].sendone( + (self._cr.dbname, 'res.partner', activity.user_id.partner_id.id), + {'type': 'activity_updated', 'activity_created': True}) + for activity in self: + if activity.date_deadline <= fields.Date.today(): + for partner in pre_responsibles: + self.env['bus.bus'].sendone( + (self._cr.dbname, 'res.partner', partner.id), + {'type': 'activity_updated', 'activity_deleted': True}) return res @api.multi def unlink(self): for activity in self: - self.env['bus.bus'].sendone( - (self._cr.dbname, 'res.partner', activity.user_id.partner_id.id), - {'type': 'activity_updated', 'activity_deleted': True}) + if activity.date_deadline <= fields.Date.today(): + self.env['bus.bus'].sendone( + (self._cr.dbname, 'res.partner', activity.user_id.partner_id.id), + {'type': 'activity_updated', 'activity_deleted': True}) return super(MailActivity, self).unlink() @api.multi diff --git a/addons/mail/models/res_users.py b/addons/mail/models/res_users.py index a7b704188f1..a41f1119659 100644 --- a/addons/mail/models/res_users.py +++ b/addons/mail/models/res_users.py @@ -145,7 +145,8 @@ class Users(models.Model): 'total_count': 0, 'today_count': 0, 'overdue_count': 0, 'planned_count': 0, } user_activities[activity['model']]['%s_count' % activity['states']] += activity['count'] - user_activities[activity['model']]['total_count'] += activity['count'] + if activity['states'] in ('today','overdue'): + user_activities[activity['model']]['total_count'] += activity['count'] return user_activities.values() diff --git a/addons/mail/static/src/js/systray.js b/addons/mail/static/src/js/systray.js index 6297f0da8c4..d06ed5894c6 100644 --- a/addons/mail/static/src/js/systray.js +++ b/addons/mail/static/src/js/systray.js @@ -185,7 +185,6 @@ var ActivityMenu = Widget.extend({ model: 'res.users', method: 'activity_user_count', }).then(function (data) { - self.isCounterUpdated = false; self.activities = data; self.activityCounter = _.reduce(data, function(total_count, p_data){ return total_count + p_data.total_count; }, 0); self.$('.o_notification_counter').text(self.activityCounter); @@ -239,7 +238,6 @@ var ActivityMenu = Widget.extend({ if (data.activity_deleted && this.activityCounter > 0) { this.activityCounter --; } - this.isCounterUpdated = true; this.$('.o_notification_counter').text(this.activityCounter); this.$el.toggleClass('o_no_notification', !this.activityCounter); } @@ -257,7 +255,12 @@ var ActivityMenu = Widget.extend({ event.stopPropagation(); var $target = $(event.currentTarget); var context = {}; - context['search_default_activities_' + $target.data('filter')] = 1; + if ($target.data('filter')=='my') { + context['search_default_activities_overdue'] = 1; + context['search_default_activities_today'] = 1; + } else { + context['search_default_activities_' + $target.data('filter')] = 1; + } this.do_action({ type: 'ir.actions.act_window', name: $target.data('model_name'), @@ -274,7 +277,7 @@ var ActivityMenu = Widget.extend({ * @param {MouseEvent} event */ _onActivityMenuClick: function () { - if (!this._isOpen() && this.isCounterUpdated) { + if (!this._isOpen()) { this._updateActivityPreview(); } },