Project

General

Profile

« Previous | Next » 

Revision 27582273

Added by Tomer Brisker almost 7 years ago

Refs #19588 - Allow passing header to csv responder

View differences:

app/controllers/concerns/foreman/controller/csv_responder.rb
module Foreman::Controller::CsvResponder
extend ActiveSupport::Concern
def csv_response(resources, columns = csv_columns)
def csv_response(resources, columns = csv_columns, header = nil)
headers["Cache-Control"] = "no-cache"
headers["Content-Type"] = "text/csv; charset=utf-8"
headers["Content-Disposition"] = %(attachment; filename="#{controller_name}-#{Date.today}.csv")
self.response_body = CsvExporter.export(resources, columns)
self.response_body = CsvExporter.export(resources, columns, header)
end
private
app/services/csv_exporter.rb
require 'csv'
module CsvExporter
def self.export(resources, columns, header = default_header(columns))
def self.export(resources, columns, header = nil)
header ||= default_header(columns)
raise ArgumentError, "Columns and header row aren't the same length" unless columns.length == header.length
Enumerator.new do |csv|
csv << CSV.generate_line(header)

Also available in: Unified diff