aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/export
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/export')
-rw-r--r--app/models/export/base.rb46
-rw-r--r--app/models/export/netex.rb17
-rw-r--r--app/models/export/workbench.rb2
3 files changed, 65 insertions, 0 deletions
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