approver pruner: send weekly warning dmails to inactive approvers.
Send weekly warning dmails to approvers in danger of losing their approver permissions. Don't send warnings if we're more than three weeks away from demotion so that approvers aren't warned prematurely.
This commit is contained in:
@@ -30,4 +30,19 @@ module ApproverPruner
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def dmail_inactive_approvers!
|
||||
days_until_next_month = (Date.current.next_month.beginning_of_month - Date.current).to_i
|
||||
return unless days_until_next_month <= 21
|
||||
|
||||
inactive_approvers.each do |user|
|
||||
Dmail.create_automated(to: user, title: "You will lose approval privileges soon", body: <<~BODY)
|
||||
You've approved fewer than #{MINIMUM_APPROVALS} posts in the past
|
||||
#{APPROVAL_PERIOD.inspect}. You will lose your approval privileges in
|
||||
#{days_until_next_month} #{"day".pluralize(days_until_next_month)}
|
||||
unless you have approved at least #{MINIMUM_APPROVALS} posts by the end
|
||||
of the month.
|
||||
BODY
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -21,6 +21,7 @@ module DanbooruMaintenance
|
||||
def weekly
|
||||
safely { UserPasswordResetNonce.prune! }
|
||||
safely { TagRelationshipRetirementService.find_and_retire! }
|
||||
safely { ApproverPruner.dmail_inactive_approvers! }
|
||||
end
|
||||
|
||||
def monthly
|
||||
|
||||
@@ -27,5 +27,13 @@ class ApproverPrunerTest < ActiveSupport::TestCase
|
||||
|
||||
assert_not_includes(ApproverPruner.inactive_approvers.map(&:id), @user.id)
|
||||
end
|
||||
|
||||
should "dmail inactive approvers" do
|
||||
travel_to(Date.parse("2020-01-20")) do
|
||||
ApproverPruner.dmail_inactive_approvers!
|
||||
end
|
||||
|
||||
assert_equal("You will lose approval privileges soon", @approver.dmails.received.last.title)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user