2014-06-27 12:26:03 -04:00
|
|
|
module Jobs
|
|
|
|
|
2014-09-24 20:19:26 -04:00
|
|
|
class Tl3Promotions < Jobs::Scheduled
|
2014-06-27 12:26:03 -04:00
|
|
|
daily at: 4.hours
|
|
|
|
|
|
|
|
def execute(args)
|
|
|
|
# Demotions
|
|
|
|
demoted_user_ids = []
|
2014-09-13 17:10:30 -04:00
|
|
|
User.real.where(trust_level: TrustLevel[3], trust_level_locked: false).find_each do |u|
|
2014-07-08 17:39:36 -04:00
|
|
|
# Don't demote too soon after being promoted
|
2014-09-24 20:19:26 -04:00
|
|
|
next if u.on_tl3_grace_period?
|
2014-07-08 17:39:36 -04:00
|
|
|
|
2014-09-05 01:20:39 -04:00
|
|
|
if Promotion.tl3_lost?(u)
|
2014-06-27 12:26:03 -04:00
|
|
|
demoted_user_ids << u.id
|
2014-09-05 01:20:39 -04:00
|
|
|
Promotion.new(u).change_trust_level!(TrustLevel[2])
|
2014-06-27 12:26:03 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
# Promotions
|
2014-09-13 17:10:30 -04:00
|
|
|
User.real.where(trust_level: TrustLevel[2],
|
|
|
|
trust_level_locked: false)
|
2017-07-27 21:20:09 -04:00
|
|
|
.where.not(id: demoted_user_ids).find_each do |u|
|
2014-09-05 01:20:39 -04:00
|
|
|
Promotion.new(u).review_tl2
|
2014-06-27 12:26:03 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|