64 lines
2.0 KiB
Ruby
64 lines
2.0 KiB
Ruby
class Dunlop::SourceFilesController < Dunlop::ApplicationController
|
|
respond_to :html
|
|
|
|
def index
|
|
authorize! :index, SourceFile
|
|
@q = SourceFile.where(sti_type: SourceFile.classes.select{|cls| can? :read, cls}.map(&:name)).search(query)
|
|
@q.sorts = "created_at desc" if @q.sorts.empty?
|
|
@source_files = @q.result.page(params[:page]).per(100)
|
|
respond_with(@source_files)
|
|
end
|
|
|
|
def show
|
|
@source_file = SourceFile.find(params[:id])
|
|
authorize! :read, @source_file
|
|
respond_with(@source_file)
|
|
end
|
|
|
|
def new
|
|
@source_file = SourceFile.new
|
|
authorize! :manage, @source_file
|
|
respond_with(@source_file)
|
|
end
|
|
|
|
def create
|
|
@source_file = SourceFile.factory(source_file_params)
|
|
redirect_to source_files_path, alert: "No file given" and return unless params[:source_file][:original_file].present?
|
|
redirect_to source_files_path, alert: "No type specified" and return unless params[:source_file][:sti_type].present?
|
|
authorize! :manage, @source_file
|
|
@source_file.creator = current_user
|
|
@source_file.save && @source_file.autoload!
|
|
redirect_to source_files_path
|
|
end
|
|
|
|
def destroy
|
|
@source_file = SourceFile.find(params[:id])
|
|
authorize! :manage, @source_file
|
|
@source_file.destroy
|
|
redirect_to source_files_path
|
|
end
|
|
|
|
def download
|
|
@source_file = SourceFile.find(params[:id])
|
|
authorize! :download, @source_file
|
|
return redirect_back(fallback_location: source_files_path, alert: "File is no longer present") unless @source_file.original_file.present?
|
|
Dunlop::FileDownload.create user: current_user, file: @source_file
|
|
send_file @source_file.original_file.path
|
|
end
|
|
|
|
def schedule
|
|
@source_file = SourceFile.find(params[:id])
|
|
authorize! :manage, @source_file
|
|
@source_file.scheduled!
|
|
flash[:notice] = "Successfully scheduled loading of source file"
|
|
redirect_to source_files_path
|
|
end
|
|
|
|
private
|
|
|
|
def source_file_params
|
|
params.require(:source_file).permit(:sti_type, :original_file)
|
|
end
|
|
|
|
end
|