aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorLuc Donnet2018-03-14 22:06:23 +0100
committerLuc Donnet2018-03-14 22:06:42 +0100
commit2af2a2c10355c9613965d7fbf3400d8294cbd44c (patch)
tree617ae002e301f9add6fff684c4edcfba66ca67d2 /app
parent4c84e00c87d7aaa4263c8b18f3ab7481a47951f1 (diff)
downloadchouette-core-2af2a2c10355c9613965d7fbf3400d8294cbd44c.tar.bz2
Fix access for import ressources Refs #6133 @3
Diffstat (limited to 'app')
-rw-r--r--app/controllers/import_messages_controller.rb2
-rw-r--r--app/controllers/import_resources_controller.rb2
-rw-r--r--app/models/import/message_export.rb48
3 files changed, 50 insertions, 2 deletions
diff --git a/app/controllers/import_messages_controller.rb b/app/controllers/import_messages_controller.rb
index 5e39445fb..e9a071177 100644
--- a/app/controllers/import_messages_controller.rb
+++ b/app/controllers/import_messages_controller.rb
@@ -9,7 +9,7 @@ class ImportMessagesController < ChouetteController
def index
index! do |format|
format.csv {
- send_data ImportMessageExport.new(:import_messages => @import_messages).to_csv(:col_sep => "\;", :quote_char=>'"', force_quotes: true) , :filename => "import_errors_#{@import_resource.name.gsub('.xml', '')}_#{Date.today.to_s}.csv"
+ send_data Import::MessageExport.new(:import_messages => @import_messages).to_csv(:col_sep => "\;", :quote_char=>'"', force_quotes: true) , :filename => "import_errors_#{@import_resource.name.gsub('.xml', '')}_#{Date.today.to_s}.csv"
}
end
end
diff --git a/app/controllers/import_resources_controller.rb b/app/controllers/import_resources_controller.rb
index 6d1977e0c..1535fd171 100644
--- a/app/controllers/import_resources_controller.rb
+++ b/app/controllers/import_resources_controller.rb
@@ -1,7 +1,7 @@
class ImportResourcesController < ChouetteController
defaults resource_class: Import::Resource, collection_name: 'import_resources', instance_name: 'import_resource'
respond_to :html
- belongs_to :import
+ belongs_to :import, :parent_class => Import::Base
def index
index! do |format|
diff --git a/app/models/import/message_export.rb b/app/models/import/message_export.rb
new file mode 100644
index 000000000..27c540307
--- /dev/null
+++ b/app/models/import/message_export.rb
@@ -0,0 +1,48 @@
+# -*- coding: utf-8 -*-
+require "csv"
+require "zip"
+
+class Import::MessageExport
+ include ActiveModel::Validations
+ include ActiveModel::Conversion
+ extend ActiveModel::Naming
+
+ attr_accessor :import_messages
+
+ def initialize(attributes = {})
+ attributes.each { |name, value| send("#{name}=", value) }
+ end
+
+ def persisted?
+ false
+ end
+
+ def label(name)
+ I18n.t "vehicle_journey_exports.label.#{name}"
+ end
+
+ def column_names
+ ["criticity", "message key", "message", "file name", "line", "column"]
+ end
+
+ def to_csv(options = {})
+ csv_string = CSV.generate(options) do |csv|
+ csv << column_names
+ import_messages.each do |import_message|
+ csv << [import_message.criticity, import_message.message_key, I18n.t("import_messages.#{import_message.message_key}", import_message.message_attributes.deep_symbolize_keys), *import_message.resource_attributes.values_at("filename", "line_number", "column_number") ]
+ end
+ end
+ # We add a BOM to indicate we use UTF-8
+ "\uFEFF" + csv_string
+ end
+
+ def to_zip(temp_file,options = {})
+ ::Zip::OutputStream.open(temp_file) { |zos| }
+ ::Zip::File.open(temp_file.path, ::Zip::File::CREATE) do |zipfile|
+ zipfile.get_output_stream(label("vj_filename")+route.id.to_s+".csv") { |f| f.puts to_csv(options) }
+ zipfile.get_output_stream(label("tt_filename")+".csv") { |f| f.puts time_tables_to_csv(options) }
+ zipfile.get_output_stream(label("ftn_filename")+".csv") { |f| f.puts footnotes_to_csv(options) }
+ end
+ end
+
+end