diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb index 489ca10..eee71fa 100644 --- a/app/controllers/admin/users_controller.rb +++ b/app/controllers/admin/users_controller.rb @@ -15,8 +15,16 @@ class UsersController < AdminController :disposition => "attachment; filename=users.xml" end format.csv do - @users = User.find(:all, :conditions => {:environment_id => environment.id}, :include => [:person]) - render :template => "users/index_csv.rhtml", :content_type => 'text/csv', :layout => false + # using a direct connection with the dbms to optimize + command = User.send(:sanitize_sql, ["SELECT profiles.name, users.email FROM profiles + INNER JOIN users ON profiles.user_id=users.id + WHERE profiles.environment_id = ?", environment.id]) + users = User.connection.execute(command) + csv_content = "name;email\n" + users.each { |u| + CSV.generate_row([u['name'], u['email']], 2, csv_content, fs=';') + } + render :text => csv_content, :content_type => 'text/csv', :layout => false end end end diff --git a/app/views/users/_user_csv.rhtml b/app/views/users/_user_csv.rhtml deleted file mode 100644 index 4c52a09..0000000 --- a/app/views/users/_user_csv.rhtml +++ /dev/null @@ -1 +0,0 @@ -<%= user_csv.name %>;<%= user_csv.email %> diff --git a/app/views/users/index_csv.rhtml b/app/views/users/index_csv.rhtml deleted file mode 100644 index b956088..0000000 --- a/app/views/users/index_csv.rhtml +++ /dev/null @@ -1,2 +0,0 @@ -<%= _('name') %>;<%= _('email') %> -<%= render :partial => 'user_csv', :collection => @users %> diff --git a/test/functional/users_controller_test.rb b/test/functional/users_controller_test.rb index 58b8a89..4f08625 100644 --- a/test/functional/users_controller_test.rb +++ b/test/functional/users_controller_test.rb @@ -42,6 +42,7 @@ class UsersControllerTest < ActionController::TestCase get :index, :format => 'csv' assert_equal 'text/csv', @response.content_type + assert_equal 'name;email', @response.body.split("\n")[0] end end -- libgit2 0.21.2