petities/petitions.eu

View on GitHub
app/admin/petition.rb

Summary

Maintainability
A
1 hr
Test Coverage
A
100%
ActiveAdmin.register Petition do
  include AdminImageSidebar
  include AdminFriendlyIdFinder
  permit_params :name, :subdomain, :description, :initiators, :statement,
                :request, :date_projected, :organisation_id,
                :organisation_name, :petitioner_organisation,
                :petitioner_birth_date, :petitioner_birth_city,
                :petitioner_name, :petitioner_address, :petitioner_postalcode,
                :petitioner_city, :petitioner_email, :petitioner_telephone,
                :maps_query, :organisation_kind, :link1, :link2, :link3,
                :link1_text, :link2_text, :link3_text, :site1, :site1_text,
                :signatures_count, :number_of_signatures_on_paper,
                :number_of_newsletters_sent, :cached_slug, :last_confirmed_at,
                :status, :manager_id, :show_twitter, :show_history, :show_map,
                :twitter_query, :lat_lng, :lat_lng_sw, :lat_lng_ne,
                :special_count, :display_donations, :display_more_information,
                :display_signature_person_citizen,
                :display_signature_full_address, :archived, :petition_type_id,
                :display_person_born_at, :display_person_birth_city,
                :active_rate_value, :owner_id, :owner_type, :slug,
                :reference_field, :answer_due_date, :office_id

  index do
    selectable_column
    id_column
    column :name
    column :subdomain
    column :status
    column :initiators
    column :office
    column :organisation
    column :date_projected
    column :petitioner_name
    column :petitioner_email
    column :signatures_count
    column :created_at
    column :updated_at
  end

  show do
    attributes_table do
      row :id
      row :name
      row :subdomain
      row :description
      row :initiators
      row :statement
      row :request
      row :date_projected
      row :office
      row :organisation
      row :organisation_name
      row :petitioner_organisation
      row :petitioner_birth_date
      row :petitioner_birth_city
      row :petitioner_name
      row :petitioner_address
      row :petitioner_postalcode
      row :petitioner_city
      row :petitioner_email
      row :petitioner_telephone
      row :maps_query
      row :organisation_kind
      row :link1
      row :link2
      row :link3
      row :link1_text
      row :link2_text
      row :link3_text
      row :site1
      row :site1_text
      row :number_of_signatures_on_paper
      row :number_of_newsletters_sent
      row :created_at
      row :updated_at
      row :last_confirmed_at
      row :status
      row :manager
      row :show_twitter
      row :show_history
      row :show_map
      row :twitter_query
      row :lat_lng
      row :lat_lng_sw
      row :lat_lng_ne
      row :display_donations
      row :display_more_information
      row :display_signature_person_citizen
      row :display_signature_full_address
      row :archived
      row :petition_type
      row :display_person_born_at
      row :display_person_birth_city
      row :locale_list
      row :active_rate_value
      row :owner
      row :owner_Type
      row :slug
      row :reference_field
      row :answer_due_date
    end
    active_admin_comments
  end

  filter :name
  filter :id
  filter :subdomain
  filter :organisation
  filter :office
  filter :signatures_count
  filter :description
  filter :initiators
  filter :statement
  filter :request

  filter :updated_at
  filter :created_at
  filter :date_projected

  filter :petitioner_email
  filter :petitioner_city
  filter :status
  filter :archived

  action_item :view, only: :show do
    link_to(t('active_admin.petitions.update_signature_count'), update_signature_count_admin_petition_path(resource), method: :put)
  end

  member_action :update_signature_count, method: :put do
    UpdateSignaturesCacheJob.perform_later(resource)
    redirect_to([:admin, resource], notice: t('active_admin.petitions.update_signature_count_requested'))
  end

  sidebar :translations, only: :show do
    table_for resource.translations do
      column :id do |item|
        link_to(item.id, [:admin, item])
      end
      column :locale
    end
    link_to(
      I18n.t('active_admin.new_model', model: PetitionTranslation.model_name.human),
      new_admin_petition_translation_path(petition_translation: { petition_id: resource.id })
    )
  end

  sidebar :redis, only: :show do
    from_redis = { signature_count: RedisPetitionCounter.count(resource) }
    attributes_table_for from_redis do
      row :signature_count
    end
  end

  sidebar :users, only: :show do
    table_for resource.users do
      column :id do |item|
        link_to(item.id, [:admin, item])
      end
      column :name
    end
  end

  sidebar :newsletters, only: :show do
    table_for resource.newsletters do
      column :number do |item|
        link_to(item.number, [:admin, item])
      end
      column :date
    end
    link_to(
      I18n.t('active_admin.new_model', model: Newsletter.model_name.human),
      new_admin_newsletter_path(newsletter: { petition_id: resource.id })
    )
  end
end