aboutsummaryrefslogtreecommitdiffstats
path: root/app/models
diff options
context:
space:
mode:
Diffstat (limited to 'app/models')
-rw-r--r--app/models/export/base.rb4
-rw-r--r--app/models/export/referential_companies.rb39
-rw-r--r--app/models/gtfs_export.rb47
-rw-r--r--app/models/hub_export.rb24
-rw-r--r--app/models/kml_export.rb24
-rw-r--r--app/models/neptune_export.rb27
-rw-r--r--app/models/netex_export.rb24
-rw-r--r--app/models/simple_interface.rb4
8 files changed, 41 insertions, 152 deletions
diff --git a/app/models/export/base.rb b/app/models/export/base.rb
index ae34be0d0..b078da273 100644
--- a/app/models/export/base.rb
+++ b/app/models/export/base.rb
@@ -61,6 +61,10 @@ class Export::Base < ActiveRecord::Base
true
end
+ def visible_options
+ options.select{|k, v| ! k.match /^_/}
+ end
+
def display_option_value option_name, context
option = self.class.options[option_name.to_sym]
val = self.options[option_name.to_s]
diff --git a/app/models/export/referential_companies.rb b/app/models/export/referential_companies.rb
index 7a796fb48..0b6187060 100644
--- a/app/models/export/referential_companies.rb
+++ b/app/models/export/referential_companies.rb
@@ -5,35 +5,62 @@ class Export::ReferentialCompanies < Export::Base
required: true,
display: ->(val){r = Referential.find(val); link_to(r.name, [r])}
- after_commit :call_exporter, on: :create
+ after_create :call_exporter_async
def referential
Referential.find referential_id
end
+ def call_exporter_async
+ SimpleExportWorker.perform_async(id)
+ end
+
+ def exporter
+ SimpleExporter.define :referential_companies do |config|
+ config.separator = ";"
+ config.encoding = 'ISO-8859-1'
+ config.add_column :name
+ config.add_column :registration_number
+ end
+
+ @exporter ||= begin
+ if options[:_exporter_id]
+ exporter = SimpleExporter.find options[:exporter_id]
+ else
+ exporter = SimpleExporter.create configuration_name: :referential_companies
+ options[:_exporter_id] = exporter.id
+ end
+ exporter
+ end
+ end
+
def call_exporter
tmp = Tempfile.new ["referential_companies", ".csv"]
- exporter = SimpleExporter.create configuration_name: :referential_companies, filepath: tmp.path
referential.switch
exporter.configure do |config|
config.collection = referential.companies.order(:name)
end
+ exporter.filepath = tmp.path
exporter.export
+ set_status_from_exporter
+ convert_exporter_journal_to_messages
+ self.file = tmp
+ self.save!
+ end
+
+ def set_status_from_exporter
if exporter.status == :error
self.status = :failed
else
- self.file = tmp
if exporter.status == :success
self.status = :successful
else
self.status = :warning
end
end
- convert_exporter_journal_to_messages exporter
- self.save!
end
- def convert_exporter_journal_to_messages exporter
+ def convert_exporter_journal_to_messages
self.messages.destroy_all
exporter.journal.each do |journal_item|
journal_item.symbolize_keys!
diff --git a/app/models/gtfs_export.rb b/app/models/gtfs_export.rb
deleted file mode 100644
index d0b9fc4f9..000000000
--- a/app/models/gtfs_export.rb
+++ /dev/null
@@ -1,47 +0,0 @@
-class GtfsExport < ExportTask
-
- validates_presence_of :time_zone, unless: Proc.new { |e| e.optional_attribute? :time_zone }
- attr_accessor :object_id_prefix, :time_zone
-
- enumerize :references_type, in: %w( network line company group_of_line stop_area )
-
- after_initialize :init_params
-
- def init_params
- if time_zone.nil?
- self.time_zone = "Paris"
- end
- end
-
- def real_time_zone
- ActiveSupport::TimeZone.find_tzinfo(time_zone).name
- end
-
- def action_params
- {
- "gtfs-export" => {
- "name" => name,
- "references_type" => references_type,
- "reference_ids" => reference_ids,
- "user_name" => user_name,
- "organisation_name" => organisation.name,
- "referential_name" => referential.name,
- "time_zone" => real_time_zone,
- "object_id_prefix" => object_id_prefix,
- "start_date" => start_date,
- "end_date" => end_date
- }
- }
- end
-
- def self.optional_attributes(references_type)
- super.tap do |optional_attributes|
- optional_attributes.push :time_zone, :start_date, :end_date if references_type == "stop_area"
- end
- end
-
- def data_format
- "gtfs"
- end
-
-end
diff --git a/app/models/hub_export.rb b/app/models/hub_export.rb
deleted file mode 100644
index 802600692..000000000
--- a/app/models/hub_export.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-class HubExport < ExportTask
-
- enumerize :references_type, in: %w( network line company group_of_line )
-
- def action_params
- {
- "hub-export" => {
- "name" => name,
- "references_type" => references_type,
- "reference_ids" => reference_ids,
- "user_name" => user_name,
- "organisation_name" => organisation.name,
- "referential_name" => referential.name,
- "start_date" => start_date,
- "end_date" => end_date
- }
- }
- end
-
- def data_format
- "hub"
- end
-
-end
diff --git a/app/models/kml_export.rb b/app/models/kml_export.rb
deleted file mode 100644
index f6db77172..000000000
--- a/app/models/kml_export.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-class KmlExport < ExportTask
-
- enumerize :references_type, in: %w( network line company group_of_line )
-
- def action_params
- {
- "kml-export" => {
- "name" => name,
- "references_type" => references_type,
- "reference_ids" => reference_ids,
- "user_name" => user_name,
- "organisation_name" => organisation.name,
- "referential_name" => referential.name,
- "start_date" => start_date,
- "end_date" => end_date
- }
- }
- end
-
- def data_format
- "kml"
- end
-
-end
diff --git a/app/models/neptune_export.rb b/app/models/neptune_export.rb
deleted file mode 100644
index f25db69c0..000000000
--- a/app/models/neptune_export.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-class NeptuneExport < ExportTask
-
- attr_accessor :extensions, :export_type
- enumerize :references_type, in: %w( network line company group_of_line )
-
- def action_params
- {
- "neptune-export" => {
- "name" => name,
- "references_type" => references_type,
- "reference_ids" => reference_ids,
- "user_name" => user_name,
- "organisation_name" => organisation.name,
- "referential_name" => referential.name,
- "projection_type" => projection_type || "",
- "add_extension" => extensions,
- "start_date" => start_date,
- "end_date" => end_date
- }
- }
- end
-
- def data_format
- "neptune"
- end
-
-end
diff --git a/app/models/netex_export.rb b/app/models/netex_export.rb
deleted file mode 100644
index a4c3e2454..000000000
--- a/app/models/netex_export.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-class NetexExport < ExportTask
-
- enumerize :references_type, in: %w( network line company group_of_line )
-
- def action_params
- {
- "netex-export" => {
- "name" => name,
- "references_type" => references_type,
- "reference_ids" => reference_ids,
- "user_name" => user_name,
- "organisation_name" => organisation.name,
- "referential_name" => referential.name,
- "start_date" => start_date,
- "end_date" => end_date
- }
- }
- end
-
- def data_format
- "netex"
- end
-
-end
diff --git a/app/models/simple_interface.rb b/app/models/simple_interface.rb
index c766d483a..11b9d0dcd 100644
--- a/app/models/simple_interface.rb
+++ b/app/models/simple_interface.rb
@@ -27,6 +27,10 @@ class SimpleInterface < ActiveRecord::Base
self.journal ||= []
end
+ def configuration
+ @configuration ||= self.class.find_configuration self.configuration_name
+ end
+
def init_env opts
@verbose = opts.delete :verbose