diff options
| author | Michel Etienne | 2014-09-11 22:12:07 +0200 |
|---|---|---|
| committer | Michel Etienne | 2014-09-11 22:12:07 +0200 |
| commit | fa653dca5e37b9b8cd5bbc5a63a6b21451c4d204 (patch) | |
| tree | 336d3f2ceba06c51c97e455675266c4315e2e1b3 | |
| parent | 06ff98378cc619a111e9f105424c920aa21561dc (diff) | |
| download | chouette-core-fa653dca5e37b9b8cd5bbc5a63a6b21451c4d204.tar.bz2 | |
add vehicle_type_identifier and set id instead of objectid on csv vehicle_journey exchange
| -rw-r--r-- | app/exporters/chouette/hub/exporter.rb | 1 | ||||
| -rw-r--r-- | app/models/vehicle_journey_export.rb | 8 | ||||
| -rw-r--r-- | app/models/vehicle_journey_import.rb | 16 | ||||
| -rw-r--r-- | config/locales/vehicle_journey_exports.yml | 6 | ||||
| -rw-r--r-- | spec/fixtures/vehicle_journey_imports_valid.csv | 1 | ||||
| -rw-r--r-- | spec/fixtures/vehicle_journey_imports_with_vj_invalid.csv | 3 | ||||
| -rw-r--r-- | spec/fixtures/vehicle_journey_imports_with_vjas_bad_order.csv | 1 | ||||
| -rw-r--r-- | spec/fixtures/vehicle_journey_imports_with_vjas_invalid.csv | 1 | ||||
| -rw-r--r-- | spec/models/vehicle_journey_import_spec.rb | 13 |
9 files changed, 38 insertions, 12 deletions
diff --git a/app/exporters/chouette/hub/exporter.rb b/app/exporters/chouette/hub/exporter.rb index 3d709cc18..fc0e5aadc 100644 --- a/app/exporters/chouette/hub/exporter.rb +++ b/app/exporters/chouette/hub/exporter.rb @@ -1,4 +1,5 @@ class Chouette::Hub::Exporter + require "zip" attr_reader :referential attr_reader :hub_export, :lines, :routes, :journey_patterns diff --git a/app/models/vehicle_journey_export.rb b/app/models/vehicle_journey_export.rb index 7e67e17c9..3de88b608 100644 --- a/app/models/vehicle_journey_export.rb +++ b/app/models/vehicle_journey_export.rb @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- require "csv" +require "zip" class VehicleJourneyExport include ActiveModel::Validations @@ -21,7 +22,7 @@ class VehicleJourneyExport end def column_names - ["", label("vehicle_journey_id")] + vehicle_journeys.collect(&:objectid) + ["", label("vehicle_journey_id")] + vehicle_journeys.collect(&:id) end # produce a map stop_id => departure time for a vehicle_journey @@ -53,6 +54,10 @@ class VehicleJourneyExport (vehicle_journeys.collect{ |vj| vj.number ? vj.number.to_s : "" } ) end + def vehicle_identifier_array + (vehicle_journeys.collect{ |vj| vj.vehicle_type_identifier ? vj.vehicle_type_identifier : "" } ) + end + def flexible_service_array (vehicle_journeys.collect{ |vj| boolean_code vj.flexible_service } ) end @@ -77,6 +82,7 @@ class VehicleJourneyExport CSV.generate(options) do |csv| csv << column_names csv << ["", label("number")] + number_array + csv << ["", label("vehicle_identifier")] + vehicle_identifier_array csv << ["", label("mobility")] + mobility_restricted_suitability_array csv << ["", label("flexible_service")] + flexible_service_array csv << ["", label("time_table_ids")] + time_tables_array diff --git a/app/models/vehicle_journey_import.rb b/app/models/vehicle_journey_import.rb index 7891866ed..42cc24244 100644 --- a/app/models/vehicle_journey_import.rb +++ b/app/models/vehicle_journey_import.rb @@ -96,12 +96,13 @@ class VehicleJourneyImport # fixed rows (first = 1) number_row = 2 - mobility_row = 3 - flexible_service_row = 4 - time_tables_row = 5 + vehicle_type_identifier_row = 3 + mobility_row = 4 + flexible_service_row = 5 + time_tables_row = 6 # rows in column (first = 0) - first_stop_row_index = 6 + first_stop_row_index = 7 stop_point_ids = first_column[first_stop_row_index..spreadsheet.last_row].map(&:to_i) same_stop_points = route.stop_points.collect(&:id) == stop_point_ids @@ -112,12 +113,12 @@ class VehicleJourneyImport end (3..spreadsheet.last_column).each do |i| - vehicle_journey_objectid = spreadsheet.column(i)[0] + vehicle_journey_id = spreadsheet.column(i)[0] hours_by_stop_point_ids = Hash[[stop_point_ids, spreadsheet.column(i)[first_stop_row_index..spreadsheet.last_row]].transpose] journey_pattern = find_journey_pattern_schedule(i,hours_by_stop_point_ids) - vehicle_journey = route.vehicle_journeys.where(:objectid => vehicle_journey_objectid, :route_id => route.id).first_or_initialize + vehicle_journey = route.vehicle_journeys.where(:id => vehicle_journey_id, :route_id => route.id).first_or_initialize if journey_pattern.nil? if vehicle_journey.id.present? @@ -135,6 +136,9 @@ class VehicleJourneyImport # number vehicle_journey.number = as_integer(spreadsheet.row(number_row)[i-1]) + # vehicle_type_identifier + vehicle_journey.vehicle_type_identifier = spreadsheet.row(vehicle_type_identifier_row)[i-1] + # flexible_service vehicle_journey.flexible_service = as_boolean(spreadsheet.row(flexible_service_row)[i-1]) diff --git a/config/locales/vehicle_journey_exports.yml b/config/locales/vehicle_journey_exports.yml index b79f17cd4..bcfc04e9a 100644 --- a/config/locales/vehicle_journey_exports.yml +++ b/config/locales/vehicle_journey_exports.yml @@ -4,10 +4,11 @@ en: title: "Export existing vehicle journey at stops" basename: "vehicle_journeys" label: - vehicle_journey_id: "vj id" + vehicle_journey_id: "vj id (empty for new vj)" number: "number" time_table_ids: "timetables" flexible_service: "on demand (Y(es)|N(o)|empty for unknown)" + vehicle_identifier: "vehicle identifier" mobility: "wheel_chairs (Y(es)|N(o)|empty for unknown)" stop_id: "stop id" stop_name: "stop name" @@ -29,10 +30,11 @@ fr: title: "Exporter les horaires existants" basename: "courses" label: - vehicle_journey_id: "id course" + vehicle_journey_id: "id course (vide si nouvelle)" number: "numéro" time_table_ids: "calendriers" flexible_service: "TAD (O(ui)|N(on)|vide si inconnu)" + vehicle_identifier: "identifiant véhicule" mobility: "PMR (O(ui)|N(on)|vide si inconnu)" stop_id: "id arrêt" stop_name: "nom arrêt" diff --git a/spec/fixtures/vehicle_journey_imports_valid.csv b/spec/fixtures/vehicle_journey_imports_valid.csv index 15f66a26f..13b59b102 100644 --- a/spec/fixtures/vehicle_journey_imports_valid.csv +++ b/spec/fixtures/vehicle_journey_imports_valid.csv @@ -1,5 +1,6 @@ ;id course;import:VehicleJourney:1;import:VehicleJourney:2;import:VehicleJourney:3; ;numéro;1;2;3;4 +;identifiant véhicule;11;12;13;14 ;PMR (O(ui)|N(on)|vide si inconnu);Oui;;; ;TAD (O(ui)|N(on)|vide si inconnu);Oui;;; ;calendriers;;;; diff --git a/spec/fixtures/vehicle_journey_imports_with_vj_invalid.csv b/spec/fixtures/vehicle_journey_imports_with_vj_invalid.csv index 6ed6d90b2..34fbbb6bb 100644 --- a/spec/fixtures/vehicle_journey_imports_with_vj_invalid.csv +++ b/spec/fixtures/vehicle_journey_imports_with_vj_invalid.csv @@ -1,5 +1,6 @@ -;id course;invalid vj;import:VehicleJourney:2;import:VehicleJourney:3 +;id course;9999;import:VehicleJourney:2;import:VehicleJourney:3 ;numéro;1;2;3 +;identifiant véhicule;11;12;13 ;PMR (O(ui)|N(on)|vide si inconnu);Oui;; ;TAD (O(ui)|N(on)|vide si inconnu);Oui;; ;calendriers;;; diff --git a/spec/fixtures/vehicle_journey_imports_with_vjas_bad_order.csv b/spec/fixtures/vehicle_journey_imports_with_vjas_bad_order.csv index d4da585d0..6dc20cfeb 100644 --- a/spec/fixtures/vehicle_journey_imports_with_vjas_bad_order.csv +++ b/spec/fixtures/vehicle_journey_imports_with_vjas_bad_order.csv @@ -1,5 +1,6 @@ ;id course;import:VehicleJourney:1;import:VehicleJourney:2; ;numéro;1;2;3 +;identifiant véhicule;11;12;13 ;PMR (O(ui)|N(on)|vide si inconnu);Oui;; ;TAD (O(ui)|N(on)|vide si inconnu);Oui;; ;calendriers;;; diff --git a/spec/fixtures/vehicle_journey_imports_with_vjas_invalid.csv b/spec/fixtures/vehicle_journey_imports_with_vjas_invalid.csv index 687f6b09a..c7745849f 100644 --- a/spec/fixtures/vehicle_journey_imports_with_vjas_invalid.csv +++ b/spec/fixtures/vehicle_journey_imports_with_vjas_invalid.csv @@ -1,5 +1,6 @@ ;id course;import:VehicleJourney:1;import:VehicleJourney:2; ;numéro;1;2;3 +;identifiant véhicule;11;12;13 ;PMR (O(ui)|N(on)|vide si inconnu);Oui;; ;TAD (O(ui)|N(on)|vide si inconnu);Oui;; ;calendriers;;;; diff --git a/spec/models/vehicle_journey_import_spec.rb b/spec/models/vehicle_journey_import_spec.rb index f6e82bccb..68f8669e0 100644 --- a/spec/models/vehicle_journey_import_spec.rb +++ b/spec/models/vehicle_journey_import_spec.rb @@ -7,10 +7,19 @@ describe VehicleJourneyImport do csv_file = CSV.open("/tmp/#{filename}", "wb",{ :col_sep => ";"}) do |csv| counter = 0 CSV.foreach( Rails.root.join("spec", "fixtures", "#{filename}").to_s , {:col_sep => ";"}) do |row| - if counter < 6 + if counter == 0 + row2 = [] + row.each do |cell| + cell = vehicle_journey1.id.to_s if cell == "import:VehicleJourney:1" + cell = vehicle_journey2.id.to_s if cell == "import:VehicleJourney:2" + cell = vehicle_journey3.id.to_s if cell == "import:VehicleJourney:3" + row2 << cell + end + csv << row2 + elsif counter < 7 csv << row else - csv << ( row[0] = route.stop_points[counter - 6].id; row) + csv << ( row[0] = route.stop_points[counter - 7].id; row) end counter += 1 end |
