mirror of
https://github.com/discourse/discourse.git
synced 2025-03-07 03:39:34 +00:00
better filenames for export
This commit is contained in:
parent
e46abdd4a2
commit
bfe95966b4
app
assets/javascripts/discourse/models
controllers
jobs/regular
spec
@ -30,7 +30,7 @@ Discourse.ExportCsv.reopenClass({
|
|||||||
@method export_user_list
|
@method export_user_list
|
||||||
**/
|
**/
|
||||||
exportUserList: function() {
|
exportUserList: function() {
|
||||||
return Discourse.ajax("/export_csv/export_entity.json", {data: {entity_type: 'admin', entity: 'user'}});
|
return Discourse.ajax("/export_csv/export_entity.json", {data: {entity_type: 'admin', entity: 'user_list'}});
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -15,7 +15,7 @@ class ExportCsvController < ApplicationController
|
|||||||
def show
|
def show
|
||||||
params.require(:id)
|
params.require(:id)
|
||||||
filename = params.fetch(:id)
|
filename = params.fetch(:id)
|
||||||
export_id = filename.split('_')[1].split('.')[0]
|
export_id = filename.split('-')[2].split('.')[0]
|
||||||
export_initiated_by_user_id = 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_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)
|
export_csv_path = UserExport.get_download_path(filename)
|
||||||
|
@ -24,6 +24,7 @@ module Jobs
|
|||||||
|
|
||||||
def execute(args)
|
def execute(args)
|
||||||
entity = args[:entity]
|
entity = args[:entity]
|
||||||
|
@file_name = entity
|
||||||
|
|
||||||
if entity == "user_archive"
|
if entity == "user_archive"
|
||||||
@entity_type = "user"
|
@entity_type = "user"
|
||||||
@ -56,12 +57,12 @@ module Jobs
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def user_export
|
def user_list_export
|
||||||
query = ::AdminUserIndexQuery.new
|
query = ::AdminUserIndexQuery.new
|
||||||
user_data = query.find_users_query.to_a
|
user_data = query.find_users_query.to_a
|
||||||
user_data.map do |user|
|
user_data.map do |user|
|
||||||
group_names = get_group_names(user).join(';')
|
group_names = get_group_names(user).join(';')
|
||||||
user_array = get_user_fields(user)
|
user_array = get_user_list_fields(user)
|
||||||
user_array.push(group_names) if group_names != ''
|
user_array.push(group_names) if group_names != ''
|
||||||
user_array
|
user_array
|
||||||
end
|
end
|
||||||
@ -168,7 +169,7 @@ module Jobs
|
|||||||
user_archive_array
|
user_archive_array
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_user_fields(user)
|
def get_user_list_fields(user)
|
||||||
user_array = []
|
user_array = []
|
||||||
|
|
||||||
HEADER_ATTRS_FOR['user'].each do |attr|
|
HEADER_ATTRS_FOR['user'].each do |attr|
|
||||||
@ -271,7 +272,8 @@ module Jobs
|
|||||||
|
|
||||||
def set_file_path
|
def set_file_path
|
||||||
@file = UserExport.create(export_type: @entity_type, user_id: @current_user.id)
|
@file = UserExport.create(export_type: @entity_type, user_id: @current_user.id)
|
||||||
@file_name = "export_#{@file.id}.csv"
|
file_name_prefix = @file_name.split('_').join('-')
|
||||||
|
@file_name = "#{file_name_prefix}-#{@file.id}.csv"
|
||||||
|
|
||||||
# ensure directory exists
|
# ensure directory exists
|
||||||
dir = File.dirname("#{UserExport.base_directory}/#{@file_name}")
|
dir = File.dirname("#{UserExport.base_directory}/#{@file_name}")
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
require "spec_helper"
|
require "spec_helper"
|
||||||
|
|
||||||
describe ExportCsvController do
|
describe ExportCsvController do
|
||||||
let(:export_filename) { "export_999.csv" }
|
let(:export_filename) { "user-archive-999.csv" }
|
||||||
|
|
||||||
|
|
||||||
context "while logged in as normal user" do
|
context "while logged in as normal user" do
|
||||||
@ -30,7 +30,7 @@ describe ExportCsvController do
|
|||||||
describe ".download" do
|
describe ".download" do
|
||||||
it "uses send_file to transmit the export file" do
|
it "uses send_file to transmit the export file" do
|
||||||
file = UserExport.create(export_type: "user", user_id: @user.id)
|
file = UserExport.create(export_type: "user", user_id: @user.id)
|
||||||
file_name = "export_#{file.id}.csv"
|
file_name = "user-archive-#{file.id}.csv"
|
||||||
controller.stubs(:render)
|
controller.stubs(:render)
|
||||||
export = UserExport.new()
|
export = UserExport.new()
|
||||||
UserExport.expects(:get_download_path).with(file_name).returns(export)
|
UserExport.expects(:get_download_path).with(file_name).returns(export)
|
||||||
@ -74,7 +74,7 @@ describe ExportCsvController do
|
|||||||
describe ".download" do
|
describe ".download" do
|
||||||
it "uses send_file to transmit the export file" do
|
it "uses send_file to transmit the export file" do
|
||||||
file = UserExport.create(export_type: "admin", user_id: @admin.id)
|
file = UserExport.create(export_type: "admin", user_id: @admin.id)
|
||||||
file_name = "export_#{file.id}.csv"
|
file_name = "screened-email-#{file.id}.csv"
|
||||||
controller.stubs(:render)
|
controller.stubs(:render)
|
||||||
export = UserExport.new()
|
export = UserExport.new()
|
||||||
UserExport.expects(:get_download_path).with(file_name).returns(export)
|
UserExport.expects(:get_download_path).with(file_name).returns(export)
|
||||||
|
@ -8,16 +8,16 @@ describe Jobs::ExportCsvFile do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
let :user_header do
|
let :user_list_header do
|
||||||
Jobs::ExportCsvFile.new.get_header('user')
|
Jobs::ExportCsvFile.new.get_header('user')
|
||||||
end
|
end
|
||||||
|
|
||||||
let :user_export do
|
let :user_list_export do
|
||||||
Jobs::ExportCsvFile.new.user_export
|
Jobs::ExportCsvFile.new.user_list_export
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_hash(row)
|
def to_hash(row)
|
||||||
Hash[*user_header.zip(row).flatten]
|
Hash[*user_list_header.zip(row).flatten]
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'exports sso data' do
|
it 'exports sso data' do
|
||||||
@ -25,10 +25,9 @@ describe Jobs::ExportCsvFile do
|
|||||||
user = Fabricate(:user)
|
user = Fabricate(:user)
|
||||||
user.create_single_sign_on_record(external_id: "123", last_payload: "xxx", external_email: 'test@test.com')
|
user.create_single_sign_on_record(external_id: "123", last_payload: "xxx", external_email: 'test@test.com')
|
||||||
|
|
||||||
user = to_hash(user_export.find{|u| u[0] == user.id})
|
user = to_hash(user_list_export.find{|u| u[0] == user.id})
|
||||||
|
|
||||||
user["external_id"].should == "123"
|
user["external_id"].should == "123"
|
||||||
user["external_email"].should == "test@test.com"
|
user["external_email"].should == "test@test.com"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user