Merge pull request #3102 from techAPJ/patch-2

Add username and date-time in exported file name
This commit is contained in:
Robin Ward 2015-01-15 15:35:06 -05:00
commit dc801bb442
5 changed files with 21 additions and 12 deletions

View file

@ -15,7 +15,7 @@ class ExportCsvController < ApplicationController
def show
params.require(:id)
filename = params.fetch(:id)
export_id = filename.split('-')[2].split('.')[0]
export_id = filename.split('-')[-1].split('.')[0]
export_initiated_by_user_id = 0
export_initiated_by_user_id = UserExport.where(id: export_id)[0].user_id unless UserExport.where(id: export_id).empty?
export_csv_path = UserExport.get_download_path(filename)

View file

@ -260,8 +260,12 @@ module Jobs
def set_file_path
file_name_prefix = @file_name.split('_').join('-')
@file = UserExport.create(export_type: file_name_prefix, user_id: @current_user.id)
if @entity == "user_archive"
file_name_prefix = "#{@file_name.split('_').join('-')}-#{current_user.username}-#{Time.now.strftime("%y%m%d-%H%M%S")}"
else
file_name_prefix = "#{@file_name.split('_').join('-')}-#{Time.now.strftime("%y%m%d-%H%M%S")}"
end
@file = UserExport.create(file_name: file_name_prefix, user_id: @current_user.id)
@file_name = "#{file_name_prefix}-#{@file.id}.csv"
# ensure directory exists

View file

@ -12,7 +12,7 @@ class UserExport < ActiveRecord::Base
def self.remove_old_exports
expired_exports = UserExport.where('created_at < ?', 2.days.ago).to_a
expired_exports.map do |expired_export|
file_name = "#{expired_export.export_type}-#{expired_export.id}.csv.gz"
file_name = "#{expired_export.file_name}-#{expired_export.id}.csv.gz"
file_path = "#{UserExport.base_directory}/#{file_name}"
if File.exist?(file_path)
@ -33,7 +33,7 @@ end
# Table name: user_exports
#
# id :integer not null, primary key
# export_type :string(255) not null
# file_name :string(255) not null
# user_id :integer not null
# created_at :datetime
# updated_at :datetime

View file

@ -0,0 +1,5 @@
class RenameUserExportColumn < ActiveRecord::Migration
def change
rename_column :user_exports, :export_type, :file_name
end
end

View file

@ -1,7 +1,7 @@
require "spec_helper"
describe ExportCsvController do
let(:export_filename) { "user-archive-999.csv.gz" }
let(:export_filename) { "user-archive-codinghorror-150115-234817-999.csv.gz" }
context "while logged in as normal user" do
@ -16,7 +16,7 @@ describe ExportCsvController do
it "should not enqueue export job if rate limit is reached" do
Jobs::ExportCsvFile.any_instance.expects(:execute).never
UserExport.create(export_type: "user", user_id: @user.id)
UserExport.create(file_name: "user-archive-codinghorror-150116-003249", user_id: @user.id)
xhr :post, :export_entity, entity: "user_archive", entity_type: "user"
expect(response).not_to be_success
end
@ -29,8 +29,8 @@ describe ExportCsvController do
describe ".download" do
it "uses send_file to transmit the export file" do
file = UserExport.create(export_type: "user", user_id: @user.id)
file_name = "user-archive-#{file.id}.csv.gz"
file = UserExport.create(file_name: "user-archive-codinghorror-150116-003249", user_id: @user.id)
file_name = "user-archive-codinghorror-150116-003249-#{file.id}.csv.gz"
controller.stubs(:render)
export = UserExport.new()
UserExport.expects(:get_download_path).with(file_name).returns(export)
@ -65,7 +65,7 @@ describe ExportCsvController do
it "should not rate limit export for staff" do
Jobs.expects(:enqueue).with(:export_csv_file, has_entries(entity: "staff_action", user_id: @admin.id))
UserExport.create(export_type: "admin", user_id: @admin.id)
UserExport.create(file_name: "screened-email-150116-010145", user_id: @admin.id)
xhr :post, :export_entity, entity: "staff_action", entity_type: "admin"
expect(response).to be_success
end
@ -73,8 +73,8 @@ describe ExportCsvController do
describe ".download" do
it "uses send_file to transmit the export file" do
file = UserExport.create(export_type: "admin", user_id: @admin.id)
file_name = "screened-email-#{file.id}.csv.gz"
file = UserExport.create(file_name: "screened-email-150116-010145", user_id: @admin.id)
file_name = "screened-email-150116-010145-#{file.id}.csv.gz"
controller.stubs(:render)
export = UserExport.new()
UserExport.expects(:get_download_path).with(file_name).returns(export)