Set approver of aliases/implications in BURs.

Previously only the BUR's approver was set when a BUR was approved. Set
the approver for each alias/implication in the BUR as well.

Additionally:

* Refactor `approve!` to take a user instead of just a user id.
* Be mass-assignment permissions aware when setting approver_id.
This commit is contained in:
evazion
2016-10-26 18:40:58 -05:00
parent 1e8a68a56b
commit 6dd8ec909d
8 changed files with 29 additions and 35 deletions

View File

@@ -33,12 +33,10 @@ class BulkUpdateRequest < ActiveRecord::Base
extend SearchMethods
def approve!(approver_id)
self.approver_id = approver_id
AliasAndImplicationImporter.new(script, forum_topic_id, "1", true).process!
self.status = "approved"
self.skip_secondary_validations = true
save
def approve!(approver)
AliasAndImplicationImporter.new(script, forum_topic_id, "1", true).process!(approver)
update({ :status => "approved", :approver_id => approver.id, :skip_secondary_validations => true }, :as => approver.role)
update_forum_topic_for_approve
rescue Exception => x

View File

@@ -21,7 +21,7 @@ class TagAlias < ActiveRecord::Base
belongs_to :approver, :class_name => "User"
belongs_to :forum_topic
attr_accessible :antecedent_name, :consequent_name, :forum_topic_id, :skip_secondary_validations
attr_accessible :status, :as => [:admin]
attr_accessible :status, :approver_id, :as => [:admin]
module SearchMethods
def name_matches(name)
@@ -88,9 +88,9 @@ class TagAlias < ActiveRecord::Base
end.uniq
end
def approve!(approver_id)
update_attributes(:status => "queued", :approver_id => approver_id)
delay(:queue => "default").process!(true)
def approve!(approver = CurrentUser.user, update_topic: true)
update({ :status => "queued", :approver_id => approver.id }, :as => approver.role)
delay(:queue => "default").process!(update_topic)
end
def process!(update_topic=true)
@@ -102,9 +102,8 @@ class TagAlias < ActiveRecord::Base
forum_message = []
begin
admin = CurrentUser.user || approver || User.admins.first
CurrentUser.scoped(admin, "127.0.0.1") do
update({ :status => "processing" }, :as => CurrentUser.role)
CurrentUser.scoped(approver, CurrentUser.ip_addr) do
update({ :status => "processing" }, :as => approver.role)
move_aliases_and_implications
move_saved_searches
clear_all_cache
@@ -112,7 +111,7 @@ class TagAlias < ActiveRecord::Base
update_posts
forum_message << "The tag alias [[#{antecedent_name}]] -> [[#{consequent_name}]] (alias ##{id}) has been approved."
forum_message << rename_wiki_and_artist
update({ :status => "active", :post_count => consequent_tag.post_count }, :as => CurrentUser.role)
update({ :status => "active", :post_count => consequent_tag.post_count }, :as => approver.role)
end
rescue Exception => e
if tries < 5

View File

@@ -22,7 +22,7 @@ class TagImplication < ActiveRecord::Base
validate :antecedent_and_consequent_are_different
validate :wiki_pages_present, :on => :create
attr_accessible :antecedent_name, :consequent_name, :forum_topic_id, :skip_secondary_validations
attr_accessible :status, :as => [:admin]
attr_accessible :status, :approver_id, :as => [:admin]
module DescendantMethods
extend ActiveSupport::Concern
@@ -138,11 +138,10 @@ class TagImplication < ActiveRecord::Base
tries = 0
begin
admin = CurrentUser.user || approver || User.admins.first
CurrentUser.scoped(admin, "127.0.0.1") do
update({ :status => "processing" }, :as => CurrentUser.role)
CurrentUser.scoped(approver, CurrentUser.ip_addr) do
update({ :status => "processing" }, :as => approver.role)
update_posts
update({ :status => "active" }, :as => CurrentUser.role)
update({ :status => "active" }, :as => approver.role)
update_descendant_names_for_parents
update_forum_topic_for_approve if update_topic
end
@@ -283,11 +282,9 @@ class TagImplication < ActiveRecord::Base
end
end
def approve!(approver_id)
self.status = "queued"
self.approver_id = approver_id
save
delay(:queue => "default").process!(true)
def approve!(approver = CurrentUser.user, update_topic: true)
update({ :status => "queued", :approver_id => approver.id }, :as => approver.role)
delay(:queue => "default").process!(update_topic)
end
def reject!