aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Florisson2015-02-06 08:26:23 +0100
committerMarc Florisson2015-02-06 08:26:23 +0100
commit254dbb9ed3d22d3bd1427d3a771517abffbebe23 (patch)
tree3913aa50e86cb34a180161ab805cf28c143ed260
parenta3635f558a832ad6adecb885c6fd1d3403cfa15a (diff)
parent3996ab51e41f887d0fcfd40ad18a5ad4ae488fc1 (diff)
downloadchouette-core-254dbb9ed3d22d3bd1427d3a771517abffbebe23.tar.bz2
Merge branch 'footnotes' of github.com:afimb/chouette2 into footnotes
-rw-r--r--app/models/neptune_export.rb10
-rw-r--r--app/models/vehicle_journey_export.rb30
-rw-r--r--app/models/vehicle_journey_import.rb16
-rw-r--r--app/views/exports/_fields_neptune_export.erb1
-rw-r--r--config/locales/exports.yml2
-rw-r--r--config/locales/vehicle_journey_exports.en.yml (renamed from config/locales/vehicle_journey_exports.yml)29
-rw-r--r--config/locales/vehicle_journey_exports.fr.yml30
-rw-r--r--spec/fixtures/vehicle_journey_imports_valid.csv1
-rw-r--r--spec/fixtures/vehicle_journey_imports_with_vj_invalid.csv1
-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_export_spec.rb5
-rw-r--r--spec/models/vehicle_journey_import_spec.rb4
-rw-r--r--spec/requests/vehicle_journey_imports_spec.rb4
14 files changed, 96 insertions, 39 deletions
diff --git a/app/models/neptune_export.rb b/app/models/neptune_export.rb
index 4d8aff76d..4af3b5b4c 100644
--- a/app/models/neptune_export.rb
+++ b/app/models/neptune_export.rb
@@ -2,18 +2,20 @@ class NeptuneExport < Export
option :start_date
option :end_date
+ option :extensions
def export_options
start_date ||= ""
end_date ||= ""
+ extensions ||= "1"
if (start_date.empty? && end_date.empty?)
- super.merge(:format => :neptune).except(:start_date).except(:end_date)
+ super.merge(:format => :neptune, :extensions => extensions ).except(:start_date).except(:end_date)
elsif start_date.empty?
- super.merge(:format => :neptune, :end_date => end_date).except(:start_date)
+ super.merge(:format => :neptune, :extensions => extensions , :end_date => end_date).except(:start_date)
elsif end_date.empty?
- super.merge(:format => :neptune, :start_date => start_date).except(:end_date)
+ super.merge(:format => :neptune, :extensions => extensions , :start_date => start_date).except(:end_date)
else
- super.merge(:format => :neptune, :start_date => start_date, :end_date => end_date)
+ super.merge(:format => :neptune, :extensions => extensions , :start_date => start_date, :end_date => end_date)
end
end
diff --git a/app/models/vehicle_journey_export.rb b/app/models/vehicle_journey_export.rb
index 4c2c62fa8..3a1676ff3 100644
--- a/app/models/vehicle_journey_export.rb
+++ b/app/models/vehicle_journey_export.rb
@@ -38,9 +38,17 @@ class VehicleJourneyExport
(vj.time_tables.collect{ |t| t.id })
end
+ def footnotes (vj)
+ (vj.footnotes.collect{ |f| f.id })
+ end
+
def time_tables_array
(vehicle_journeys.collect{ |vj| time_tables(vj).to_s[1..-2] } )
end
+
+ def footnotes_array
+ (vehicle_journeys.collect{ |vj| footnotes(vj).to_s[1..-2] } )
+ end
def vehicle_journey_at_stops_array
(vehicle_journeys.collect{ |vj| time_by_stops vj } )
@@ -86,6 +94,7 @@ class VehicleJourneyExport
csv << ["", label("mobility")] + mobility_restricted_suitability_array
csv << ["", label("flexible_service")] + flexible_service_array
csv << ["", label("time_table_ids")] + time_tables_array
+ csv << ["", label("footnotes_ids")] + footnotes_array
csv << [label("stop_id"), label("stop_name")] + empty_array
vjas_array = vehicle_journey_at_stops_array
route.stop_points.each_with_index do |stop_point, index|
@@ -155,12 +164,33 @@ class VehicleJourneyExport
end
end
end
+
+ def ftn_data(ftn)
+ [].tap do |array|
+ # id;code;label
+ array << ftn.id.to_s
+ array << ftn.code
+ array << ftn.label
+ end
+ end
+
+ def footnotes_to_csv(options = {})
+ footnotes = route.line.footnotes
+ CSV.generate(options) do |csv|
+ csv << label("ftn_columns").split(";")
+ footnotes.each do |ftn|
+ csv << ftn_data(ftn)
+ end
+ end
+
+ end
def to_zip(temp_file,options = {})
::Zip::OutputStream.open(temp_file) { |zos| }
::Zip::File.open(temp_file.path, ::Zip::File::CREATE) do |zipfile|
zipfile.get_output_stream(label("vj_filename")+route.id.to_s+".csv") { |f| f.puts to_csv(options) }
zipfile.get_output_stream(label("tt_filename")+".csv") { |f| f.puts time_tables_to_csv(options) }
+ zipfile.get_output_stream(label("ftn_filename")+".csv") { |f| f.puts footnotes_to_csv(options) }
end
end
diff --git a/app/models/vehicle_journey_import.rb b/app/models/vehicle_journey_import.rb
index f710eeab7..855fa2abe 100644
--- a/app/models/vehicle_journey_import.rb
+++ b/app/models/vehicle_journey_import.rb
@@ -83,7 +83,14 @@ class VehicleJourneyImport
vj.time_tables.clear
return unless tm_ids.present?
ids = tm_ids.split(",").map(&:to_i)
- vj.time_tables << Chouette::TimeTable.find(ids)
+ vj.time_tables << Chouette::TimeTable.where(:id => ids)
+ end
+
+ def update_footnotes(vj,ftn_ids)
+ vj.footnotes.clear
+ return unless ftn_ids.present?
+ ids = ftn_ids.split(",").map(&:to_i)
+ vj.footnotes << Chouette::Footnote.where(:id => ids, :line_id => vj.route.line.id)
end
def load_imported_vehicle_journeys
@@ -100,13 +107,14 @@ class VehicleJourneyImport
mobility_row = 4
flexible_service_row = 5
time_tables_row = 6
+ footnotes_row = 7
# rows in column (first = 0)
- first_stop_row_index = 7
+ first_stop_row_index = 8
stop_point_ids = first_column[first_stop_row_index..spreadsheet.last_row].map(&:to_i)
# blank lines at end of file will produce id = 0 ; ignore them
- last_stop_row_index = stop_point_ids.length + 6
+ last_stop_row_index = stop_point_ids.length + 7
while stop_point_ids.last == 0
stop_point_ids = stop_point_ids[0..-2]
last_stop_row_index -= 1
@@ -153,6 +161,8 @@ class VehicleJourneyImport
# time_tables
update_time_tables(vehicle_journey,spreadsheet.row(time_tables_row)[i-1])
+ update_footnotes(vehicle_journey,spreadsheet.row(footnotes_row)[i-1])
+
# journey_pattern
vehicle_journey.journey_pattern = journey_pattern
vehicle_journey.vehicle_journey_at_stops.clear
diff --git a/app/views/exports/_fields_neptune_export.erb b/app/views/exports/_fields_neptune_export.erb
index d4debb6f2..20fa9085c 100644
--- a/app/views/exports/_fields_neptune_export.erb
+++ b/app/views/exports/_fields_neptune_export.erb
@@ -1,2 +1,3 @@
<%= form.input :start_date, :as => :date_picker, :input_html => { :title => t("formtastic.titles.export.start_date")} %>
<%= form.input :end_date, :as => :date_picker, :input_html => { :title => t("formtastic.titles.export.end_date")} %>
+ <%= form.input :extensions , :as => :boolean%>
diff --git a/config/locales/exports.yml b/config/locales/exports.yml
index 5cf816d3d..8dd7d0ed2 100644
--- a/config/locales/exports.yml
+++ b/config/locales/exports.yml
@@ -108,6 +108,7 @@ en:
start_date: "Start of period"
end_date: "End of period"
object_id_prefix: "objectId prefix to be ignored"
+ extensions: "add extra fields in comments"
export_log_message:
created_at: "Date"
position: "N."
@@ -238,6 +239,7 @@ fr:
start_date: "Début de période"
end_date: "Fin de période"
object_id_prefix: "Préfixe d'identifiant Neptune à ignorer"
+ extensions: "ajout de champs supplémentaires dans les commentaires"
export_log_message:
created_at: "Date"
position: "No"
diff --git a/config/locales/vehicle_journey_exports.yml b/config/locales/vehicle_journey_exports.en.yml
index f8169c544..93a782026 100644
--- a/config/locales/vehicle_journey_exports.yml
+++ b/config/locales/vehicle_journey_exports.en.yml
@@ -10,6 +10,7 @@ en:
flexible_service: "on demand (Y(es)|N(o)|empty for unknown)"
published_journey_name: "published name"
mobility: "wheel_chairs (Y(es)|N(o)|empty for unknown)"
+ footnotes_ids: "footnotes"
stop_id: "stop id"
stop_name: "stop name"
b_true: "Yes"
@@ -22,31 +23,7 @@ en:
friday: "Fr"
saturday: "Sa"
sunday: "Su"
+ ftn_columns: "ref;number;line text"
vj_filename: "vehicle_journeys_"
tt_filename: "time_tables"
-fr:
- vehicle_journey_exports:
- new:
- title: "Exporter les horaires existants"
- basename: "courses"
- label:
- 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)"
- published_journey_name: "nom public"
- mobility: "PMR (O(ui)|N(on)|vide si inconnu)"
- stop_id: "id arrêt"
- stop_name: "nom arrêt"
- b_true: "Oui"
- b_false: "Non"
- tt_columns: "code;nom;étiquettes;début;fin;types de jour;périodes;jours particuliers;jours exclus"
- monday: "Lu"
- tuesday: "Ma"
- wednesday: "Me"
- thursday: "Je"
- friday: "Ve"
- saturday: "Sa"
- sunday: "Di"
- vj_filename: "courses_"
- tt_filename: "calendriers"
+ ftn_filename: "notes"
diff --git a/config/locales/vehicle_journey_exports.fr.yml b/config/locales/vehicle_journey_exports.fr.yml
new file mode 100644
index 000000000..15eca70f3
--- /dev/null
+++ b/config/locales/vehicle_journey_exports.fr.yml
@@ -0,0 +1,30 @@
+fr:
+ vehicle_journey_exports:
+ new:
+ title: "Exporter les horaires existants"
+ basename: "courses"
+ label:
+ 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)"
+ published_journey_name: "nom public"
+ mobility: "PMR (O(ui)|N(on)|vide si inconnu)"
+ footnotes_ids: "notes de bas de page"
+ stop_id: "id arrêt"
+ stop_name: "nom arrêt"
+ b_true: "Oui"
+ b_false: "Non"
+ tt_columns: "code;nom;étiquettes;début;fin;types de jour;périodes;jours particuliers;jours exclus"
+ monday: "Lu"
+ tuesday: "Ma"
+ wednesday: "Me"
+ thursday: "Je"
+ friday: "Ve"
+ saturday: "Sa"
+ sunday: "Di"
+ ftn_columns: "clé;numéro;ligne de texte"
+ vj_filename: "courses_"
+ tt_filename: "calendriers"
+ ftn_filename: "notes"
+
diff --git a/spec/fixtures/vehicle_journey_imports_valid.csv b/spec/fixtures/vehicle_journey_imports_valid.csv
index 3126ffe2b..85a505ab6 100644
--- a/spec/fixtures/vehicle_journey_imports_valid.csv
+++ b/spec/fixtures/vehicle_journey_imports_valid.csv
@@ -4,6 +4,7 @@
;PMR (O(ui)|N(on)|vide si inconnu);Oui;;;
;TAD (O(ui)|N(on)|vide si inconnu);Oui;;;
;calendriers;;;;
+;notes de bas de page;;;;
id arrêt;nom arrêt;;;;
1;Arrêt 1;9:00:00;;11:10:00;12:10:00
2;Arrêt 2;9:05:00;10:05:00;11:15:00;12:15:00
diff --git a/spec/fixtures/vehicle_journey_imports_with_vj_invalid.csv b/spec/fixtures/vehicle_journey_imports_with_vj_invalid.csv
index 7aa59009e..beec85c4c 100644
--- a/spec/fixtures/vehicle_journey_imports_with_vj_invalid.csv
+++ b/spec/fixtures/vehicle_journey_imports_with_vj_invalid.csv
@@ -4,6 +4,7 @@
;PMR (O(ui)|N(on)|vide si inconnu);Oui;;
;TAD (O(ui)|N(on)|vide si inconnu);Oui;;
;calendriers;;;
+;notes de bas de page;;;
id arrêt;nom arrêt;;;
1;Arrêt 1;9:00:00;10:05:00;11:10:00
2;Arrêt 2;11:05:00;;11:15:00
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 df6b1acff..c1bb85881 100644
--- a/spec/fixtures/vehicle_journey_imports_with_vjas_bad_order.csv
+++ b/spec/fixtures/vehicle_journey_imports_with_vjas_bad_order.csv
@@ -4,6 +4,7 @@
;PMR (O(ui)|N(on)|vide si inconnu);Oui;;
;TAD (O(ui)|N(on)|vide si inconnu);Oui;;
;calendriers;;;
+;notes de bas de page;;;
id arrêt;nom arrêt;;;
1;Arrêt 1;9:05:00;10:05:00;11:10:00
2;Arrêt 2;11:05:00;;11:15:00
diff --git a/spec/fixtures/vehicle_journey_imports_with_vjas_invalid.csv b/spec/fixtures/vehicle_journey_imports_with_vjas_invalid.csv
index bcb07a177..95799e9d9 100644
--- a/spec/fixtures/vehicle_journey_imports_with_vjas_invalid.csv
+++ b/spec/fixtures/vehicle_journey_imports_with_vjas_invalid.csv
@@ -4,6 +4,7 @@
;PMR (O(ui)|N(on)|vide si inconnu);Oui;;
;TAD (O(ui)|N(on)|vide si inconnu);Oui;;
;calendriers;;;;
+;notes de bas de page;;;;
id arrêt;nom arrêt;;;
1;Arrêt 1;invalid time;10:05:00;11:10:00
2;Arrêt 2;9:05:00;;11:15:00
diff --git a/spec/models/vehicle_journey_export_spec.rb b/spec/models/vehicle_journey_export_spec.rb
index 5ce3b9bfc..a5e0c2f6d 100644
--- a/spec/models/vehicle_journey_export_spec.rb
+++ b/spec/models/vehicle_journey_export_spec.rb
@@ -3,8 +3,9 @@ require 'spec_helper'
describe VehicleJourneyExport do
- let!(:route) { create(:route) }
- let!(:other_route) { create(:route) }
+ let!(:line) { create(:line) }
+ let!(:route) { create(:route, :line => line) }
+ let!(:other_route) { create(:route, :line => line) }
let!(:journey_pattern) { create(:journey_pattern, :route => route) }
let!(:other_journey_pattern) { create(:journey_pattern_even, :route => route) }
diff --git a/spec/models/vehicle_journey_import_spec.rb b/spec/models/vehicle_journey_import_spec.rb
index 68f8669e0..820d92382 100644
--- a/spec/models/vehicle_journey_import_spec.rb
+++ b/spec/models/vehicle_journey_import_spec.rb
@@ -16,10 +16,10 @@ describe VehicleJourneyImport do
row2 << cell
end
csv << row2
- elsif counter < 7
+ elsif counter < 8
csv << row
else
- csv << ( row[0] = route.stop_points[counter - 7].id; row)
+ csv << ( row[0] = route.stop_points[counter - 8].id; row)
end
counter += 1
end
diff --git a/spec/requests/vehicle_journey_imports_spec.rb b/spec/requests/vehicle_journey_imports_spec.rb
index 68fe04e0b..e1e046980 100644
--- a/spec/requests/vehicle_journey_imports_spec.rb
+++ b/spec/requests/vehicle_journey_imports_spec.rb
@@ -29,10 +29,10 @@ describe "VehicleJourneyImports" do
row2 << cell
end
csv << row2
- elsif counter < 7
+ elsif counter < 8
csv << row
else
- csv << ( row[0] = route.stop_points[counter - 7].id; row)
+ csv << ( row[0] = route.stop_points[counter - 8].id; row)
end
counter += 1
end