BURs: remove old single alias/implication pruning code.
* Rename TagChangeRequestPruner to BulkUpdateRequestPruner. * Remove old code for pruning individual alias / implication requests.
This commit is contained in:
27
app/logical/bulk_update_request_pruner.rb
Normal file
27
app/logical/bulk_update_request_pruner.rb
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
module BulkUpdateRequestPruner
|
||||||
|
module_function
|
||||||
|
|
||||||
|
def warn_old
|
||||||
|
BulkUpdateRequest.old.pending.find_each do |bulk_update_request|
|
||||||
|
if bulk_update_request.forum_topic
|
||||||
|
body = "This bulk update request is pending automatic rejection in 5 days."
|
||||||
|
unless bulk_update_request.forum_topic.posts.where(creator_id: User.system.id, body: body).exists?
|
||||||
|
bulk_update_request.forum_updater.update(body)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def reject_expired
|
||||||
|
BulkUpdateRequest.expired.pending.find_each do |bulk_update_request|
|
||||||
|
ApplicationRecord.transaction do
|
||||||
|
if bulk_update_request.forum_topic
|
||||||
|
body = "This bulk update request has been rejected because it was not approved within 60 days."
|
||||||
|
bulk_update_request.forum_updater.update(body)
|
||||||
|
end
|
||||||
|
|
||||||
|
bulk_update_request.reject!(User.system)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -12,8 +12,8 @@ module DanbooruMaintenance
|
|||||||
safely { PostDisapproval.dmail_messages! }
|
safely { PostDisapproval.dmail_messages! }
|
||||||
safely { regenerate_post_counts! }
|
safely { regenerate_post_counts! }
|
||||||
safely { TokenBucket.prune! }
|
safely { TokenBucket.prune! }
|
||||||
safely { TagChangeRequestPruner.warn_all }
|
safely { BulkUpdateRequestPruner.warn_old }
|
||||||
safely { TagChangeRequestPruner.reject_all }
|
safely { BulkUpdateRequestPruner.reject_expired }
|
||||||
safely { Ban.prune! }
|
safely { Ban.prune! }
|
||||||
safely { ActiveRecord::Base.connection.execute("vacuum analyze") unless Rails.env.test? }
|
safely { ActiveRecord::Base.connection.execute("vacuum analyze") unless Rails.env.test? }
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,45 +0,0 @@
|
|||||||
# Service to prune old unapproved tag change requests
|
|
||||||
# (including tag aliases, tag implications, and bulk
|
|
||||||
# update requests).
|
|
||||||
|
|
||||||
class TagChangeRequestPruner
|
|
||||||
def self.warn_all
|
|
||||||
[TagAlias, TagImplication, BulkUpdateRequest].each do |model|
|
|
||||||
new.warn_old(model)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.reject_all
|
|
||||||
[TagAlias, TagImplication, BulkUpdateRequest].each do |model|
|
|
||||||
new.reject_expired(model)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def warn_old(model)
|
|
||||||
model.old.pending.find_each do |tag_change|
|
|
||||||
if tag_change.forum_topic
|
|
||||||
name = model.model_name.human.downcase
|
|
||||||
body = "This #{name} is pending automatic rejection in 5 days."
|
|
||||||
unless tag_change.forum_topic.posts.where(creator_id: User.system.id, body: body).exists?
|
|
||||||
tag_change.forum_updater.update(body)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def reject_expired(model)
|
|
||||||
model.expired.pending.find_each do |tag_change|
|
|
||||||
ApplicationRecord.transaction do
|
|
||||||
if tag_change.forum_topic
|
|
||||||
name = model.model_name.human.downcase
|
|
||||||
body = "This #{name} has been rejected because it was not approved within 60 days."
|
|
||||||
tag_change.forum_updater.update(body)
|
|
||||||
end
|
|
||||||
|
|
||||||
CurrentUser.as_system do
|
|
||||||
tag_change.reject!
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@@ -93,7 +93,7 @@ class BulkUpdateRequest < ApplicationRecord
|
|||||||
|
|
||||||
def reject!(rejector = User.system)
|
def reject!(rejector = User.system)
|
||||||
transaction do
|
transaction do
|
||||||
update(status: "rejected")
|
update!(status: "rejected")
|
||||||
forum_updater.update("The #{bulk_update_request_link} (forum ##{forum_post.id}) has been rejected by @#{rejector.name}.")
|
forum_updater.update("The #{bulk_update_request_link} (forum ##{forum_post.id}) has been rejected by @#{rejector.name}.")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
25
test/unit/bulk_update_request_pruner_test.rb
Normal file
25
test/unit/bulk_update_request_pruner_test.rb
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
class BulkUpdateRequestPrunerTest < ActiveSupport::TestCase
|
||||||
|
context '#warn_old' do
|
||||||
|
should "update the forum topic for a bulk update request" do
|
||||||
|
forum_topic = as(create(:user)) { create(:forum_topic) }
|
||||||
|
bur = create(:bulk_update_request, status: "pending", forum_topic: forum_topic, created_at: (TagRelationship::EXPIRY_WARNING + 1).days.ago)
|
||||||
|
|
||||||
|
BulkUpdateRequestPruner.warn_old
|
||||||
|
assert_equal("pending", bur.reload.status)
|
||||||
|
assert_match(/pending automatic rejection/, ForumPost.last.body)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context '#reject_expired' do
|
||||||
|
should "reject the bulk update request" do
|
||||||
|
forum_topic = as(create(:user)) { create(:forum_topic) }
|
||||||
|
bur = create(:bulk_update_request, status: "pending", forum_topic: forum_topic, created_at: (TagRelationship::EXPIRY + 1).days.ago)
|
||||||
|
|
||||||
|
BulkUpdateRequestPruner.reject_expired
|
||||||
|
assert_equal("rejected", bur.reload.status)
|
||||||
|
assert_match(/rejected because it was not approved within 60 days/, bur.forum_post.body)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
require 'test_helper'
|
|
||||||
|
|
||||||
class TagChangeRequestPrunerTest < ActiveSupport::TestCase
|
|
||||||
setup do
|
|
||||||
CurrentUser.user = FactoryBot.create(:admin_user)
|
|
||||||
CurrentUser.ip_addr = "127.0.0.1"
|
|
||||||
|
|
||||||
@forum_topic = create(:forum_topic)
|
|
||||||
@tag_alias = create(:tag_alias, forum_topic: @forum_topic)
|
|
||||||
@tag_implication = create(:tag_implication, antecedent_name: "ccc", consequent_name: "ddd", forum_topic: @forum_topic)
|
|
||||||
@bulk_update_request = create(:bulk_update_request, script: "alias eee -> fff", forum_topic: @forum_topic)
|
|
||||||
end
|
|
||||||
|
|
||||||
teardown do
|
|
||||||
CurrentUser.user = nil
|
|
||||||
CurrentUser.ip_addr = nil
|
|
||||||
end
|
|
||||||
|
|
||||||
subject { TagChangeRequestPruner.new }
|
|
||||||
|
|
||||||
context '#warn_old' do
|
|
||||||
setup do
|
|
||||||
[TagAlias, TagImplication, BulkUpdateRequest].each do |model|
|
|
||||||
model.update_all(status: "pending", created_at: (TagRelationship::EXPIRY_WARNING + 1).days.ago)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
should "update the forum topic for an alias" do
|
|
||||||
ForumUpdater.any_instance.expects(:update)
|
|
||||||
subject.warn_old(TagAlias)
|
|
||||||
end
|
|
||||||
|
|
||||||
should "update the forum topic for an implication" do
|
|
||||||
ForumUpdater.any_instance.expects(:update)
|
|
||||||
subject.warn_old(TagImplication)
|
|
||||||
end
|
|
||||||
|
|
||||||
should "update the forum topic for a bulk update request" do
|
|
||||||
ForumUpdater.any_instance.expects(:update)
|
|
||||||
subject.warn_old(BulkUpdateRequest)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context '#reject_expired' do
|
|
||||||
setup do
|
|
||||||
[TagAlias, TagImplication, BulkUpdateRequest].each do |model|
|
|
||||||
model.update_all(status: "pending", created_at: (TagRelationship::EXPIRY + 1).days.ago)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
should "reject the alias" do
|
|
||||||
TagAlias.any_instance.expects(:reject!)
|
|
||||||
subject.reject_expired(TagAlias)
|
|
||||||
end
|
|
||||||
|
|
||||||
should "reject the implication" do
|
|
||||||
TagImplication.any_instance.expects(:reject!)
|
|
||||||
subject.reject_expired(TagImplication)
|
|
||||||
end
|
|
||||||
|
|
||||||
should "reject the bulk update request" do
|
|
||||||
BulkUpdateRequest.any_instance.expects(:reject!)
|
|
||||||
subject.reject_expired(BulkUpdateRequest)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
Reference in New Issue
Block a user