From bdebd1a5943da07026c84002db59c3184a458a86 Mon Sep 17 00:00:00 2001 From: evazion Date: Mon, 23 Dec 2019 00:43:26 -0600 Subject: [PATCH] approver pruner: change inactivity threshold to 30 approvals in 45 days. * Change minimum activity threshold to 30 approvals in 45 days. * Exclude mods from losing privileges, not just admins. * Fix undeletions of old posts not counting towards the activity threshold. --- app/logical/approver_pruner.rb | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/app/logical/approver_pruner.rb b/app/logical/approver_pruner.rb index dd11dcc08..061034248 100644 --- a/app/logical/approver_pruner.rb +++ b/app/logical/approver_pruner.rb @@ -1,25 +1,25 @@ module ApproverPruner module_function + APPROVAL_PERIOD = 45.days + MINIMUM_APPROVALS = 30 + def inactive_approvers - User.where("bit_prefs & ? > 0", User.flag_value_for("can_approve_posts")).select do |user| - approval_count = Post.where("created_at >= ? and approver_id = ?", 3.months.ago, user.id).count - approval_count < 10 - end + approvals = PostApproval.where("created_at >= ?", APPROVAL_PERIOD.ago) + approvers = User.where("bit_prefs & ? > 0", User.flag_value_for("can_approve_posts")).where("level < ?", User::Levels::MODERATOR) + approvers.where(id: approvals.group(:user_id).having("count(*) < ?", MINIMUM_APPROVALS).select(:user_id)) end def prune! inactive_approvers.each do |user| CurrentUser.scoped(User.system, "127.0.0.1") do - next if user.is_admin? - user.update!(can_approve_posts: false) user.feedback.create(category: "neutral", body: "Lost approval privileges") Dmail.create_automated( - :to_id => user.id, - :title => "Approver inactivity", - :body => "You've approved fewer than 10 posts in the past three months. In order to make sure the list of active approvers is up-to-date, you have lost your approval privileges. If you wish to dispute this, you can message an admin to have your permission reinstated." + to_id: user.id, + title: "Approver inactivity", + body: "You've approved fewer than #{MINIMUM_APPROVALS} posts in the past #{APPROVAL_PERIOD.inspect}. In order to make sure the list of active approvers is up-to-date, you have lost your approval privileges. If you wish to dispute this, you can message an admin to have your permission reinstated." ) end end