Fix #4940: DanbooruBot retiring banned_artist implications.
This commit is contained in:
@@ -40,13 +40,20 @@ module TagRelationshipRetirementService
|
||||
end
|
||||
|
||||
def inactive_relationships
|
||||
(inactive_aliases + TagAlias.active.empty + TagImplication.active.empty).uniq
|
||||
(inactive_aliases + inactive_implications).uniq
|
||||
end
|
||||
|
||||
def inactive_implications
|
||||
TagImplication.active.empty.where.not(consequent_name: "banned_artist")
|
||||
end
|
||||
|
||||
def inactive_aliases
|
||||
aliases = TagAlias.general.or(TagAlias.artist).active.where("tag_aliases.created_at < ?", THRESHOLD.ago)
|
||||
aliases.select do |tag_alias|
|
||||
aliases = aliases.select do |tag_alias|
|
||||
!tag_alias.consequent_tag.posts.exists?(["created_at > ?", THRESHOLD.ago])
|
||||
end
|
||||
|
||||
aliases += TagAlias.active.empty
|
||||
aliases
|
||||
end
|
||||
end
|
||||
|
||||
@@ -356,6 +356,14 @@ class Tag < ApplicationRecord
|
||||
cosplay_tags.grep(/\A(.+)_\(cosplay\)\Z/) { "#{TagAlias.to_aliased([$1]).first}_(cosplay)" } + other_tags
|
||||
end
|
||||
|
||||
def implied_tags
|
||||
TagImplication.tags_implied_by([name])
|
||||
end
|
||||
|
||||
def implies?(tag_name)
|
||||
implied_tags.exists?(name: tag_name)
|
||||
end
|
||||
|
||||
def posts
|
||||
Post.system_tag_match(name)
|
||||
end
|
||||
|
||||
@@ -101,5 +101,16 @@ class RetireTagRelationshipsJobTest < ActiveJob::TestCase
|
||||
assert_equal(true, ta3.reload.is_retired?)
|
||||
assert_equal(true, ta4.reload.is_retired?)
|
||||
end
|
||||
|
||||
should "not retire empty banned_artist implications" do
|
||||
bkub = create(:tag, name: "bkub", post_count: 0, category: Tag.categories.artist)
|
||||
banned_artist = create(:tag, name: "banned_artist", post_count: 0, category: Tag.categories.artist)
|
||||
ti = create(:tag_implication, antecedent_name: "bkub", consequent_name: "banned_artist")
|
||||
|
||||
RetireTagRelationshipsJob.perform_now
|
||||
|
||||
assert_equal(false, ti.reload.is_retired?)
|
||||
assert_equal(true, bkub.implies?("banned_artist"))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user