spotlight_search 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6c0ea70816711ee5ddc92a80692e72fba928b39161c2d24deb08b4ab58484f16
|
4
|
+
data.tar.gz: 27427b059ab99ac747e3239b5bf5e3675924966f724eecac804185c8b7198132
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b898869bc37e815628e98a1851e63cdb854b5f5a3b5056cefca336aef92430fbb6755d07f22c33fde9cb43635ac25d88a9298e8c4b90dbd6c7b96f688acaa92f
|
7
|
+
data.tar.gz: 0e740359d3610928b62382c6eecf38f81faff3e82039236c63e6c3909e82ce8e0536ee96e313b610417650888f7f1ac9955284177a4fa5051435c66f4492abeb
|
@@ -5,7 +5,7 @@ module SpotlightSearch
|
|
5
5
|
def perform(email, klass, columns = [], filters = {})
|
6
6
|
klass = klass.constantize
|
7
7
|
records = get_records(klass, filters, columns)
|
8
|
-
file_path = create_excel(records, klass.name)
|
8
|
+
file_path = create_excel(records, klass.name, columns)
|
9
9
|
subject = "#{klass.name} export at #{Time.now}"
|
10
10
|
ExportMailer.send_excel_file(email, file_path, subject).deliver_now
|
11
11
|
File.delete(file_path)
|
@@ -33,20 +33,18 @@ module SpotlightSearch
|
|
33
33
|
|
34
34
|
# Creating excel with the passed records
|
35
35
|
# Keys as headers and values as row
|
36
|
-
def create_excel(records, klass)
|
37
|
-
records = records.as_json
|
38
|
-
headers = records.first.keys
|
36
|
+
def create_excel(records, klass, columns)
|
39
37
|
size_arr = []
|
40
|
-
|
38
|
+
columns.size.times { size_arr << 22 }
|
41
39
|
xl = Axlsx::Package.new
|
42
40
|
xl.workbook.add_worksheet do |sheet|
|
43
|
-
sheet.add_row
|
41
|
+
sheet.add_row columns, b: true
|
44
42
|
records.each do |record|
|
45
|
-
sheet.add_row record.
|
43
|
+
sheet.add_row columns.map { |column| record.send(column) }
|
46
44
|
end
|
47
45
|
sheet.column_widths *size_arr
|
48
46
|
end
|
49
|
-
file_location = "#{Rails.root}/public/export_#{klass}_#{Time.now.to_s}"
|
47
|
+
file_location = "#{Rails.root}/public/export_#{klass}_#{Time.now.to_s}.xls"
|
50
48
|
xl.serialize(file_location)
|
51
49
|
file_location
|
52
50
|
end
|
@@ -29,28 +29,33 @@ module SpotlightSearch
|
|
29
29
|
# end
|
30
30
|
#
|
31
31
|
def export_columns(enabled: false, only: nil, except: nil)
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
32
|
+
begin
|
33
|
+
unless ActiveRecord::Base.connection.migration_context.needs_migration?
|
34
|
+
if enabled
|
35
|
+
self.export_enabled = true
|
36
|
+
all_columns = self.column_names.map(&:to_sym)
|
37
|
+
if only.present?
|
38
|
+
unless (valid_columns = only & all_columns).size == only.size
|
39
|
+
invalid_columns = only - valid_columns
|
40
|
+
raise SpotlightSearch::Exceptions::InvalidColumns.new(nil, invalid_columns)
|
41
|
+
end
|
42
|
+
self.enabled_columns = only
|
43
|
+
else
|
44
|
+
self.enabled_columns = all_columns
|
45
|
+
end
|
46
|
+
if except.present?
|
47
|
+
unless (valid_columns = except & all_columns).size == except.size
|
48
|
+
invalid_columns = except - valid_columns
|
49
|
+
raise SpotlightSearch::Exceptions::InvalidColumns.new(nil, invalid_columns)
|
50
|
+
end
|
51
|
+
self.enabled_columns = self.enabled_columns - except
|
52
|
+
end
|
53
|
+
else
|
54
|
+
self.export_enabled = false
|
55
|
+
self.enabled_columns = nil
|
39
56
|
end
|
40
|
-
self.enabled_columns = only
|
41
|
-
else
|
42
|
-
self.enabled_columns = all_columns
|
43
57
|
end
|
44
|
-
|
45
|
-
unless (valid_columns = except & all_columns).size == except.size
|
46
|
-
invalid_columns = except - valid_columns
|
47
|
-
raise SpotlightSearch::Exceptions::InvalidColumns.new(nil, invalid_columns)
|
48
|
-
end
|
49
|
-
self.enabled_columns = self.enabled_columns - except
|
50
|
-
end
|
51
|
-
else
|
52
|
-
self.export_enabled = false
|
53
|
-
self.enabled_columns = nil
|
58
|
+
rescue ActiveRecord::NoDatabaseError
|
54
59
|
end
|
55
60
|
end
|
56
61
|
|