From aef30eeb4d76612c41be627c2fc0a6da8e65f40e Mon Sep 17 00:00:00 2001 From: Thiago Youssef Date: Fri, 1 Apr 2022 11:50:35 +0300 Subject: [PATCH] Improve default csv generation --- .../admin/account_activities_controller.rb | 3 ++- .../account_activities_controller.rb | 3 ++- app/models/domain.rb | 7 ++++-- app/models/invoice.rb | 2 +- app/services/csv_generator.rb | 23 ++++++++----------- 5 files changed, 19 insertions(+), 19 deletions(-) diff --git a/app/controllers/admin/account_activities_controller.rb b/app/controllers/admin/account_activities_controller.rb index 0d22a4298..452acaee1 100644 --- a/app/controllers/admin/account_activities_controller.rb +++ b/app/controllers/admin/account_activities_controller.rb @@ -35,7 +35,8 @@ module Admin respond_to do |format| format.html format.csv do - send_data CsvGenerator.generate_csv(@q.result), filename: "account_activities_#{Time.zone.now.to_formatted_s(:number)}.csv" + raw_csv = CsvGenerator.generate_csv(@q.result) + send_data raw_csv, filename: "account_activities_#{Time.zone.now.to_formatted_s(:number)}.csv" end end diff --git a/app/controllers/registrar/account_activities_controller.rb b/app/controllers/registrar/account_activities_controller.rb index 7b5281275..0ad8c3d5a 100644 --- a/app/controllers/registrar/account_activities_controller.rb +++ b/app/controllers/registrar/account_activities_controller.rb @@ -20,7 +20,8 @@ class Registrar respond_to do |format| format.html { @account_activities = @q.result.page(params[:page]) } format.csv do - send_data CsvGenerator.generate_csv(@q.result), filename: "account_activities_#{Time.zone.now.to_formatted_s(:number)}.csv" + raw_csv = CsvGenerator.generate_csv(@q.result) + send_data raw_csv, filename: "account_activities_#{Time.zone.now.to_formatted_s(:number)}.csv" end end diff --git a/app/models/domain.rb b/app/models/domain.rb index 53e2ddf9b..2c6069cd1 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -748,7 +748,7 @@ class Domain < ApplicationRecord statuses, contacts.pluck(:code), force_delete_date, - force_delete_data + force_delete_data, ] end @@ -764,7 +764,10 @@ class Domain < ApplicationRecord end def self.csv_header - ['Domain', 'Registrant', 'Valid to', 'Registrar', 'Created at', 'Statuses', 'Contacts code', 'Force delete date', 'Force delete data'] + [ + 'Domain', 'Registrant', 'Valid to', 'Registrar', 'Created at', + 'Statuses', 'Contacts code', 'Force delete date', 'Force delete data', + ] end def self.pdf(html) diff --git a/app/models/invoice.rb b/app/models/invoice.rb index c31ae15c4..6ba3a158d 100644 --- a/app/models/invoice.rb +++ b/app/models/invoice.rb @@ -125,7 +125,7 @@ class Invoice < ApplicationRecord issue_date, total, currency, - seller_name + seller_name, ] end diff --git a/app/services/csv_generator.rb b/app/services/csv_generator.rb index 16901dcff..d92beeddc 100644 --- a/app/services/csv_generator.rb +++ b/app/services/csv_generator.rb @@ -1,11 +1,11 @@ class CsvGenerator class << self def generate_csv(objects) - @class_name = objects.first.class - return default_generation(objects) unless custom_csv? + class_name = objects.first.class + return default_generation(objects) unless custom_csv?(class_name) CSV.generate do |csv| - csv << @class_name.csv_header + csv << class_name.csv_header objects.each { |object| csv << object.as_csv_row } end end @@ -14,21 +14,16 @@ class CsvGenerator def default_generation(objects) CSV.generate do |csv| - csv << @class_name.column_names - objects.each { |object| csv << object.attributes.values_at(*@class_name.column_names) } + csv << objects.column_names + objects.all.find_each { |object| csv << object.attributes.values_at(*objects.column_names) } end end - def custom_csv? + def custom_csv?(class_name) [ - Version::DomainVersion, - Version::ContactVersion, - Domain, - Contact, - Invoice, - Account, - AccountActivity - ].include?(@class_name) + Version::DomainVersion, Version::ContactVersion, Domain, + Contact, Invoice, Account, AccountActivity + ].include?(class_name) end end end