From 6ba914033cea726ddced866f57115b511fb9ef95 Mon Sep 17 00:00:00 2001 From: Arpit Jalan Date: Mon, 6 May 2019 12:41:50 +0530 Subject: [PATCH] FEATURE: rake task to bulk grant badge to members of a group --- lib/tasks/groups.rake | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 lib/tasks/groups.rake diff --git a/lib/tasks/groups.rake b/lib/tasks/groups.rake new file mode 100644 index 00000000000..b0d6bf11fc1 --- /dev/null +++ b/lib/tasks/groups.rake @@ -0,0 +1,29 @@ +# bulk grant badge to members of a specific group +task "groups:grant_badge", [:group_id, :badge_id] => [:environment] do |_, args| + group_id = args[:group_id] + badge_id = args[:badge_id] + + if !group_id || !badge_id + puts "ERROR: Expecting groups:grant_badge[group_id,badge_id]" + exit 1 + end + + group = Group.find(group_id) + badge = Badge.find(badge_id) + + if group.present? && badge.present? + puts "Granting badge '#{badge.name}' to all users in group '#{group.name}'..." + + count = 0 + group.users.each do |user| + begin + BadgeGranter.grant(badge, user) + rescue => e + puts "", "Failed to grant badge to #{user.username}", e, e.backtrace.join("\n") + end + putc "." if (count += 1) % 5 == 0 + end + end + + puts "", "Done! Badge granted to #{count} members.", "" +end