Updated

app/controllers / petitions_controller.rb

C
183 lines of codes
32 methods
3.6 complexity/method
72 churn
115.89 complexity
0 duplications
require 'csv' class PetitionsController < ApplicationController
  1. PetitionsController assumes too much for instance variable '@new_petition'
  2. PetitionsController assumes too much for instance variable '@petition'
  3. PetitionsController assumes too much for instance variable '@petitions'
  4. PetitionsController has no descriptive comment
  5. PetitionsController has at least 32 methods
before_action :redirect_to_valid_state, only: [:index] before_action :do_not_cache, except: [:index, :show] before_action :set_cors_headers, only: [:index, :show, :count], if: :json_request? before_action :redirect_to_home_page_if_dissolved, only: [:new, :check, :check_results, :create] before_action :redirect_to_home_page_unless_opened, only: [:index, :new, :check, :check_results, :create] before_action :redirect_to_archived_petition_if_archived, only: [:show] before_action :retrieve_petitions, only: [:index] before_action :retrieve_petition, only: [:show, :count, :gathering_support, :moderation_info] before_action :build_petition_creator, only: [:check, :check_results, :new, :create] before_action :redirect_to_stopped_page, if: :stopped?, only: [:moderation_info, :show] before_action :redirect_to_gathering_support_url, if: :collecting_sponsors?, only: [:moderation_info, :show] before_action :redirect_to_moderation_info_url, if: :in_moderation?, only: [:gathering_support, :show] before_action :redirect_to_petition_url, if: :moderated?, only: [:gathering_support, :moderation_info] after_action :set_content_disposition, if: :csv_request?, only: [:index] def index respond_to do |format| format.html
  1. PetitionsController#index refers to 'format' more than self (maybe move it to another class?) Locations: 0 1 2
format.json
  1. PetitionsController#index refers to 'format' more than self (maybe move it to another class?) Locations: 0 1 2
format.csv
  1. PetitionsController#index refers to 'format' more than self (maybe move it to another class?) Locations: 0 1 2
end end def show respond_to do |format| format.html
  1. PetitionsController#show refers to 'format' more than self (maybe move it to another class?) Locations: 0 1
format.json
  1. PetitionsController#show refers to 'format' more than self (maybe move it to another class?) Locations: 0 1
end end def count respond_to do |format| format.json end end def check respond_to do |format| format.html end end def check_results respond_to do |format| format.html end end def new respond_to do |format| format.html end end def create if @new_petition.save redirect_to thank_you_petition_url(@new_petition) else respond_to do |format| format.html { render :new } end end end def gathering_support respond_to do |format| format.html end end def moderation_info respond_to do |format| format.html end end def thank_you respond_to do |format| format.html end end protected def petition_id params[:id].to_i end def redirect_to_home_page_if_dissolved redirect_to home_url if Parliament.dissolved? end def redirect_to_home_page_unless_opened redirect_to home_url unless Parliament.opened? end def request_format request.format.json? ? :json : nil end def redirect_to_archived_petition_if_archived if petition = Archived::Petition.find_by(id: petition_id) redirect_to archived_petition_url(petition_id, format: request_format) if petition.parliament.archived? end end def retrieve_petitions @petitions = Petition.visible.search(params) end def retrieve_petition @petition = Petition.show.find(petition_id) end def build_petition_creator @new_petition = PetitionCreator.new(params, request) end def redirect_to_valid_state if state_present? && !valid_state? redirect_to petitions_url(search_params(state: :all)) end end def state_present? params[:state].present? end def valid_state? public_petition_facets.include?(params[:state].to_sym) end def search_params(overrides = {}) params.permit(:page, :q, :state).merge(overrides) end def collecting_sponsors? @petition.collecting_sponsors? end def redirect_to_gathering_support_url redirect_to gathering_support_petition_url(@petition) end def in_moderation? @petition.in_moderation? end def redirect_to_moderation_info_url redirect_to moderation_info_petition_url(@petition) end def moderated? @petition.moderated? end def stopped? @petition.stopped? end def redirect_to_stopped_page redirect_to home_url end def redirect_to_petition_url redirect_to petition_url(@petition) end def csv_filename "#{@petitions.scope}-petitions.csv" end def set_content_disposition response.headers['Content-Disposition'] = "attachment; filename=#{csv_filename}" end end