aboutsummaryrefslogtreecommitdiffstats
path: root/lib/tasks
diff options
context:
space:
mode:
authorLuc Donnet2018-03-12 15:09:55 +0100
committerGitHub2018-03-12 15:09:55 +0100
commit10765f6378777d74b121faf9e6f2a17a9fb1594e (patch)
treec6ddba1633e7243d5dab189fd3e199e731d21cc2 /lib/tasks
parent43a5e136c1b35483675918120405cd4f5bea3397 (diff)
parentb7079226c965e7130a2bcc17b7f278a1e23ac7e8 (diff)
downloadchouette-core-10765f6378777d74b121faf9e6f2a17a9fb1594e.tar.bz2
Merge pull request #361 from af83/6068-simple-exporter
6068 simple exporter
Diffstat (limited to 'lib/tasks')
-rw-r--r--lib/tasks/exports.rake19
-rw-r--r--lib/tasks/helpers/simple_interfaces.rb19
2 files changed, 11 insertions, 27 deletions
diff --git a/lib/tasks/exports.rake b/lib/tasks/exports.rake
index 547388b35..845d581d3 100644
--- a/lib/tasks/exports.rake
+++ b/lib/tasks/exports.rake
@@ -51,6 +51,9 @@ namespace :export do
if journeys.count == 0
puts "No maching journeys were found".red
else
+ exports_group = SimpleInterfacesGroup.new "Export Complet \"#{referential.name}\" du #{Time.now.to_date} au #{args[:timelapse].to_i.days.from_now.to_date}"
+ exports_group.shared_options = {verbose: true}
+
exporter = SimpleJsonExporter.create configuration_name: "#{args[:configuration_name]}_companies", filepath: "#{args[:output_dir]}/#{args[:configuration_name]}_companies.json"
ids = journeys.pluck :company_id
ids += journeys.joins(route: :line).pluck :"lines.company_id"
@@ -59,39 +62,37 @@ namespace :export do
config.collection = Chouette::Company.where(id: ids.uniq).order('name')
end
- SimpleInterfacesHelper.run_interface_controlling_interruption exporter, :export, args
- break if exporter.status == :error
+ exports_group.add_interface exporter, "Services Types", :export
exporter = SimpleJsonExporter.create configuration_name: "#{args[:configuration_name]}_schedules", filepath: "#{args[:output_dir]}/#{args[:configuration_name]}_schedules.json"
exporter.configure do |config|
config.collection = journeys
end
- SimpleInterfacesHelper.run_interface_controlling_interruption exporter, :export, args
- break if exporter.status == :error
+ exports_group.add_interface exporter, "Schedules", :export
exporter = SimpleJsonExporter.create configuration_name: "#{args[:configuration_name]}_routes", filepath: "#{args[:output_dir]}/#{args[:configuration_name]}_routes.json"
exporter.configure do |config|
config.collection = Chouette::JourneyPattern.where(id: journeys.pluck(:journey_pattern_id).uniq)
end
- SimpleInterfacesHelper.run_interface_controlling_interruption exporter, :export, args
- break if exporter.status == :error
+ exports_group.add_interface exporter, "Routes", :export
exporter = SimpleJsonExporter.create configuration_name: "#{args[:configuration_name]}_stops", filepath: "#{args[:output_dir]}/#{args[:configuration_name]}_stops.json"
exporter.configure do |config|
config.collection = Chouette::StopArea.where(id: journeys.joins(:stop_points).pluck(:"stop_points.stop_area_id").uniq).order('parent_id ASC NULLS FIRST')
end
- SimpleInterfacesHelper.run_interface_controlling_interruption exporter, :export, args
- break if exporter.status == :error
+ exports_group.add_interface exporter, "Stops", :export
exporter = SimpleJsonExporter.create configuration_name: "#{args[:configuration_name]}_journeys", filepath: "#{args[:output_dir]}/#{args[:configuration_name]}_journeys.json"
exporter.configure do |config|
config.collection = journeys
end
- SimpleInterfacesHelper.run_interface_controlling_interruption exporter, :export, args
+ exports_group.add_interface exporter, "Services", :export
+
+ exports_group.run
end
end
end
diff --git a/lib/tasks/helpers/simple_interfaces.rb b/lib/tasks/helpers/simple_interfaces.rb
index 5b593be43..61dd38399 100644
--- a/lib/tasks/helpers/simple_interfaces.rb
+++ b/lib/tasks/helpers/simple_interfaces.rb
@@ -1,28 +1,11 @@
module SimpleInterfacesHelper
- def self.interface_output_to_csv interface, output_dir
- FileUtils.mkdir_p output_dir
- filepath = File.join output_dir, + "#{interface.configuration_name}_#{Time.now.strftime "%y%m%d%H%M"}_out.csv"
- cols = %w(line kind event message error)
- if interface.reload.journal.size > 0 && interface.journal.first["row"].present?
- keys = interface.journal.first["row"].map(&:first)
- CSV.open(filepath, "w") do |csv|
- csv << cols + keys
- interface.journal.each do |j|
- csv << cols.map{|c| j[c]} + j["row"].map(&:last)
- end
- end
- puts "Task Output written in #{filepath}"
- end
- end
-
def self.run_interface_controlling_interruption interface, method, args
begin
interface.send(method, verbose: true)
rescue Interrupt
+ interface.write_output_to_csv
raise
ensure
- puts "\n\e[33m***\e[0m Done, status: " + (interface.status == "success" ? "\e[32m" : "\e[31m" ) + (interface.status || "") + "\e[0m"
- interface_output_to_csv interface, args[:logs_output_dir]
end
end
end