Add category and rule_ids params to POST /api/v1/reports (#17492)
				
					
				
			This commit is contained in:
		
							parent
							
								
									5533fa28b6
								
							
						
					
					
						commit
						2f8159baad
					
				@ -33,6 +33,6 @@ class Api::V1::ReportsController < Api::BaseController
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def report_params
 | 
			
		||||
    params.permit(:account_id, :comment, :forward, status_ids: [])
 | 
			
		||||
    params.permit(:account_id, :comment, :category, :forward, status_ids: [], rule_ids: [])
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
@ -39,6 +39,9 @@ class Report < ApplicationRecord
 | 
			
		||||
  scope :with_accounts, -> { includes([:account, :target_account, :action_taken_by_account, :assigned_account].index_with({ user: [:invite_request, :invite] })) }
 | 
			
		||||
 | 
			
		||||
  validates :comment, length: { maximum: 1_000 }
 | 
			
		||||
  validates :rule_ids, absence: true, unless: :violation?
 | 
			
		||||
 | 
			
		||||
  validate :validate_rule_ids
 | 
			
		||||
 | 
			
		||||
  enum category: {
 | 
			
		||||
    other: 0,
 | 
			
		||||
@ -122,4 +125,10 @@ class Report < ApplicationRecord
 | 
			
		||||
  def set_uri
 | 
			
		||||
    self.uri = ActivityPub::TagManager.instance.generate_uri_for(self) if uri.nil? && account.local?
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def validate_rule_ids
 | 
			
		||||
    return unless violation?
 | 
			
		||||
 | 
			
		||||
    errors.add(:rule_ids, I18n.t('reports.errors.invalid_rules')) unless rules.size == rule_ids.size
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
@ -8,13 +8,15 @@ class ReportService < BaseService
 | 
			
		||||
    @target_account = target_account
 | 
			
		||||
    @status_ids     = options.delete(:status_ids) || []
 | 
			
		||||
    @comment        = options.delete(:comment) || ''
 | 
			
		||||
    @category       = options.delete(:category) || 'other'
 | 
			
		||||
    @rule_ids       = options.delete(:rule_ids)
 | 
			
		||||
    @options        = options
 | 
			
		||||
 | 
			
		||||
    raise ActiveRecord::RecordNotFound if @target_account.suspended?
 | 
			
		||||
 | 
			
		||||
    create_report!
 | 
			
		||||
    notify_staff!
 | 
			
		||||
    forward_to_origin! if !@target_account.local? && ActiveModel::Type::Boolean.new.cast(@options[:forward])
 | 
			
		||||
    forward_to_origin! if forward?
 | 
			
		||||
 | 
			
		||||
    @report
 | 
			
		||||
  end
 | 
			
		||||
@ -27,7 +29,9 @@ class ReportService < BaseService
 | 
			
		||||
      status_ids: @status_ids,
 | 
			
		||||
      comment: @comment,
 | 
			
		||||
      uri: @options[:uri],
 | 
			
		||||
      forwarded: ActiveModel::Type::Boolean.new.cast(@options[:forward])
 | 
			
		||||
      forwarded: forward?,
 | 
			
		||||
      category: @category,
 | 
			
		||||
      rule_ids: @rule_ids
 | 
			
		||||
    )
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
@ -48,6 +52,10 @@ class ReportService < BaseService
 | 
			
		||||
    )
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def forward?
 | 
			
		||||
    !@target_account.local? && ActiveModel::Type::Boolean.new.cast(@options[:forward])
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def payload
 | 
			
		||||
    Oj.dump(serialize_payload(@report, ActivityPub::FlagSerializer, account: some_local_account))
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
@ -1225,6 +1225,9 @@ en:
 | 
			
		||||
    reply:
 | 
			
		||||
      proceed: Proceed to reply
 | 
			
		||||
      prompt: 'You want to reply to this post:'
 | 
			
		||||
  reports:
 | 
			
		||||
    errors:
 | 
			
		||||
      invalid_rules: does not reference valid rules
 | 
			
		||||
  scheduled_statuses:
 | 
			
		||||
    over_daily_limit: You have exceeded the limit of %{limit} scheduled posts for today
 | 
			
		||||
    over_total_limit: You have exceeded the limit of %{limit} scheduled posts
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user