##// END OF EJS Templates
Isolates csv options for a hash param (#1159)....
Jean-Philippe Lang -
r14292:f97d23b1b7ed
parent child
Show More
@@ -79,7 +79,7 class IssuesController < ApplicationController
79 Issue.load_visible_relations(@issues) if include_in_api_response?('relations')
79 Issue.load_visible_relations(@issues) if include_in_api_response?('relations')
80 }
80 }
81 format.atom { render_feed(@issues, :title => "#{@project || Setting.app_title}: #{l(:label_issue_plural)}") }
81 format.atom { render_feed(@issues, :title => "#{@project || Setting.app_title}: #{l(:label_issue_plural)}") }
82 format.csv { send_data(query_to_csv(@issues, @query, params), :type => 'text/csv; header=present', :filename => 'issues.csv') }
82 format.csv { send_data(query_to_csv(@issues, @query, params[:csv]), :type => 'text/csv; header=present', :filename => 'issues.csv') }
83 format.pdf { send_file_headers! :type => 'application/pdf', :filename => 'issues.pdf' }
83 format.pdf { send_file_headers! :type => 'application/pdf', :filename => 'issues.pdf' }
84 end
84 end
85 else
85 else
@@ -184,6 +184,7 module QueriesHelper
184 end
184 end
185
185
186 def query_to_csv(items, query, options={})
186 def query_to_csv(items, query, options={})
187 options ||= {}
187 columns = (options[:columns] == 'all' ? query.available_inline_columns : query.inline_columns)
188 columns = (options[:columns] == 'all' ? query.available_inline_columns : query.inline_columns)
188 query.available_block_columns.each do |column|
189 query.available_block_columns.each do |column|
189 if options[column.name].present?
190 if options[column.name].present?
@@ -79,11 +79,11
79 <h3 class="title"><%= l(:label_export_options, :export_format => 'CSV') %></h3>
79 <h3 class="title"><%= l(:label_export_options, :export_format => 'CSV') %></h3>
80 <%= form_tag(params.merge({:format => 'csv',:page=>nil}), :method => :get, :id => 'csv-export-form') do %>
80 <%= form_tag(params.merge({:format => 'csv',:page=>nil}), :method => :get, :id => 'csv-export-form') do %>
81 <p>
81 <p>
82 <label><%= radio_button_tag 'columns', '', true %> <%= l(:description_selected_columns) %></label><br />
82 <label><%= radio_button_tag 'csv[columns]', '', true %> <%= l(:description_selected_columns) %></label><br />
83 <label><%= radio_button_tag 'columns', 'all' %> <%= l(:description_all_columns) %></label>
83 <label><%= radio_button_tag 'csv[columns]', 'all' %> <%= l(:description_all_columns) %></label>
84 </p>
84 </p>
85 <p>
85 <p>
86 <label><%= check_box_tag 'description', '1', @query.has_column?(:description) %> <%= l(:field_description) %></label>
86 <label><%= check_box_tag 'csv[description]', '1', @query.has_column?(:description) %> <%= l(:field_description) %></label>
87 </p>
87 </p>
88 <% if @issue_count > Setting.issues_export_limit.to_i %>
88 <% if @issue_count > Setting.issues_export_limit.to_i %>
89 <p class="icon icon-warning">
89 <p class="icon icon-warning">
@@ -449,7 +449,7 class IssuesControllerTest < ActionController::TestCase
449 Issue.generate!(:description => 'test_index_csv_with_description')
449 Issue.generate!(:description => 'test_index_csv_with_description')
450
450
451 with_settings :default_language => 'en' do
451 with_settings :default_language => 'en' do
452 get :index, :format => 'csv', :description => '1'
452 get :index, :format => 'csv', :csv => {:description => '1'}
453 assert_response :success
453 assert_response :success
454 assert_not_nil assigns(:issues)
454 assert_not_nil assigns(:issues)
455 end
455 end
@@ -472,7 +472,7 class IssuesControllerTest < ActionController::TestCase
472 end
472 end
473
473
474 def test_index_csv_with_all_columns
474 def test_index_csv_with_all_columns
475 get :index, :format => 'csv', :columns => 'all'
475 get :index, :format => 'csv', :csv => {:columns => 'all'}
476 assert_response :success
476 assert_response :success
477 assert_not_nil assigns(:issues)
477 assert_not_nil assigns(:issues)
478 assert_equal 'text/csv; header=present', @response.content_type
478 assert_equal 'text/csv; header=present', @response.content_type
@@ -487,7 +487,7 class IssuesControllerTest < ActionController::TestCase
487 issue.custom_field_values = {1 => ['MySQL', 'Oracle']}
487 issue.custom_field_values = {1 => ['MySQL', 'Oracle']}
488 issue.save!
488 issue.save!
489
489
490 get :index, :format => 'csv', :columns => 'all'
490 get :index, :format => 'csv', :csv => {:columns => 'all'}
491 assert_response :success
491 assert_response :success
492 lines = @response.body.chomp.split("\n")
492 lines = @response.body.chomp.split("\n")
493 assert lines.detect {|line| line.include?('"MySQL, Oracle"')}
493 assert lines.detect {|line| line.include?('"MySQL, Oracle"')}
@@ -498,14 +498,14 class IssuesControllerTest < ActionController::TestCase
498 issue = Issue.generate!(:project_id => 1, :tracker_id => 1, :custom_field_values => {field.id => '185.6'})
498 issue = Issue.generate!(:project_id => 1, :tracker_id => 1, :custom_field_values => {field.id => '185.6'})
499
499
500 with_settings :default_language => 'fr' do
500 with_settings :default_language => 'fr' do
501 get :index, :format => 'csv', :columns => 'all'
501 get :index, :format => 'csv', :csv => {:columns => 'all'}
502 assert_response :success
502 assert_response :success
503 issue_line = response.body.chomp.split("\n").map {|line| line.split(';')}.detect {|line| line[0]==issue.id.to_s}
503 issue_line = response.body.chomp.split("\n").map {|line| line.split(';')}.detect {|line| line[0]==issue.id.to_s}
504 assert_include '185,60', issue_line
504 assert_include '185,60', issue_line
505 end
505 end
506
506
507 with_settings :default_language => 'en' do
507 with_settings :default_language => 'en' do
508 get :index, :format => 'csv', :columns => 'all'
508 get :index, :format => 'csv', :csv => {:columns => 'all'}
509 assert_response :success
509 assert_response :success
510 issue_line = response.body.chomp.split("\n").map {|line| line.split(',')}.detect {|line| line[0]==issue.id.to_s}
510 issue_line = response.body.chomp.split("\n").map {|line| line.split(',')}.detect {|line| line[0]==issue.id.to_s}
511 assert_include '185.60', issue_line
511 assert_include '185.60', issue_line
General Comments 0
You need to be logged in to leave comments. Login now