aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichel Etienne2014-09-11 22:12:07 +0200
committerMichel Etienne2014-09-11 22:12:07 +0200
commitfa653dca5e37b9b8cd5bbc5a63a6b21451c4d204 (patch)
tree336d3f2ceba06c51c97e455675266c4315e2e1b3
parent06ff98378cc619a111e9f105424c920aa21561dc (diff)
downloadchouette-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.rb1
-rw-r--r--app/models/vehicle_journey_export.rb8
-rw-r--r--app/models/vehicle_journey_import.rb16
-rw-r--r--config/locales/vehicle_journey_exports.yml6
-rw-r--r--spec/fixtures/vehicle_journey_imports_valid.csv1
-rw-r--r--spec/fixtures/vehicle_journey_imports_with_vj_invalid.csv3
-rw-r--r--spec/fixtures/vehicle_journey_imports_with_vjas_bad_order.csv1
-rw-r--r--spec/fixtures/vehicle_journey_imports_with_vjas_invalid.csv1
-rw-r--r--spec/models/vehicle_journey_import_spec.rb13
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