@@ -16,19 +16,19 @@ class Admin::ReportsController < ApplicationController | |||||
end | end | ||||
def resolve | def resolve | ||||
@report.update(action_taken: true) | |||||
@report.update(action_taken: true, action_taken_by_account_id: current_account.id) | |||||
redirect_to admin_report_path(@report) | redirect_to admin_report_path(@report) | ||||
end | end | ||||
def suspend | def suspend | ||||
Admin::SuspensionWorker.perform_async(@report.target_account.id) | Admin::SuspensionWorker.perform_async(@report.target_account.id) | ||||
Report.unresolved.where(target_account: @report.target_account).update_all(action_taken: true) | |||||
Report.unresolved.where(target_account: @report.target_account).update_all(action_taken: true, action_taken_by_account_id: current_account.id) | |||||
redirect_to admin_report_path(@report) | redirect_to admin_report_path(@report) | ||||
end | end | ||||
def silence | def silence | ||||
@report.target_account.update(silenced: true) | @report.target_account.update(silenced: true) | ||||
Report.unresolved.where(target_account: @report.target_account).update_all(action_taken: true) | |||||
Report.unresolved.where(target_account: @report.target_account).update_all(action_taken: true, action_taken_by_account_id: current_account.id) | |||||
redirect_to admin_report_path(@report) | redirect_to admin_report_path(@report) | ||||
end | end | ||||
@@ -3,6 +3,7 @@ | |||||
class Report < ApplicationRecord | class Report < ApplicationRecord | ||||
belongs_to :account | belongs_to :account | ||||
belongs_to :target_account, class_name: 'Account' | belongs_to :target_account, class_name: 'Account' | ||||
belongs_to :action_taken_by_account, class_name: 'Account' | |||||
scope :unresolved, -> { where(action_taken: false) } | scope :unresolved, -> { where(action_taken: false) } | ||||
scope :resolved, -> { where(action_taken: true) } | scope :resolved, -> { where(action_taken: true) } | ||||
@@ -27,7 +27,7 @@ | |||||
= link_to remove_admin_report_path(@report, status_id: status.id), method: :post, class: 'icon-button', style: 'font-size: 24px; width: 24px; height: 24px', title: 'Delete' do | = link_to remove_admin_report_path(@report, status_id: status.id), method: :post, class: 'icon-button', style: 'font-size: 24px; width: 24px; height: 24px', title: 'Delete' do | ||||
= fa_icon 'trash' | = fa_icon 'trash' | ||||
- unless @report.action_taken? | |||||
- if !@report.action_taken? | |||||
%hr/ | %hr/ | ||||
%div{ style: 'overflow: hidden' } | %div{ style: 'overflow: hidden' } | ||||
@@ -36,3 +36,9 @@ | |||||
= link_to 'Suspend account', suspend_admin_report_path(@report), method: :post, class: 'button' | = link_to 'Suspend account', suspend_admin_report_path(@report), method: :post, class: 'button' | ||||
%div{ style: 'float: left' } | %div{ style: 'float: left' } | ||||
= link_to 'Mark as resolved', resolve_admin_report_path(@report), method: :post, class: 'button' | = link_to 'Mark as resolved', resolve_admin_report_path(@report), method: :post, class: 'button' | ||||
- elsif !@report.action_taken_by_account.nil? | |||||
%hr/ | |||||
%p | |||||
%strong Action taken by: | |||||
= @report.action_taken_by_account.acct |
@@ -0,0 +1,5 @@ | |||||
class AddActionTakenByAccountIdToReports < ActiveRecord::Migration[5.0] | |||||
def change | |||||
add_column :reports, :action_taken_by_account_id, :integer | |||||
end | |||||
end |
@@ -10,7 +10,7 @@ | |||||
# | # | ||||
# It's strongly recommended that you check this file into your version control system. | # It's strongly recommended that you check this file into your version control system. | ||||
ActiveRecord::Schema.define(version: 20170330164118) do | |||||
ActiveRecord::Schema.define(version: 20170403172249) do | |||||
# These are extensions that must be enabled in order to support this database | # These are extensions that must be enabled in order to support this database | ||||
enable_extension "plpgsql" | enable_extension "plpgsql" | ||||
@@ -201,13 +201,14 @@ ActiveRecord::Schema.define(version: 20170330164118) do | |||||
end | end | ||||
create_table "reports", force: :cascade do |t| | create_table "reports", force: :cascade do |t| | ||||
t.integer "account_id", null: false | |||||
t.integer "target_account_id", null: false | |||||
t.bigint "status_ids", default: [], null: false, array: true | |||||
t.text "comment", default: "", null: false | |||||
t.boolean "action_taken", default: false, null: false | |||||
t.datetime "created_at", null: false | |||||
t.datetime "updated_at", null: false | |||||
t.integer "account_id", null: false | |||||
t.integer "target_account_id", null: false | |||||
t.bigint "status_ids", default: [], null: false, array: true | |||||
t.text "comment", default: "", null: false | |||||
t.boolean "action_taken", default: false, null: false | |||||
t.datetime "created_at", null: false | |||||
t.datetime "updated_at", null: false | |||||
t.integer "action_taken_by_account_id" | |||||
end | end | ||||
create_table "settings", force: :cascade do |t| | create_table "settings", force: :cascade do |t| | ||||
@@ -14,7 +14,7 @@ RSpec.describe BlockDomainService do | |||||
bad_status2 | bad_status2 | ||||
bad_attachment | bad_attachment | ||||
subject.call('evil.org', :suspend) | |||||
subject.call(DomainBlock.create!(domain: 'evil.org', severity: :suspend)) | |||||
end | end | ||||
it 'creates a domain block' do | it 'creates a domain block' do | ||||