diff options
| author | Marc Florisson | 2015-02-06 08:26:23 +0100 |
|---|---|---|
| committer | Marc Florisson | 2015-02-06 08:26:23 +0100 |
| commit | 254dbb9ed3d22d3bd1427d3a771517abffbebe23 (patch) | |
| tree | 3913aa50e86cb34a180161ab805cf28c143ed260 | |
| parent | a3635f558a832ad6adecb885c6fd1d3403cfa15a (diff) | |
| parent | 3996ab51e41f887d0fcfd40ad18a5ad4ae488fc1 (diff) | |
| download | chouette-core-254dbb9ed3d22d3bd1427d3a771517abffbebe23.tar.bz2 | |
Merge branch 'footnotes' of github.com:afimb/chouette2 into footnotes
| -rw-r--r-- | app/models/neptune_export.rb | 10 | ||||
| -rw-r--r-- | app/models/vehicle_journey_export.rb | 30 | ||||
| -rw-r--r-- | app/models/vehicle_journey_import.rb | 16 | ||||
| -rw-r--r-- | app/views/exports/_fields_neptune_export.erb | 1 | ||||
| -rw-r--r-- | config/locales/exports.yml | 2 | ||||
| -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.yml | 30 | ||||
| -rw-r--r-- | spec/fixtures/vehicle_journey_imports_valid.csv | 1 | ||||
| -rw-r--r-- | spec/fixtures/vehicle_journey_imports_with_vj_invalid.csv | 1 | ||||
| -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_export_spec.rb | 5 | ||||
| -rw-r--r-- | spec/models/vehicle_journey_import_spec.rb | 4 | ||||
| -rw-r--r-- | spec/requests/vehicle_journey_imports_spec.rb | 4 |
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 |
