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.
This commit is contained in:
@@ -1,25 +1,25 @@
|
|||||||
module ApproverPruner
|
module ApproverPruner
|
||||||
module_function
|
module_function
|
||||||
|
|
||||||
|
APPROVAL_PERIOD = 45.days
|
||||||
|
MINIMUM_APPROVALS = 30
|
||||||
|
|
||||||
def inactive_approvers
|
def inactive_approvers
|
||||||
User.where("bit_prefs & ? > 0", User.flag_value_for("can_approve_posts")).select do |user|
|
approvals = PostApproval.where("created_at >= ?", APPROVAL_PERIOD.ago)
|
||||||
approval_count = Post.where("created_at >= ? and approver_id = ?", 3.months.ago, user.id).count
|
approvers = User.where("bit_prefs & ? > 0", User.flag_value_for("can_approve_posts")).where("level < ?", User::Levels::MODERATOR)
|
||||||
approval_count < 10
|
approvers.where(id: approvals.group(:user_id).having("count(*) < ?", MINIMUM_APPROVALS).select(:user_id))
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def prune!
|
def prune!
|
||||||
inactive_approvers.each do |user|
|
inactive_approvers.each do |user|
|
||||||
CurrentUser.scoped(User.system, "127.0.0.1") do
|
CurrentUser.scoped(User.system, "127.0.0.1") do
|
||||||
next if user.is_admin?
|
|
||||||
|
|
||||||
user.update!(can_approve_posts: false)
|
user.update!(can_approve_posts: false)
|
||||||
user.feedback.create(category: "neutral", body: "Lost approval privileges")
|
user.feedback.create(category: "neutral", body: "Lost approval privileges")
|
||||||
|
|
||||||
Dmail.create_automated(
|
Dmail.create_automated(
|
||||||
:to_id => user.id,
|
to_id: user.id,
|
||||||
:title => "Approver inactivity",
|
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."
|
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
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user