diff --git a/addons/website_profile/controllers/main.py b/addons/website_profile/controllers/main.py index 53f8ab88787..64e6b913c98 100644 --- a/addons/website_profile/controllers/main.py +++ b/addons/website_profile/controllers/main.py @@ -219,27 +219,35 @@ class WebsiteProfile(http.Controller): dom = expression.AND([['|', ('name', 'ilike', search_term), ('company_id.name', 'ilike', search_term)], dom]) user_count = User.sudo().search_count(dom) - page_count = math.ceil(user_count / self._users_per_page) - pager = request.website.pager(url="/profile/users", total=user_count, page=page, step=self._users_per_page, - scope=page_count if page_count < self._pager_max_pages else self._pager_max_pages) - users = User.sudo().search(dom, limit=self._users_per_page, offset=pager['offset'], order='karma DESC') - user_values = [self._prepare_all_users_values(user) for user in users] + if user_count: + page_count = math.ceil(user_count / self._users_per_page) + pager = request.website.pager(url="/profile/users", total=user_count, page=page, step=self._users_per_page, + scope=page_count if page_count < self._pager_max_pages else self._pager_max_pages) - # Get karma position for users (only website_published) - position_domain = [('karma', '>', 1), ('website_published', '=', True)] - position_map = self._get_users_karma_position(position_domain, users.ids) - for user in user_values: - user['position'] = position_map.get(user['id'], 0) + users = User.sudo().search(dom, limit=self._users_per_page, offset=pager['offset'], order='karma DESC') + user_values = [self._prepare_all_users_values(user) for user in users] + + # Get karma position for users (only website_published) + position_domain = [('karma', '>', 1), ('website_published', '=', True)] + position_map = self._get_users_karma_position(position_domain, users.ids) + for user in user_values: + user['position'] = position_map.get(user['id'], 0) + + values = { + 'top3_users': user_values[:3] if not search_term and page == 1 else None, + 'users': user_values[3:] if not search_term and page == 1 else user_values, + 'pager': pager + } + else: + values = {'top3_users': [], 'users': [], 'pager': dict(page_count=0)} - values = { - 'top3_users': user_values[:3] if not search_term and page == 1 else None, - 'users': user_values[3:] if not search_term and page == 1 else user_values, - 'pager': pager - } return request.render("website_profile.users_page_main", values) def _get_users_karma_position(self, domain, user_ids): + if not user_ids: + return {} + Users = request.env['res.users'] where_query = Users._where_calc(domain) Users._apply_ir_rules(where_query, 'read') diff --git a/addons/website_profile/views/website_profile.xml b/addons/website_profile/views/website_profile.xml index 88dc2153798..d03428d9287 100644 --- a/addons/website_profile/views/website_profile.xml +++ b/addons/website_profile/views/website_profile.xml @@ -478,11 +478,14 @@ - +
+ +
No results matched
+