bluelemons/diputados

View on GitHub
app/admin/notas.rb

Summary

Maintainability
A
35 mins
Test Coverage
ActiveAdmin.register Nota do
  menu :if => proc{ can?(:manage, Nota) }

  scope :all, :default => true

  self.send(:scope, :pendientes) do |items|
    items.joins(:areas).where('areas.id in (?)', current_admin_user.area_ids )
  end

  controller do
    load_and_authorize_resource
    skip_load_resource :only => :index
  end
        
  filter :id
  filter :numero
  filter :autor
  filter :tags_id, as: :multiple_select, collection: Proc.new { Tag.all }
  filter :pases_descripcion, :as => :string
  filter :primer_pase_area_name, as: :string
  filter :ultimo_pase_area_name, as: :string
  filter :pases_ingreso, :as => :date_range

  index do
    column :id
    column :year
    column :ingreso
    column :ultimo_pase_area
    default_actions
  end

  form do
    url = admin_notas_path
    url = admin_nota_path(nota.id) if action_name == "edit"
    render partial: 'form', locals: { pases: nota.build_pases, nota: nota, url: url }
  end

  show do
    columns do
      column do        
        attributes_table_for nota, :numero, :autor, :tags_list
        panel 'Historico De Pases' do
          table_for nota.pases do
            column :ingreso
            column :area
            column :descripcion
          end
        end

        panel 'Archivos' do
          table_for nota.assets do
            column 'Nombre' do |a|
              link_to a.asset_file_name, a.asset.url
            end
            if current_ability.can? :manage, Asset
              column 'Borrar' do |asset|
                link_to('Borrar', [nota, asset], confirm: 'seguro?', method: :delete)
              end
            end
          end

          if can? :manage, Asset
            div do
              render :partial => 'assets/add_form',
                     :locals => { adjuntable: nota, asset: nota.assets.build }
            end
          end
        end

      end
      column do
        if can? :manage, Nota
          panel 'Agregar Pase' do
            render :partial => 'admin/pases/form',
                   :locals => { pase: nota.pases.build, nota: nota }
          end
        end
      end
    end
  end

end