Merge pull request #6476 from vinothkannans/tl4-flag

FEATURE: automatically hide non-TL4 posts when flagged by a TL4 user
This commit is contained in:
Vinoth Kannan 2018-10-11 17:13:26 +05:30 committed by GitHub
commit 6a444eee56
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 45 additions and 7 deletions

View File

@ -117,7 +117,8 @@ class Post < ActiveRecord::Base
flag_threshold_reached_again: 2,
new_user_spam_threshold_reached: 3,
flagged_by_tl3_user: 4,
email_spam_header_found: 5)
email_spam_header_found: 5,
flagged_by_tl4_user: 6)
end
def self.types

View File

@ -583,8 +583,13 @@ class PostAction < ActiveRecord::Base
hide_post!(post, post_action_type, Post.hidden_reasons[:flagged_by_tl3_user])
elsif PostActionType.auto_action_flag_types.include?(post_action_type) &&
SiteSetting.flags_required_to_hide_post > 0
elsif PostActionType.auto_action_flag_types.include?(post_action_type)
if acting_user.has_trust_level?(TrustLevel[4]) &&
post.user&.trust_level != TrustLevel[4]
hide_post!(post, post_action_type, Post.hidden_reasons[:flagged_by_tl4_user])
elsif SiteSetting.flags_required_to_hide_post > 0
_old_flags, new_flags = PostAction.flag_counts_for(post.id)
@ -593,6 +598,7 @@ class PostAction < ActiveRecord::Base
end
end
end
end
def self.hide_post!(post, post_action_type, reason = nil)
return if post.hidden

View File

@ -153,7 +153,7 @@ module DiscourseNarrativeBot
flag = PostAction.create!(
user: self.discobot_user,
post: post, post_action_type_id:
PostActionType.types[:off_topic]
PostActionType.types[:notify_moderators]
)
PostAction.defer_flags!(post, self.discobot_user)

View File

@ -501,6 +501,37 @@ describe PostAction do
expect(post.hidden_reason_id).to eq(Post.hidden_reasons[:flagged_by_tl3_user])
end
it "hide non-tl4 posts that are flagged by a tl4 user" do
SiteSetting.site_contact_username = admin.username
post_action_type = PostActionType.types[:spam]
tl4_user = Fabricate(:trust_level_4)
user = Fabricate(:leader)
post = create_post(user: user)
PostAction.act(tl4_user, post, post_action_type)
post.reload
expect(post.hidden).to be_truthy
expect(post.hidden_at).to be_present
expect(post.hidden_reason_id).to eq(Post.hidden_reasons[:flagged_by_tl4_user])
post = create_post(user: user)
PostAction.act(Fabricate(:leader), post, post_action_type)
post.reload
expect(post.hidden).to be_falsey
user = Fabricate(:trust_level_4)
post = create_post(user: user)
PostAction.act(tl4_user, post, post_action_type)
post.reload
expect(post.hidden).to be_falsey
end
it "can flag the topic instead of a post" do
post1 = create_post
_post2 = create_post(topic: post1.topic)