0
0
Fork 0

Feature: Report improvements (#6967) (#7000)

* Implement Assignment of Reports (#6967)

* Change translation of admin.report.comment.label to "Report Comment" for clarity

As we'll soon add the ability for reports to have comments on them, this clarification makes sense.

* Implement notes for Reports

This enables moderators to leave comments about a report whilst they work on it

* Fix display of report moderation notes

* Allow reports to be reopened / marked as unresolved

* Redirect to reports listing upon resolution of report

* Implement "resolve with note" functionality

* Add inverse relationship for report notes

* Remove additional database querying when loading report notes

* Fix tests for reports

* Fix localisations for report notes / reports
This commit is contained in:
Emelia Smith 2018-04-02 22:04:14 +02:00 committed by Eugen Rochko
parent 36eac8ba90
commit e85cffb236
17 changed files with 290 additions and 25 deletions

View file

@ -95,6 +95,8 @@ class Account < ApplicationRecord
has_many :reports
has_many :targeted_reports, class_name: 'Report', foreign_key: :target_account_id
has_many :report_notes, dependent: :destroy
# Moderation notes
has_many :account_moderation_notes, dependent: :destroy
has_many :targeted_moderation_notes, class_name: 'AccountModerationNote', foreign_key: :target_account_id, dependent: :destroy

View file

@ -12,12 +12,16 @@
# account_id :integer not null
# action_taken_by_account_id :integer
# target_account_id :integer not null
# assigned_account_id :integer
#
class Report < ApplicationRecord
belongs_to :account
belongs_to :target_account, class_name: 'Account'
belongs_to :action_taken_by_account, class_name: 'Account', optional: true
belongs_to :assigned_account, class_name: 'Account', optional: true
has_many :notes, class_name: 'ReportNote', foreign_key: :report_id, inverse_of: :report, dependent: :destroy
scope :unresolved, -> { where(action_taken: false) }
scope :resolved, -> { where(action_taken: true) }

21
app/models/report_note.rb Normal file
View file

@ -0,0 +1,21 @@
# frozen_string_literal: true
# == Schema Information
#
# Table name: report_notes
#
# id :integer not null, primary key
# content :text not null
# report_id :integer not null
# account_id :integer not null
# created_at :datetime not null
# updated_at :datetime not null
#
class ReportNote < ApplicationRecord
belongs_to :account
belongs_to :report, inverse_of: :notes
scope :latest, -> { reorder('created_at ASC') }
validates :content, presence: true, length: { maximum: 500 }
end