[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
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()
query = """SELECT m.id, count(*), act.res_model as model,
CASE

View File

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