aboutsummaryrefslogtreecommitdiffstats
path: root/app/models
diff options
context:
space:
mode:
authorAlban Peignier2017-08-28 00:27:29 +0200
committerAlban Peignier2017-08-28 00:27:29 +0200
commitd01ec772b1e65e5d00f56bcd288bf710d1b55712 (patch)
tree5a251e3c08a4050fba629003bfbc33a6d62b919c /app/models
parentb240f38d661e6e11428e3f09258ba29bcbf228bb (diff)
parentd79f84398849e9c32fdf41582d299dd914fb8452 (diff)
downloadchouette-core-d01ec772b1e65e5d00f56bcd288bf710d1b55712.tar.bz2
Merge branch '4273_http_service_broken'
Diffstat (limited to 'app/models')
-rw-r--r--app/models/concerns/error_format.rb29
-rw-r--r--app/models/import.rb2
-rw-r--r--app/models/netex_import.rb16
-rw-r--r--app/models/workbench_import.rb5
4 files changed, 46 insertions, 6 deletions
diff --git a/app/models/concerns/error_format.rb b/app/models/concerns/error_format.rb
new file mode 100644
index 000000000..158edb6e4
--- /dev/null
+++ b/app/models/concerns/error_format.rb
@@ -0,0 +1,29 @@
+# TODO: This module should be moved out of concerns to somewhere that makes
+# more sense.
+
+module ErrorFormat extend self
+
+ def details error_object
+ error_object.errors.messages.inject({}) do |hash, error|
+ hash.merge(partial(:detail, error_object, error).call)
+ end
+ end
+
+ private
+
+ def detail error_object, error
+ {
+ error.first => {
+ error: error.last.first,
+ value: error_object[error.first]
+ }
+ }
+ end
+
+ def partial name, *partial_args
+ -> *lazy_args do
+ send(name, *(partial_args + lazy_args))
+ end
+ end
+
+end
diff --git a/app/models/import.rb b/app/models/import.rb
index b34ca2b48..94cb025d6 100644
--- a/app/models/import.rb
+++ b/app/models/import.rb
@@ -5,6 +5,8 @@ class Import < ActiveRecord::Base
belongs_to :parent, polymorphic: true
+ has_many :messages, class_name: "ImportMessage"
+
extend Enumerize
enumerize :status, in: %i(new pending successful failed running aborted canceled)
diff --git a/app/models/netex_import.rb b/app/models/netex_import.rb
index 575cef816..1b3eaff18 100644
--- a/app/models/netex_import.rb
+++ b/app/models/netex_import.rb
@@ -1,15 +1,19 @@
require 'net/http'
class NetexImport < Import
- after_commit :launch_java_import
+ after_commit :launch_java_import, on: :create
+ validates_presence_of :parent
def launch_java_import
logger.warn "Call iev get #{Rails.configuration.iev_url}/boiv_iev/referentials/importer/new?id=#{id}"
- begin
- Net::HTTP.get(URI("#{Rails.configuration.iev_url}/boiv_iev/referentials/importer/new?id=#{id}"))
- rescue Exception => e
- logger.error "IEV server error : #{e.message}"
- logger.error e.backtrace.inspect
+
+ Thread.new do
+ begin
+ Net::HTTP.get(URI("#{Rails.configuration.iev_url}/boiv_iev/referentials/importer/new?id=#{id}"))
+ rescue Exception => e
+ logger.error "IEV server error : #{e.message}"
+ logger.error e.backtrace.inspect
+ end
end
end
end
diff --git a/app/models/workbench_import.rb b/app/models/workbench_import.rb
index 9323bd4b5..27f53a44f 100644
--- a/app/models/workbench_import.rb
+++ b/app/models/workbench_import.rb
@@ -1,2 +1,7 @@
class WorkbenchImport < Import
+ after_commit :launch_worker, :on => :create
+
+ def launch_worker
+ WorkbenchImportWorker.perform_async(id)
+ end
end