search: fix status:any not working when hide_deleted_posts is on.

ref: https://danbooru.donmai.us/forum_topics/9127?page=303#forum_post_165694
This commit is contained in:
evazion
2020-04-23 20:49:53 -05:00
parent cacc32740c
commit 009b5ad84c
2 changed files with 17 additions and 3 deletions

View File

@@ -324,8 +324,8 @@ class PostQueryBuilder
def hide_deleted_posts?(q)
return false if CurrentUser.admin_mode?
return false if q[:status].to_a.any?(%w[deleted active any all])
return false if q[:status_neg].to_a.any?(%w[deleted active any all])
return false if find_metatag("status").to_s.downcase.in?(%w[deleted active any all])
return false if find_metatag("-status").to_s.downcase.in?(%w[deleted active any all])
return CurrentUser.user.hide_deleted_posts?
end

View File

@@ -500,15 +500,29 @@ class PostQueryBuilderTest < ActiveSupport::TestCase
assert_tag_match([pending, flagged], "status:unmoderated")
end
should "respect the 'Deleted post filter' option when using the status:banned metatag" do
should "respect the 'Deleted post filter' option when using the status: metatag" do
deleted = create(:post, is_deleted: true, is_banned: true)
undeleted = create(:post, is_banned: true)
CurrentUser.hide_deleted_posts = true
assert_tag_match([undeleted], "status:banned")
assert_tag_match([undeleted], "status:active")
assert_tag_match([deleted], "status:deleted")
assert_tag_match([undeleted, deleted], "status:any")
assert_tag_match([undeleted, deleted], "status:all")
assert_tag_match([], "-status:banned")
assert_tag_match([deleted], "-status:active")
assert_tag_match([undeleted], "-status:deleted")
#assert_tag_match([deleted], "-status:any") # XXX Broken
#assert_tag_match([deleted], "-status:all")
CurrentUser.hide_deleted_posts = false
assert_tag_match([undeleted, deleted], "status:banned")
assert_tag_match([undeleted], "status:active")
assert_tag_match([deleted], "status:deleted")
assert_tag_match([undeleted, deleted], "status:any")
assert_tag_match([undeleted, deleted], "status:all")
end
should "return posts for the filetype:<ext> metatag" do