[FIX] mail_activity_team: activity count

The user couldn't see the proper count of his own activities. It was
allways showing the team activities counter.

TT35885
pull/896/head
david 2022-04-18 11:52:29 +02:00
parent bce10d87af
commit 3f907b02b0
2 changed files with 17 additions and 22 deletions

View File

@ -14,7 +14,7 @@ class ResUsers(models.Model):
@api.model @api.model
def systray_get_activities(self): def systray_get_activities(self):
if not self._context.get("team_activities", False): if not self.env.context.get("team_activities"):
return super().systray_get_activities() return super().systray_get_activities()
query = """SELECT m.id, count(*), act.res_model as model, query = """SELECT m.id, count(*), act.res_model as model,
CASE CASE

View File

@ -13,9 +13,11 @@ odoo.define("mail_activity_team.systray.ActivityMenu", function(require) {
this.$filter_buttons = this.$(".o_filter_button"); this.$filter_buttons = this.$(".o_filter_button");
this.$my_activities = this.$filter_buttons.first(); this.$my_activities = this.$filter_buttons.first();
this.filter = "my"; this.filter = "my";
session.user_context = _.extend({}, session.user_context, { this._update_team_activities_context();
team_activities: false, },
});
_update_team_activities_context: function() {
session.user_context.team_activities = this.filter === "team";
}, },
_updateCounter: function(data) { _updateCounter: function(data) {
@ -24,18 +26,13 @@ odoo.define("mail_activity_team.systray.ActivityMenu", function(require) {
}, },
_onClickFilterButton: function(event) { _onClickFilterButton: function(event) {
var self = this;
event.stopPropagation(); event.stopPropagation();
self.$filter_buttons.removeClass("active"); this.$filter_buttons.removeClass("active");
var $target = $(event.currentTarget); var $target = $(event.currentTarget);
$target.addClass("active"); $target.addClass("active");
self.filter = $target.data("filter"); this.filter = $target.data("filter");
this._update_team_activities_context();
session.user_context = _.extend({}, session.user_context, { this._updateActivityPreview();
team_activities: self.filter === "team",
});
self._updateActivityPreview();
}, },
_onActivityFilterClick: function(event) { _onActivityFilterClick: function(event) {
if (this.filter === "my") { if (this.filter === "my") {
@ -63,7 +60,7 @@ odoo.define("mail_activity_team.systray.ActivityMenu", function(require) {
[false, "form"], [false, "form"],
], ],
search_view_id: [false], search_view_id: [false],
domain: [["activity_team_user_ids", "in", session.uid]], domain: [["activity_team_user_ids", "in", [session.uid]]],
context: context, context: context,
}); });
} }
@ -75,12 +72,11 @@ odoo.define("mail_activity_team.systray.ActivityMenu", function(require) {
return this._super.apply(this, arguments); return this._super.apply(this, arguments);
}, },
_getActivityData: function() { _getActivityData: function() {
if (this.filter !== "team") {
return this._super.apply(this, arguments);
}
var self = this; var self = this;
return self._super.apply(self, arguments).then(function() { return self._super.apply(self, arguments).then(function() {
session.user_context = _.extend({}, session.user_context, {
team_activities: !session.user_context.team_activities,
});
self._rpc({ self._rpc({
model: "res.users", model: "res.users",
method: "systray_get_activities", method: "systray_get_activities",
@ -89,7 +85,7 @@ odoo.define("mail_activity_team.systray.ActivityMenu", function(require) {
context: session.user_context, context: session.user_context,
}, },
}).then(function(data) { }).then(function(data) {
self.activityCounter += _.reduce( self.activityCounter = _.reduce(
data, data,
function(total_count, p_data) { function(total_count, p_data) {
return total_count + p_data.total_count || 0; return total_count + p_data.total_count || 0;
@ -98,9 +94,8 @@ odoo.define("mail_activity_team.systray.ActivityMenu", function(require) {
); );
self.$(".o_notification_counter").text(self.activityCounter); self.$(".o_notification_counter").text(self.activityCounter);
self.$el.toggleClass("o_no_notification", !self.activityCounter); self.$el.toggleClass("o_no_notification", !self.activityCounter);
session.user_context = _.extend({}, session.user_context, { // Unset context after we gather the info to avoid side effects
team_activities: !session.user_context.team_activities, session.user_context.team_activities = false;
});
}); });
}); });
}, },