diff options
| author | Zog | 2018-04-09 12:54:07 +0200 |
|---|---|---|
| committer | Zog | 2018-04-09 12:54:07 +0200 |
| commit | 543e3d051731ef50f7420d03dd03849054925f32 (patch) | |
| tree | c9a9224f125730ebd2daabd7d44441a21c24c232 /app/models | |
| parent | cb3a2fecf94c658448a6886529efc417f8d8dd39 (diff) | |
| download | chouette-core-6360-workbenchimport-display.tar.bz2 | |
Refactor NetexImport creation6360-workbenchimport-display
And associates error message to the parent importer
Diffstat (limited to 'app/models')
| -rw-r--r-- | app/models/import/netex.rb | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/app/models/import/netex.rb b/app/models/import/netex.rb index 2b0982229..83b654f81 100644 --- a/app/models/import/netex.rb +++ b/app/models/import/netex.rb @@ -10,6 +10,25 @@ class Import::Netex < Import::Base validates_presence_of :parent + def create_referential + self.referential = + Referential.new( + name: self.name, + organisation_id: workbench.organisation_id, + workbench_id: workbench.id, + metadatas: [referential_metadata] + ) + self.referential.save + unless self.referential.valid? + Rails.logger.info "Can't create referential for import #{self.id}: #{referential.inspect} #{referential.metadatas.inspect} #{referential.errors.messages}" + if referential.metadatas.all?{|m| m.line_ids.empty?} + parent.messages.create criticity: :error, message_key: "referential_creation_missing_lines", message_attributes: {referential_name: referential.name} + else + parent.messages.create criticity: :error, message_key: "referential_creation", message_attributes: {referential_name: referential.name} + end + end + end + private def iev_callback_url @@ -21,4 +40,22 @@ class Import::Netex < Import::Base referential.destroy end end + + def referential_metadata + metadata = ReferentialMetadata.new + + if self.file + netex_file = STIF::NetexFile.new(self.file.path) + 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 end |
