diff --git a/app/jobs/regular/export_csv_file.rb b/app/jobs/regular/export_csv_file.rb
index 6e4a0b797..70aee66d3 100644
--- a/app/jobs/regular/export_csv_file.rb
+++ b/app/jobs/regular/export_csv_file.rb
@@ -21,17 +21,13 @@ module Jobs
when 'user'
query = ::AdminUserIndexQuery.new
user_data = query.find_users_query.to_a
-
- data = Hash.new do |hash, key|
- hash[key] = {}
- end
+ data = Array.new
user_data.each do |user|
- id = user['id']
- email = user['email']
- data[id] = email
+ user_array = Array.new
+ user_array.push(user['id']).push(user['name']).push(user['username']).push(user['email'])
+ data.push(user_array)
end
- data = data.to_a
end
if data && data.length > 0
@@ -55,7 +51,7 @@ module Jobs
# write to CSV file
CSV.open(File.expand_path("#{ExportCsv.base_directory}/#{@file_name}", __FILE__), "w") do |csv|
data.each do |value|
- csv << [value[1]]
+ csv << value
end
end
end
diff --git a/app/jobs/scheduled/clean_up_exports.rb b/app/jobs/scheduled/clean_up_exports.rb
new file mode 100644
index 000000000..27469d10a
--- /dev/null
+++ b/app/jobs/scheduled/clean_up_exports.rb
@@ -0,0 +1,9 @@
+module Jobs
+ class CleanUpExports < Jobs::Scheduled
+ every 2.day
+
+ def execute(args)
+ ExportCsv.remove_old_exports # delete exported CSV files older than 2 days
+ end
+ end
+end
diff --git a/app/jobs/scheduled/weekly.rb b/app/jobs/scheduled/weekly.rb
index 9a079efb0..156cfd74e 100644
--- a/app/jobs/scheduled/weekly.rb
+++ b/app/jobs/scheduled/weekly.rb
@@ -11,7 +11,6 @@ module Jobs
Post.calculate_avg_time
Topic.calculate_avg_time
ScoreCalculator.new.calculate
- ExportCsv.remove_old_exports # delete exported CSV files older than 2 days
end
end
end
diff --git a/app/models/export_csv.rb b/app/models/export_csv.rb
index ffebf6c1e..034ce40e4 100644
--- a/app/models/export_csv.rb
+++ b/app/models/export_csv.rb
@@ -10,10 +10,12 @@ class ExportCsv
end
def self.remove_old_exports
- dir = Dir.new(ExportCsv.base_directory)
- dir.each do |file|
- if (File.mtime(File.join(ExportCsv.base_directory, file)) < 2.days.ago)
- File.delete(File.join(ExportCsv.base_directory, file))
+ if Dir.exists?(ExportCsv.base_directory)
+ dir = Dir.new(ExportCsv.base_directory)
+ dir.each do |file|
+ if (File.mtime(File.join(ExportCsv.base_directory, file)) < 2.days.ago)
+ File.delete(File.join(ExportCsv.base_directory, file))
+ end
end
end
end
diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml
index 36bcb666a..eb0690b63 100644
--- a/config/locales/server.en.yml
+++ b/config/locales/server.en.yml
@@ -1395,6 +1395,8 @@ en:
Download CSV file: %{file_name}
+ CSV file download link will expire after 48 hours.
+
csv_export_failed:
subject_template: "Export failed"
text_body_template: "The export has failed. Please check the logs."
diff --git a/spec/jobs/clean_up_exports_spec.rb b/spec/jobs/clean_up_exports_spec.rb
new file mode 100644
index 000000000..b418c8539
--- /dev/null
+++ b/spec/jobs/clean_up_exports_spec.rb
@@ -0,0 +1,9 @@
+require 'spec_helper'
+
+require_dependency 'jobs/scheduled/clean_up_exports'
+
+describe Jobs::CleanUpExports do
+ it "runs correctly without crashing" do
+ Jobs::CleanUpExports.new.execute(nil)
+ end
+end