diff --git a/addons/website_event_track/models/website_visitor.py b/addons/website_event_track/models/website_visitor.py index fada7eefe59..e5d1abf55ad 100644 --- a/addons/website_event_track/models/website_visitor.py +++ b/addons/website_event_track/models/website_visitor.py @@ -22,27 +22,21 @@ class WebsiteVisitor(models.Model): compute="_compute_event_track_wishlisted_ids", compute_sudo=True, groups='event.group_event_user') - @api.depends('parent_id', 'event_track_visitor_ids.track_id', 'event_track_visitor_ids.is_wishlisted') + @api.depends('event_track_visitor_ids.track_id', 'event_track_visitor_ids.is_wishlisted') def _compute_event_track_wishlisted_ids(self): - # include parent's track visitors in a visitor o2m field. We don't add - # child one as child should not have track visitors (moved to the parent) - all_visitors = self + self.parent_id results = self.env['event.track.visitor'].read_group( - [('visitor_id', 'in', all_visitors.ids), ('is_wishlisted', '=', True)], + [('visitor_id', 'in', self.ids), ('is_wishlisted', '=', True)], ['visitor_id', 'track_id:array_agg'], ['visitor_id'] ) track_ids_map = {result['visitor_id'][0]: result['track_id'] for result in results} for visitor in self: - visitor_track_ids = track_ids_map.get(visitor.id, []) - parent_track_ids = track_ids_map.get(visitor.parent_id.id, []) - visitor.event_track_wishlisted_ids = visitor_track_ids + [track_id for track_id in parent_track_ids if track_id not in visitor_track_ids] + visitor.event_track_wishlisted_ids = track_ids_map.get(visitor.id, []) visitor.event_track_wishlisted_count = len(visitor.event_track_wishlisted_ids) def _search_event_track_wishlisted_ids(self, operator, operand): """ Search visitors with terms on wishlisted tracks. E.g. [('event_track_wishlisted_ids', - 'in', [1, 2])] should return visitors having wishlisted tracks 1, 2 as - well as their children for notification purpose. """ + 'in', [1, 2])] should return visitors having wishlisted tracks 1, 2. """ if operator == "not in": raise NotImplementedError("Unsupported 'Not In' operation on track wishlist visitors") @@ -50,17 +44,8 @@ class WebsiteVisitor(models.Model): ('track_id', operator, operand), ('is_wishlisted', '=', True) ]) - if track_visitors: - visitors = track_visitors.visitor_id - # search children, even archived one, to contact them - children = self.env['website.visitor'].with_context( - active_test=False - ).sudo().search([('parent_id', 'in', visitors.ids)]) - visitor_ids = (visitors + children).ids - else: - visitor_ids = [] - return [('id', 'in', visitor_ids)] + return [('id', 'in', track_visitors.visitor_id.ids)] def _inactive_visitors_domain(self): """ Visitors registered to push subscriptions are considered always active and should not be