aboutsummaryrefslogtreecommitdiffstats
path: root/app/models
diff options
context:
space:
mode:
authorZog2018-03-08 11:46:20 +0100
committerZog2018-03-12 12:00:14 +0100
commita4a075f5eec935dd6a0dbf0a861b6ada13b1dcbc (patch)
treeb046d69937ce998d918a7a4bf5a3e2e418961fa1 /app/models
parentdb15dc6158939d2577ccd53aac66a283ce4f3338 (diff)
downloadchouette-core-a4a075f5eec935dd6a0dbf0a861b6ada13b1dcbc.tar.bz2
Refs #6133; Add options on the Exports, and forward them tu the UX
Diffstat (limited to 'app/models')
-rw-r--r--app/models/concerns/iev_interfaces/task.rb21
-rw-r--r--app/models/export/base.rb46
-rw-r--r--app/models/export/netex.rb17
-rw-r--r--app/models/export/workbench.rb2
-rw-r--r--app/models/import/netex.rb26
5 files changed, 91 insertions, 21 deletions
diff --git a/app/models/concerns/iev_interfaces/task.rb b/app/models/concerns/iev_interfaces/task.rb
index c84c588b6..f60c16750 100644
--- a/app/models/concerns/iev_interfaces/task.rb
+++ b/app/models/concerns/iev_interfaces/task.rb
@@ -83,10 +83,29 @@ module IevInterfaces::Task
def child_change
return if self.class.finished_statuses.include?(status)
-
update_status
end
+ def call_iev_callback
+ return if self.class.finished_statuses.include?(status)
+ threaded_call_boiv_iev
+ end
+
+ private
+
+ def threaded_call_boiv_iev
+ Thread.new(&method(:call_boiv_iev))
+ end
+
+ def call_boiv_iev
+ Rails.logger.error("Begin IEV call for import")
+ Net::HTTP.get iev_callback_url
+ Rails.logger.error("End IEV call for import")
+ rescue Exception => e
+ logger.error "IEV server error : #{e.message}"
+ logger.error e.backtrace.inspect
+ end
+
private
def initialize_fields
end
diff --git a/app/models/export/base.rb b/app/models/export/base.rb
index 844c66d82..350edd215 100644
--- a/app/models/export/base.rb
+++ b/app/models/export/base.rb
@@ -1,6 +1,8 @@
class Export::Base < ActiveRecord::Base
self.table_name = "exports"
+ validates :type, presence: true
+
def self.messages_class_name
"Export::Message"
end
@@ -9,12 +11,56 @@ class Export::Base < ActiveRecord::Base
"Export::Resource"
end
+ def self.human_name
+ self.name.demodulize.humanize
+ end
+
+ if Rails.env.development?
+ def self.force_load_descendants
+ path = Rails.root.join 'app/models/export'
+ Dir.chdir path do
+ Dir['**/*.rb'].each do |src|
+ next if src =~ /^base/
+ klass_name = "Export::#{src[0..-4].classify}"
+ Rails.logger.info "Loading #{klass_name}"
+ begin
+ klass_name.constantize
+ rescue => e
+ Rails.logger.info "Failed: #{e.message}"
+ nil
+ end
+ end
+ end
+ end
+ end
+
+ def self.option name, opts
+ store_accessor :options, name
+ if !!opts[:required]
+ validates name, presence: true
+ end
+ @options ||= {}
+ @options[name] = opts
+ end
+
+ def self.options
+ @options
+ end
+
include IevInterfaces::Task
def self.model_name
ActiveModel::Name.new Export::Base, Export::Base, "Export"
end
+ def self.user_visible_descendants
+ descendants.select &:user_visible?
+ end
+
+ def self.user_visible?
+ true
+ end
+
private
def initialize_fields
diff --git a/app/models/export/netex.rb b/app/models/export/netex.rb
index 858f09549..a5bdb63d2 100644
--- a/app/models/export/netex.rb
+++ b/app/models/export/netex.rb
@@ -1,2 +1,19 @@
class Export::Netex < Export::Base
+ after_commit :call_iev_callback, on: :create
+
+ private
+
+ def iev_callback_url
+ URI("#{Rails.configuration.iev_url}/boiv_iev/referentials/exporter/new?id=#{id}")
+ end
+
+ def self.user_visible?
+ false
+ end
+
+ def destroy_non_ready_referential
+ if referential && !referential.ready
+ referential.destroy
+ end
+ end
end
diff --git a/app/models/export/workbench.rb b/app/models/export/workbench.rb
index a4b14cf55..9ec15f22f 100644
--- a/app/models/export/workbench.rb
+++ b/app/models/export/workbench.rb
@@ -1,6 +1,8 @@
class Export::Workbench < Export::Base
after_commit :launch_worker, :on => :create
+ option :timelapse, required: true, type: :integer, default_value: 90
+
def launch_worker
# WorkbenchImportWorker.perform_async(id)
end
diff --git a/app/models/import/netex.rb b/app/models/import/netex.rb
index a4bf0920d..2b0982229 100644
--- a/app/models/import/netex.rb
+++ b/app/models/import/netex.rb
@@ -2,37 +2,23 @@ require 'net/http'
class Import::Netex < Import::Base
before_destroy :destroy_non_ready_referential
- after_commit :launch_java_import, on: :create
+ after_commit :call_iev_callback, on: :create
+
before_save def abort_unless_referential
self.status = 'aborted' unless referential
end
validates_presence_of :parent
- def launch_java_import
- return if self.class.finished_statuses.include?(status)
- threaded_call_boiv_iev
- end
-
private
+ def iev_callback_url
+ URI("#{Rails.configuration.iev_url}/boiv_iev/referentials/importer/new?id=#{id}")
+ end
+
def destroy_non_ready_referential
if referential && !referential.ready
referential.destroy
end
end
-
- def threaded_call_boiv_iev
- Thread.new(&method(:call_boiv_iev))
- end
-
- def call_boiv_iev
- Rails.logger.error("Begin IEV call for import")
- Net::HTTP.get(URI("#{Rails.configuration.iev_url}/boiv_iev/referentials/importer/new?id=#{id}"))
- Rails.logger.error("End IEV call for import")
- rescue Exception => e
- logger.error "IEV server error : #{e.message}"
- logger.error e.backtrace.inspect
- end
-
end