FEATURE: Allow admins to lock users from TL3 promotion/demotion

Also, update the display logic for the leader promotion screen to
account for the demotion grace period.
This commit is contained in:
riking
2014-09-13 13:55:26 -07:00
committed by Sam
parent 41d53c7222
commit c8111ada6e
12 changed files with 121 additions and 18 deletions

View File

@@ -16,13 +16,15 @@ class TrustLevel3Requirements
:posts_read_all_time, :min_posts_read_all_time,
:num_flagged_posts, :max_flagged_posts,
:num_likes_given, :min_likes_given,
:num_likes_received, :min_likes_received
:num_likes_received, :min_likes_received,
:trust_level_locked, :on_grace_period
def initialize(user)
@user = user
end
def requirements_met?
return false if trust_level_locked
!@user.suspended? &&
days_visited >= min_days_visited &&
num_topics_replied_to >= min_topics_replied_to &&
@@ -37,6 +39,7 @@ class TrustLevel3Requirements
end
def requirements_lost?
return false if trust_level_locked
@user.suspended? ||
days_visited < min_days_visited * LOW_WATER_MARK ||
num_topics_replied_to < min_topics_replied_to * LOW_WATER_MARK ||
@@ -50,6 +53,14 @@ class TrustLevel3Requirements
num_likes_received < min_likes_received * LOW_WATER_MARK
end
def trust_level_locked
@user.trust_level_locked
end
def on_grace_period
@user.on_leader_grace_period?
end
def days_visited
@user.user_visits.where("visited_at > ? and posts_read > 0", TIME_PERIOD.days.ago).count
end