Remove `default_scope` from `Admin::ActionLog` (#28026)
This commit is contained in:
parent
291dc04e67
commit
e48ecd2929
|
@ -6,7 +6,7 @@ module Admin
|
||||||
|
|
||||||
def index
|
def index
|
||||||
authorize :audit_log, :index?
|
authorize :audit_log, :index?
|
||||||
@auditable_accounts = Account.where(id: Admin::ActionLog.reorder(nil).select('distinct account_id')).select(:id, :username)
|
@auditable_accounts = Account.where(id: Admin::ActionLog.select('distinct account_id')).select(:id, :username)
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
|
@ -24,12 +24,12 @@ class Admin::ActionLog < ApplicationRecord
|
||||||
belongs_to :account
|
belongs_to :account
|
||||||
belongs_to :target, polymorphic: true, optional: true
|
belongs_to :target, polymorphic: true, optional: true
|
||||||
|
|
||||||
default_scope -> { order('id desc') }
|
|
||||||
|
|
||||||
before_validation :set_human_identifier
|
before_validation :set_human_identifier
|
||||||
before_validation :set_route_param
|
before_validation :set_route_param
|
||||||
before_validation :set_permalink
|
before_validation :set_permalink
|
||||||
|
|
||||||
|
scope :latest, -> { order(id: :desc) }
|
||||||
|
|
||||||
def action
|
def action
|
||||||
super.to_sym
|
super.to_sym
|
||||||
end
|
end
|
||||||
|
|
|
@ -72,7 +72,7 @@ class Admin::ActionLogFilter
|
||||||
end
|
end
|
||||||
|
|
||||||
def results
|
def results
|
||||||
scope = Admin::ActionLog.includes(:target)
|
scope = latest_action_logs.includes(:target)
|
||||||
|
|
||||||
params.each do |key, value|
|
params.each do |key, value|
|
||||||
next if key.to_s == 'page'
|
next if key.to_s == 'page'
|
||||||
|
@ -88,14 +88,18 @@ class Admin::ActionLogFilter
|
||||||
def scope_for(key, value)
|
def scope_for(key, value)
|
||||||
case key
|
case key
|
||||||
when 'action_type'
|
when 'action_type'
|
||||||
Admin::ActionLog.where(ACTION_TYPE_MAP[value.to_sym])
|
latest_action_logs.where(ACTION_TYPE_MAP[value.to_sym])
|
||||||
when 'account_id'
|
when 'account_id'
|
||||||
Admin::ActionLog.where(account_id: value)
|
latest_action_logs.where(account_id: value)
|
||||||
when 'target_account_id'
|
when 'target_account_id'
|
||||||
account = Account.find_or_initialize_by(id: value)
|
account = Account.find_or_initialize_by(id: value)
|
||||||
Admin::ActionLog.where(target: [account, account.user].compact)
|
latest_action_logs.where(target: [account, account.user].compact)
|
||||||
else
|
else
|
||||||
raise Mastodon::InvalidParameterError, "Unknown filter: #{key}"
|
raise Mastodon::InvalidParameterError, "Unknown filter: #{key}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def latest_action_logs
|
||||||
|
Admin::ActionLog.latest
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -131,25 +131,25 @@ class Report < ApplicationRecord
|
||||||
Admin::ActionLog.where(
|
Admin::ActionLog.where(
|
||||||
target_type: 'Report',
|
target_type: 'Report',
|
||||||
target_id: id
|
target_id: id
|
||||||
).unscope(:order).arel,
|
).arel,
|
||||||
|
|
||||||
Admin::ActionLog.where(
|
Admin::ActionLog.where(
|
||||||
target_type: 'Account',
|
target_type: 'Account',
|
||||||
target_id: target_account_id
|
target_id: target_account_id
|
||||||
).unscope(:order).arel,
|
).arel,
|
||||||
|
|
||||||
Admin::ActionLog.where(
|
Admin::ActionLog.where(
|
||||||
target_type: 'Status',
|
target_type: 'Status',
|
||||||
target_id: status_ids
|
target_id: status_ids
|
||||||
).unscope(:order).arel,
|
).arel,
|
||||||
|
|
||||||
Admin::ActionLog.where(
|
Admin::ActionLog.where(
|
||||||
target_type: 'AccountWarning',
|
target_type: 'AccountWarning',
|
||||||
target_id: AccountWarning.where(report_id: id).select(:id)
|
target_id: AccountWarning.where(report_id: id).select(:id)
|
||||||
).unscope(:order).arel,
|
).arel,
|
||||||
].reduce { |union, query| Arel::Nodes::UnionAll.new(union, query) }
|
].reduce { |union, query| Arel::Nodes::UnionAll.new(union, query) }
|
||||||
|
|
||||||
Admin::ActionLog.from(Arel::Nodes::As.new(subquery, Admin::ActionLog.arel_table))
|
Admin::ActionLog.latest.from(Arel::Nodes::As.new(subquery, Admin::ActionLog.arel_table))
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
Fabricator('Admin::ActionLog') do
|
Fabricator(:action_log, from: Admin::ActionLog) do
|
||||||
account { Fabricate.build(:account) }
|
account { Fabricate.build(:account) }
|
||||||
action 'MyString'
|
action 'MyString'
|
||||||
target nil
|
target nil
|
|
@ -110,9 +110,9 @@ describe Report do
|
||||||
let(:status) { Fabricate(:status) }
|
let(:status) { Fabricate(:status) }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
Fabricate('Admin::ActionLog', target_type: 'Report', account_id: target_account.id, target_id: report.id, created_at: 2.days.ago)
|
Fabricate(:action_log, target_type: 'Report', account_id: target_account.id, target_id: report.id, created_at: 2.days.ago)
|
||||||
Fabricate('Admin::ActionLog', target_type: 'Account', account_id: target_account.id, target_id: report.target_account_id, created_at: 2.days.ago)
|
Fabricate(:action_log, target_type: 'Account', account_id: target_account.id, target_id: report.target_account_id, created_at: 2.days.ago)
|
||||||
Fabricate('Admin::ActionLog', target_type: 'Status', account_id: target_account.id, target_id: status.id, created_at: 2.days.ago)
|
Fabricate(:action_log, target_type: 'Status', account_id: target_account.id, target_id: status.id, created_at: 2.days.ago)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'returns right logs' do
|
it 'returns right logs' do
|
||||||
|
|
Loading…
Reference in New Issue