From 227d27f2546fbddd044fee51f53eda9308e54a4f Mon Sep 17 00:00:00 2001 From: Suraj Shetty <13928957+surajshetty3416@users.noreply.github.com> Date: Tue, 24 Sep 2019 16:10:43 +0530 Subject: [PATCH] fix: Duplicate review point allocation (#8485) --- .../energy_point_settings.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/frappe/social/doctype/energy_point_settings/energy_point_settings.py b/frappe/social/doctype/energy_point_settings/energy_point_settings.py index 65b8a2626c..737aab587c 100644 --- a/frappe/social/doctype/energy_point_settings/energy_point_settings.py +++ b/frappe/social/doctype/energy_point_settings/energy_point_settings.py @@ -21,17 +21,21 @@ def allocate_review_points(): settings.point_allocation_periodicity): return + user_point_map = {} + for level in settings.review_levels: - create_review_points(level) + users = get_users_with_role(level.role) + for user in users: + user_point_map.setdefault(user, 0) + # to avoid duplicate point allocation + user_point_map[user] = max([user_point_map[user], level.review_points]) + + for user, points in user_point_map.items(): + create_review_points_log(user, points) settings.last_point_allocation_date = today() settings.save(ignore_permissions=True) -def create_review_points(level): - users = get_users_with_role(level.role) - for user in users: - create_review_points_log(user, level.review_points) - def can_allocate_today(last_date, periodicity): if not last_date: return True