Refactor: #issues_to_csv and #entries_to_csv merged into QueriesHelper#query_to_csv.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11448 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
9b1ebd6808
commit
797a9f1ea9
@ -85,7 +85,7 @@ class IssuesController < ApplicationController
|
|||||||
Issue.load_visible_relations(@issues) if include_in_api_response?('relations')
|
Issue.load_visible_relations(@issues) if include_in_api_response?('relations')
|
||||||
}
|
}
|
||||||
format.atom { render_feed(@issues, :title => "#{@project || Setting.app_title}: #{l(:label_issue_plural)}") }
|
format.atom { render_feed(@issues, :title => "#{@project || Setting.app_title}: #{l(:label_issue_plural)}") }
|
||||||
format.csv { send_data(issues_to_csv(@issues, @project, @query, params), :type => 'text/csv; header=present', :filename => 'export.csv') }
|
format.csv { send_data(query_to_csv(@issues, @query, params), :type => 'text/csv; header=present', :filename => 'export.csv') }
|
||||||
format.pdf { send_data(issues_to_pdf(@issues, @project, @query), :type => 'application/pdf', :filename => 'export.pdf') }
|
format.pdf { send_data(issues_to_pdf(@issues, @project, @query), :type => 'application/pdf', :filename => 'export.pdf') }
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
@ -87,7 +87,7 @@ class TimelogController < ApplicationController
|
|||||||
:include => [:project, :activity, :user, {:issue => [:tracker, :assigned_to, :priority]}],
|
:include => [:project, :activity, :user, {:issue => [:tracker, :assigned_to, :priority]}],
|
||||||
:order => sort_clause
|
:order => sort_clause
|
||||||
)
|
)
|
||||||
send_data(entries_to_csv(@entries, @query, params), :type => 'text/csv; header=present', :filename => 'timelog.csv')
|
send_data(query_to_csv(@entries, @query, params), :type => 'text/csv; header=present', :filename => 'timelog.csv')
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -370,24 +370,4 @@ module IssuesHelper
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def issues_to_csv(issues, project, query, options={})
|
|
||||||
encoding = l(:general_csv_encoding)
|
|
||||||
columns = (options[:columns] == 'all' ? query.available_inline_columns : query.inline_columns)
|
|
||||||
if options[:description]
|
|
||||||
if description = query.available_columns.detect {|q| q.name == :description}
|
|
||||||
columns << description
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
export = FCSV.generate(:col_sep => l(:general_csv_separator)) do |csv|
|
|
||||||
# csv header fields
|
|
||||||
csv << columns.collect {|c| Redmine::CodesetUtil.from_utf8(c.caption.to_s, encoding) }
|
|
||||||
# csv lines
|
|
||||||
issues.each do |issue|
|
|
||||||
csv << columns.collect {|c| Redmine::CodesetUtil.from_utf8(csv_content(c, issue), encoding) }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
export
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
@ -123,6 +123,26 @@ module QueriesHelper
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def query_to_csv(items, query, options={})
|
||||||
|
encoding = l(:general_csv_encoding)
|
||||||
|
columns = (options[:columns] == 'all' ? query.available_inline_columns : query.inline_columns)
|
||||||
|
query.available_block_columns.each do |column|
|
||||||
|
if options[column.name].present?
|
||||||
|
columns << column
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
export = FCSV.generate(:col_sep => l(:general_csv_separator)) do |csv|
|
||||||
|
# csv header fields
|
||||||
|
csv << columns.collect {|c| Redmine::CodesetUtil.from_utf8(c.caption.to_s, encoding) }
|
||||||
|
# csv lines
|
||||||
|
items.each do |item|
|
||||||
|
csv << columns.collect {|c| Redmine::CodesetUtil.from_utf8(csv_content(c, item), encoding) }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
export
|
||||||
|
end
|
||||||
|
|
||||||
# Retrieve query from session or build a new query
|
# Retrieve query from session or build a new query
|
||||||
def retrieve_query
|
def retrieve_query
|
||||||
if !params[:query_id].blank?
|
if !params[:query_id].blank?
|
||||||
|
@ -86,21 +86,6 @@ module TimelogHelper
|
|||||||
value)
|
value)
|
||||||
end
|
end
|
||||||
|
|
||||||
def entries_to_csv(entries, query, options={})
|
|
||||||
encoding = l(:general_csv_encoding)
|
|
||||||
columns = (options[:columns] == 'all' ? query.available_inline_columns : query.inline_columns)
|
|
||||||
|
|
||||||
export = FCSV.generate(:col_sep => l(:general_csv_separator)) do |csv|
|
|
||||||
# csv header fields
|
|
||||||
csv << columns.collect {|c| Redmine::CodesetUtil.from_utf8(c.caption.to_s, encoding) }
|
|
||||||
# csv lines
|
|
||||||
entries.each do |entry|
|
|
||||||
csv << columns.collect {|c| Redmine::CodesetUtil.from_utf8(csv_content(c, entry), encoding) }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
export
|
|
||||||
end
|
|
||||||
|
|
||||||
def format_criteria_value(criteria_options, value)
|
def format_criteria_value(criteria_options, value)
|
||||||
if value.blank?
|
if value.blank?
|
||||||
"[#{l(:label_none)}]"
|
"[#{l(:label_none)}]"
|
||||||
|
@ -391,13 +391,18 @@ class IssuesControllerTest < ActionController::TestCase
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_index_csv_with_description
|
def test_index_csv_with_description
|
||||||
|
Issue.generate!(:description => 'test_index_csv_with_description')
|
||||||
|
|
||||||
|
with_settings :default_language => 'en' do
|
||||||
get :index, :format => 'csv', :description => '1'
|
get :index, :format => 'csv', :description => '1'
|
||||||
assert_response :success
|
assert_response :success
|
||||||
assert_not_nil assigns(:issues)
|
assert_not_nil assigns(:issues)
|
||||||
assert_equal 'text/csv; header=present', @response.content_type
|
end
|
||||||
assert @response.body.starts_with?("#,")
|
|
||||||
lines = @response.body.chomp.split("\n")
|
assert_equal 'text/csv; header=present', response.content_type
|
||||||
assert_equal assigns(:query).columns.size + 1, lines[0].split(',').size
|
headers = response.body.chomp.split("\n").first.split(',')
|
||||||
|
assert_include 'Description', headers
|
||||||
|
assert_include 'test_index_csv_with_description', response.body
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_index_csv_with_spent_time_column
|
def test_index_csv_with_spent_time_column
|
||||||
|
Loading…
x
Reference in New Issue
Block a user