diff options
| author | Luc Donnet | 2015-04-27 14:17:12 +0200 |
|---|---|---|
| committer | Luc Donnet | 2015-04-27 14:17:12 +0200 |
| commit | e470b78a10672fd927de4cd9b3ac6cae0097e12a (patch) | |
| tree | cd4231eb52ddb42099e0779f4579a7e58354e4f1 /app/models/import_task.rb | |
| parent | 8a51a1dbaede1ad6bc4e39b7c28639d43e83d7c7 (diff) | |
| download | chouette-core-e470b78a10672fd927de4cd9b3ac6cae0097e12a.tar.bz2 | |
Fix import request to IEV
Diffstat (limited to 'app/models/import_task.rb')
| -rw-r--r-- | app/models/import_task.rb | 212 |
1 files changed, 20 insertions, 192 deletions
diff --git a/app/models/import_task.rb b/app/models/import_task.rb index d53c04766..1df264010 100644 --- a/app/models/import_task.rb +++ b/app/models/import_task.rb @@ -10,13 +10,13 @@ class ImportTask @@root = "#{Rails.root}/tmp/imports" cattr_accessor :root - attr_accessor :rule_parameter_set_id, :referential_id, :user_id, :user_name, :no_save, :format, :resources, :name + enumerize :data_format, in: %w( neptune netex gtfs ) + attr_accessor :rule_parameter_set_id, :referential_id, :user_id, :user_name, :data_format, :resources, :name validates_presence_of :referential_id validates_presence_of :resources validates_presence_of :user_id validates_presence_of :user_name - validates_presence_of :no_save validates_presence_of :name def initialize( params = {} ) @@ -41,7 +41,7 @@ class ImportTask # Call Iev Server begin - Ievkit.create_job(referential.name, "importer", "neptune", { + Ievkit.create_job(referential.name, "importer", data_format, { :file1 => action_params_io, :file2 => transport_data_io } @@ -56,32 +56,30 @@ class ImportTask raise exception end - puts "End save" end - def references_types - [] + def action_params + { + "parameters" => {} + } + end + + + def self.data_formats + self.data_format.values end def action_params_io - file = StringIO.new( { "parameters" => { - "neptune-import" => { - "no_save" => no_save, - "user_name" => user_name, - "name" => name, - "organisation_name" => organisation.name, - "referential_name" => referential.name, - } - } - }.to_s ) + file = StringIO.new( action_params.to_s ) Faraday::UploadIO.new(file, "application/json", "parameters.json") end def transport_data_io + file = File.new(saved_resources_path, "r") if file_extname == ".zip" - Faraday::UploadIO.new(saved_resources_path, "application/zip") + Faraday::UploadIO.new(file, "application/zip", original_filename ) elsif file_extname == ".xml" - Faraday::UploadIO.new(File.open(saved_resources_path), "application/xml", "10136939.xml") + Faraday::UploadIO.new(file, "application/xml", original_filename ) end end @@ -91,7 +89,6 @@ class ImportTask end def save_resources - # resources is a required attribute FileUtils.mkdir_p root FileUtils.cp resources.path, saved_resources_path end @@ -100,185 +97,16 @@ class ImportTask FileUtils.rm saved_resources_path if File.exists? saved_resources_path end + def original_filename + resources.original_filename + end + def file_extname File.extname(resources.original_filename) end - # TODO : Find a good filename def saved_resources_path "#{root}/#{Time.now.to_i}#{file_extname}" end - - # attr_accessor :resources, :rule_parameter_set_id - - # belongs_to :referential - - # has_one :user - # has_one :compliance_check_task, :dependent => :delete - - # serialize :parameter_set, JSON - # serialize :result, JSON - - # validates_presence_of :referential_id - # validates_presence_of :resources - # validates_presence_of :user_id - # validates_presence_of :user_name - # validates_inclusion_of :status, :in => %w{ pending processing completed failed } - - # def references_types - # [] - # end - - # protected - - # def self.option(name, type=nil) - # name = name.to_s - - # define_method(name) do - # self.parameter_set and self.parameter_set[name] - # end - - # if type.to_s == "boolean" - # define_method("#{name}=") do |prefix| - # (self.parameter_set ||= {})[name] = (prefix=="1" || prefix==true) - # end - # else - # define_method("#{name}=") do |prefix| - # (self.parameter_set ||= {})[name] = prefix - # end - # end - # end - - # public - - # def self.formats - # %w{Neptune Csv Gtfs Netex} - # end - - # def self.format_label(format) - # I18n.t 'exchange.format.'+format.downcase - # end - - # def delayed_import - # delay.import - # end - - # def save_requested? - # !parameter_set["no_save"] - # end - - # protected - - # option :no_save, :boolean - # option :format - # option :file_path - # option :references_type - - # validates_inclusion_of :no_save, :in => [ true, false] - # validates_inclusion_of :format, :in => self.formats - - # def chouette_command - # Chouette::Command.new(:schema => referential.slug) - # end - - # before_validation :define_default_attributes, :on => :create - # def define_default_attributes - # self.status ||= "pending" - # end - - # @@root = "#{Rails.root}/tmp/imports" - # cattr_accessor :root - - # def compliance_check_task_attributes - # {:referential_id => referential.id, - # :user_id => user_id, - # :user_name => user_name, - # :rule_parameter_set_id => rule_parameter_set_id} - # end - - # after_create :update_info, :save_resources - # def update_info - # self.file_path = saved_resources - # self.update_attribute :parameter_set, self.parameter_set - - # self.create_compliance_check_task( self.compliance_check_task_attributes) - # end - - # def save_resources - # # resources is a required attribute - # FileUtils.mkdir_p root - # FileUtils.cp resources.path, saved_resources - # end - - # after_destroy :destroy_resources - # def destroy_resources - # FileUtils.rm file_path if File.exists? file_path - # end - - # def saved_resources - # raise Exception.new("Illegal call") if self.new_record? - # "#{root}/#{id}#{File.extname(resources.original_filename)}" - # end - - # def chouette_command_args - # {:c => "import", :id => id} - # end - - # public - - # def failed? - # status == "failed" - # end - - # def completed? - # status == "completed" - # end - - # def file_path_extension - # extension = File.extname( self.file_path ) - # if extension == ".xml" - # "xml" - # elsif extension == ".zip" - # "zip" - # else - # "basic" - # end - # end - - # def name - # "#{ImportTask.model_name.human} #{self.format} #{self.id}" - # end - - # def full_name - # return name unless no_save - # "#{name} - #{I18n.t('activerecord.attributes.import_task.no_save')}" - # end - - # # Create ImportTask and ComplianceCheckTask associated and give import id to Chouette Loader - # def import - # return nil if self.new_record? - - # begin - # chouette_command.run! chouette_command_args - # reload - # update_attribute :status, "completed" - # compliance_check_task.update_attribute :status, "completed" - # rescue => e - # Rails.logger.error "Import #{id} failed : #{e}, #{e.backtrace}" - # reload - # update_attribute :status, "failed" - # compliance_check_task.update_attribute :status, "failed" - # end - # end - - # def self.new(attributes = {}, parameter_set = {}, &block) - # if self == ImportTask - # attributes[:format] = "Neptune" unless attributes[:format] - # Object.const_get( attributes[:format] + "Import").new(attributes, parameter_set) - # else - # super - # end - # end - end |
