[Admin] Ability to reowner posts for special conditions

This commit is contained in:
Kira 2021-04-01 22:33:37 -07:00
parent 82ec5b537f
commit 3db4c30721
3 changed files with 60 additions and 0 deletions

View File

@ -0,0 +1,38 @@
module Admin
class ReownerController < ApplicationController
before_action :admin_only
def new
end
def create
@reowner_params = new_params
@old_user = User.find_by_name_or_id(@reowner_params[:old_owner])
@new_user = User.find_by_name_or_id(@reowner_params[:new_owner])
query = @reowner_params[:search]
unless @old_user && @new_user
flash[:error] = "Old or new user failed to look up. Use !id for name to use an id."
redirect_back fallback_location: new_admin_reowner_path
return
end
ModAction.log(:post_owner_reassign)
Post.tag_match("user:!#{@old_user.id} #{query}").limit(300).records.each do |p|
p.do_not_version_changes = true
p.update({uploader_id: @new_user.id})
p.versions.where(updater_id: @old_user.id).each do |pv|
pv.update_column(:updater_id, @new_user.id)
pv.reload
pv.__elasticsearch__.index_document
end
end
flash[:notice] = "Post ownership reassigned"
redirect_back fallback_location: new_admin_reowner_path
end
private
def new_params
params.require(:reowner).permit([:old_owner, :search, :new_owner])
end
end
end

View File

@ -0,0 +1,21 @@
<div>
<h4>Change post ownership</h4>
<%= form_tag(admin_reowner_path, :method => :post, :class => "simple_form") do %>
<div class="input">
<label>Old Owner</label>
<%= text_field :reowner, :old_owner, placeholder: 'Use ! in front of an id for an id.', size: 40 %>
</div>
<div class="input">
<label>New Owner</label>
<%= text_field :reowner, :new_owner, placeholder: 'Use ! in front of an id for an id.', size: 40 %>
</div>
<div class="input">
<label>Search Query</label>
<%= text_field :reowner, :search, size: 40 %>
</div>
<div class="input">
<%= submit_tag "Submit" %>
</div>
<% end %>
</div>

View File

@ -21,6 +21,7 @@ Rails.application.routes.draw do
resource :alias_and_implication_import, :only => [:new, :create]
resource :dashboard, :only => [:show]
resources :exceptions, only: [:index, :show]
resource :reowner, controller: 'reowner', only: [:new, :create]
end
resources :edit_histories
namespace :moderator do