From 3681f7dcce8f82d2a4377a051952159cd03919c0 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 11 Sep 2019 16:32:44 +0200 Subject: port tootsuite#11805 to monserfork: Change deletes to preserve soft-deleted statuses in unresolved reports Change all account actions except "none" to resolve all unresolved reports Refactor `SuspendAccountService` to be more readable --- app/models/admin/account_action.rb | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) (limited to 'app/models/admin/account_action.rb') diff --git a/app/models/admin/account_action.rb b/app/models/admin/account_action.rb index 9789cb553..173e4620b 100644 --- a/app/models/admin/account_action.rb +++ b/app/models/admin/account_action.rb @@ -87,19 +87,23 @@ class Admin::AccountAction # A log entry is only interesting if the warning contains # custom text from someone. Otherwise it's just noise. + log_action(:create, warning) if warning.text.present? end def process_reports! - return if report_id.blank? + # If we're doing "mark as resolved" on a single report, + # then we want to keep other reports open in case they + # contain new actionable information. + # + # Otherwise, we will mark all unresolved reports about + # the account as resolved. - authorize(report, :update?) + reports.each { |report| authorize(report, :update?) } - if type == 'none' + reports.each do |report| log_action(:resolve, report) report.resolve!(current_account) - else - Report.where(target_account: target_account).unresolved.update_all(action_taken: true, action_taken_by_account_id: current_account.id) end end @@ -164,6 +168,20 @@ class Admin::AccountAction send_email_notification && target_account.local? end + def status_ids + @report.status_ids if @report && include_statuses + end + + def reports + @reports ||= begin + if type == 'none' && with_report? + [report] + else + Report.where(target_account: target_account).unresolved + end + end + end + def warning_preset @warning_preset ||= AccountWarningPreset.find(warning_preset_id) if warning_preset_id.present? end -- cgit