Files
codeocean/config/initializers/rails_admin.rb
Sebastian Serth 99bd46af1a Align project files with CodeHarbor
Since both projects are developed together and by the same team, we also want to have the same code structure and utility methods available in both projects. Therefore, this commit changes many files, but without a functional change.
2023-10-11 00:18:33 +02:00

104 lines
2.5 KiB
Ruby

# frozen_string_literal: true
RailsAdmin.config do |config|
config.asset_source = :sprockets
### Popular gems integration
## == Devise ==
# config.authenticate_with do
# warden.authenticate! scope: :user
# end
config.current_user_method(&:current_user)
## == CancanCan ==
# config.authorize_with :cancancan
## == Pundit ==
# config.authorize_with :pundit
config.authorize_with do
# Important! We need to check the authorization here, we skip Pundit checks in the RailsAdminController.
unless current_user&.admin?
flash[:alert] = t('application.not_authorized')
redirect_to main_app.root_path
end
end
## == PaperTrail ==
# config.audit_with :paper_trail, 'User', 'PaperTrail::Version' # PaperTrail >= 3.0.0
### More at https://github.com/sferik/rails_admin/wiki/Base-configuration
config.parent_controller = '::RailsAdminController'
config.excluded_models = %w[Generators::TestingFrameworkAdapterGenerator]
## == Gravatar integration ==
## To disable Gravatar integration in Navigation Bar set to false
# config.show_gravatar = true
config.model 'CodeOcean::File' do
list { limited_pagination true }
end
# Disable some file associations to increase performance
%w[ExecutionEnvironment Exercise FileType Intervention ProxyExercise StudyGroup CodeOcean::File].each do |model|
config.model model do
columns = RailsAdmin::Config::Fields.factory(self).filter {|col| col.type.to_s.exclude?('association') }.map {|i| {i.name.to_sym => i.class} }
list do
columns.each do |hash|
key = hash.keys.first
field(key, hash[key].to_s.demodulize.underscore)
end
end
end
end
config.actions do
# mandatory
dashboard do
statistics false
end
index # mandatory
new
export
bulk_delete
show
edit
delete
show_in_app
## With an audit adapter, you can add:
# history_index
# history_show
end
# stolen from https://github.com/kaminari/kaminari/issues/162#issuecomment-52083985
if defined?(WillPaginate)
module WillPaginate
module ActiveRecord
module RelationMethods
def per(value = nil)
per_page(value)
end
def total_count
count
end
def first_page?
self == first
end
def last_page?
self == last
end
end
end
module CollectionMethods
alias num_pages total_pages
end
end
end
end