diff options
| author | Alban Peignier | 2017-08-28 00:27:29 +0200 |
|---|---|---|
| committer | Alban Peignier | 2017-08-28 00:27:29 +0200 |
| commit | d01ec772b1e65e5d00f56bcd288bf710d1b55712 (patch) | |
| tree | 5a251e3c08a4050fba629003bfbc33a6d62b919c /app/controllers/api | |
| parent | b240f38d661e6e11428e3f09258ba29bcbf228bb (diff) | |
| parent | d79f84398849e9c32fdf41582d299dd914fb8452 (diff) | |
| download | chouette-core-d01ec772b1e65e5d00f56bcd288bf710d1b55712.tar.bz2 | |
Merge branch '4273_http_service_broken'
Diffstat (limited to 'app/controllers/api')
| -rw-r--r-- | app/controllers/api/v1/netex_imports_controller.rb | 45 |
1 files changed, 38 insertions, 7 deletions
diff --git a/app/controllers/api/v1/netex_imports_controller.rb b/app/controllers/api/v1/netex_imports_controller.rb index 8f7c8e67e..cb863b9fc 100644 --- a/app/controllers/api/v1/netex_imports_controller.rb +++ b/app/controllers/api/v1/netex_imports_controller.rb @@ -3,6 +3,8 @@ module Api class NetexImportsController < ChouetteController include ControlFlow + skip_before_action :authenticate + def create respond_to do | format | format.json(&method(:create_models)) @@ -26,8 +28,20 @@ module Api end def create_netex_import - @netex_import = NetexImport.new(netex_import_params.merge(referential_id: @new_referential.id, creator: 'Webservice')) + attributes = netex_import_params + if @new_referential.persisted? + attributes = attributes.merge referential_id: @new_referential.id, creator: "Webservice" + else + attributes = attributes.merge status: "failed" + end + + @netex_import = NetexImport.new attributes @netex_import.save! + + unless @netex_import.referential + Rails.logger.info "Can't create referential for import #{@netex_import.id}: #{@new_referential.inspect} #{@new_referential.metadatas.inspect} #{@new_referential.errors.full_messages}" + @netex_import.messages.create criticity: :error, message_key: "cant_create_referential" + end rescue ActiveRecord::RecordInvalid render json: {errors: @netex_import.errors}, status: 406 finish_action! @@ -38,17 +52,34 @@ module Api Referential.new( name: netex_import_params['name'], organisation_id: @workbench.organisation_id, - workbench_id: @workbench.id) - @new_referential.save! - rescue ActiveRecord::RecordInvalid - render json: {errors: @new_referential.errors}, status: 406 - finish_action! + workbench_id: @workbench.id, + metadatas: [metadata] + ) + @new_referential.save + end + + def metadata + metadata = ReferentialMetadata.new + + if netex_import_params['file'] + netex_file = STIF::NetexFile.new(netex_import_params['file'].to_io) + frame = netex_file.frames.first + + if frame + metadata.periodes = frame.periods + + line_objectids = frame.line_refs.map { |ref| "STIF:CODIFLIGNE:Line:#{ref}" } + metadata.line_ids = @workbench.lines.where(objectid: line_objectids).pluck(:id) + end + end + + metadata end def netex_import_params params .require('netex_import') - .permit(:file, :name, :workbench_id) + .permit(:file, :name, :workbench_id, :parent_id, :parent_type) end end end |
