diff options
| author | Zakaria BOUZIANE | 2015-03-09 14:40:32 +0100 |
|---|---|---|
| committer | Zakaria BOUZIANE | 2015-03-09 14:40:32 +0100 |
| commit | 05fb2b7aa8ca7d490a8960a096de7d934fffe133 (patch) | |
| tree | 9b6666380cdbd2eff1f79c79d97fbd302a768006 /app/models | |
| parent | 0d5adf2fad5c0ddd8efc1eca9dc6d8e9c48b049d (diff) | |
| parent | a5f66f953120c08951b6338ad0f743c2d0eec86e (diff) | |
| download | chouette-core-05fb2b7aa8ca7d490a8960a096de7d934fffe133.tar.bz2 | |
Solving merge V2_5 pbs
Diffstat (limited to 'app/models')
| -rw-r--r-- | app/models/neptune_export.rb | 4 | ||||
| -rw-r--r-- | app/models/organisation.rb | 2 | ||||
| -rw-r--r-- | app/models/referential.rb | 23 | ||||
| -rw-r--r-- | app/models/rule_parameter_set.rb | 38 | ||||
| -rw-r--r-- | app/models/stop_area_copy.rb | 11 | ||||
| -rw-r--r-- | app/models/vehicle_journey_export.rb | 30 | ||||
| -rw-r--r-- | app/models/vehicle_journey_import.rb | 16 |
7 files changed, 88 insertions, 36 deletions
diff --git a/app/models/neptune_export.rb b/app/models/neptune_export.rb index 67dbc33d1..566117b32 100644 --- a/app/models/neptune_export.rb +++ b/app/models/neptune_export.rb @@ -1,4 +1,4 @@ -# class NeptuneExport < Export +class NeptuneExport < Export # option :start_date # option :end_date @@ -17,4 +17,4 @@ # end # end -# end +end diff --git a/app/models/organisation.rb b/app/models/organisation.rb index 8fafa56a0..239ee59ee 100644 --- a/app/models/organisation.rb +++ b/app/models/organisation.rb @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- class Organisation < ActiveRecord::Base include DataFormatEnumerations - + has_many :users, :dependent => :destroy has_many :referentials, :dependent => :destroy has_many :rule_parameter_sets, :dependent => :destroy diff --git a/app/models/referential.rb b/app/models/referential.rb index 97331c1c3..83cbc53fa 100644 --- a/app/models/referential.rb +++ b/app/models/referential.rb @@ -29,6 +29,8 @@ class Referential < ActiveRecord::Base belongs_to :organisation validates_presence_of :organisation + attr_accessible :data_format, :name, :prefix, :projection_type, :time_zone, :upper_corner, :lower_corner, :slug, :organisation + def slug_excluded_values if ! slug.nil? if slug.start_with? "pg_" @@ -149,11 +151,6 @@ class Referential < ActiveRecord::Base Apartment::Tenant.drop slug end - after_create :add_rule_parameter_set - def add_rule_parameter_set - RuleParameterSet.default_for_all_modes( self).save - end - def upper_corner envelope.upper_corner end @@ -209,6 +206,10 @@ Rails.application.config.after_initialize do @referential ||= Referential.where(:slug => Apartment::Tenant.current_tenant).first! end + def hub_restricted? + referential.data_format == "hub" + end + # override prefix for good prefix in objectid generation def prefix self.referential.prefix @@ -216,6 +217,18 @@ Rails.application.config.after_initialize do end + # Hub constraints + Chouette::Route; class Chouette::Route; include NinoxeExtension::Hub::RouteRestrictions; end + Chouette::JourneyPattern; class Chouette::JourneyPattern; include NinoxeExtension::Hub::JourneyPatternRestrictions; end + Chouette::VehicleJourney; class Chouette::VehicleJourney; include NinoxeExtension::Hub::VehicleJourneyRestrictions; end + Chouette::TimeTable; class Chouette::TimeTable; include NinoxeExtension::Hub::TimeTableRestrictions; end + Chouette::ConnectionLink; class Chouette::ConnectionLink; include NinoxeExtension::Hub::ConnectionLinkRestrictions; end + Chouette::StopArea; class Chouette::StopArea; include NinoxeExtension::Hub::StopAreaRestrictions; end + Chouette::Line; class Chouette::Line; include NinoxeExtension::Hub::LineRestrictions; end + Chouette::GroupOfLine; class Chouette::GroupOfLine; include NinoxeExtension::Hub::GroupOfLineRestrictions; end + Chouette::Company; class Chouette::Company; include NinoxeExtension::Hub::CompanyRestrictions; end + Chouette::Network; class Chouette::Network; include NinoxeExtension::Hub::NetworkRestrictions; end + Chouette::TimeTable class Chouette::TimeTable diff --git a/app/models/rule_parameter_set.rb b/app/models/rule_parameter_set.rb index 3c0d687b1..1901383c5 100644 --- a/app/models/rule_parameter_set.rb +++ b/app/models/rule_parameter_set.rb @@ -15,25 +15,25 @@ class RuleParameterSet < ActiveRecord::Base %w( inter_stop_area_distance_min parent_stop_area_distance_max stop_areas_area inter_access_point_distance_min inter_connection_link_distance_max walk_default_speed_max walk_occasional_traveller_speed_max walk_frequent_traveller_speed_max walk_mobility_restricted_traveller_speed_max - inter_access_link_distance_max inter_stop_duration_max facility_stop_area_distance_max - check_allowed_transport_modes check_lines_in_groups check_line_routes + inter_access_link_distance_max inter_stop_duration_max facility_stop_area_distance_max + check_allowed_transport_modes check_lines_in_groups check_line_routes check_stop_parent check_connection_link_on_physical) end - + def self.validable_objects [Chouette::Network,Chouette::Company,Chouette::GroupOfLine, Chouette::StopArea,Chouette::AccessPoint,Chouette::AccessLink,Chouette::ConnectionLink, Chouette::TimeTable,Chouette::Line,Chouette::Route, Chouette::JourneyPattern,Chouette::VehicleJourney] end - + def self.validable_object_names ["network","company","group_of_line", "stop_area","access_point","access_link","connection_link", "time_table","line","route", "journey_pattern","vehicle_journey"] end - + def self.validable_columns {"network" => ['objectid','name','registration_number'], "company" => ['objectid','name','registration_number'], @@ -48,7 +48,7 @@ class RuleParameterSet < ActiveRecord::Base "journey_pattern" => ['objectid','name','registration_number','published_name'], "vehicle_journey" => ['objectid','published_journey_name','published_journey_identifier','number'] } end - + def self.column_attribute_prefixes %w( unique pattern min_size max_size ) end @@ -63,14 +63,14 @@ class RuleParameterSet < ActiveRecord::Base mode_attribute_prefixes.include?( $1) && self.class.all_modes.include?( $2) end - + def self.column_attribute?( method_name ) pattern = /(\w+)_column_(\w+)_object_(\w+)/ return false unless method_name.match( pattern) return false unless validable_object_names.include?($3) column_attribute_prefixes.include?( $1) && validable_columns[$3].include?( $2) end - + def self.mode_of_mode_attribute( method_name ) method_name.match( /(\w+)_mode_(\w+)/) $2 @@ -109,7 +109,7 @@ class RuleParameterSet < ActiveRecord::Base ((self.parameters ||= {})["mode_#{mode}"] ||= {})[attribute_name] = prefix end end - + def self.column_parameter(obj,column,prefix) name = "#{prefix}_column_#{column}_object_#{obj}" #attr_accessible name @@ -123,7 +123,7 @@ class RuleParameterSet < ActiveRecord::Base attribute_name, column, obj = prefix, column, obj (((self.parameters ||= {})[obj] ||= {})[column]||= {})[attribute_name] = key end - + end def self.object_parameter(clazz) @@ -135,11 +135,11 @@ class RuleParameterSet < ActiveRecord::Base column_attribute_prefixes.each do |prefix| column_parameter name,column,prefix end - + end end - + def self.parameter(name) name = name.to_s #attr_accessible name @@ -169,7 +169,7 @@ class RuleParameterSet < ActiveRecord::Base :check_lines_in_groups => false, :check_line_routes => false, :check_stop_parent => false, - :check_connection_link_on_physical => false + :check_connection_link_on_physical => false } if mode && self.mode_default_params[ mode.to_sym] base.merge!( self.mode_default_params[ mode.to_sym]) @@ -319,13 +319,13 @@ class RuleParameterSet < ActiveRecord::Base :name => "valeurs par defaut" }.merge( mode_attributes)) end - + def allowed(mode) return true unless self.check_allowed_transport_modes # puts "#{mode} = "+self.send("allowed_transport_mode_#{mode}").to_s return self.send("allowed_transport_mode_#{mode}") == "1" end - + def selected(object) # puts "#{mode} = "+self.send("allowed_transport_mode_#{mode}").to_s return self.send("check_#{object}") == "1" @@ -336,7 +336,7 @@ class RuleParameterSet < ActiveRecord::Base return self.send("unique_column_#{column}_object_#{object}") == "1" || self.send("pattern_column_#{column}_object_#{object}") != "0" || !self.send("min_size_column_#{column}_object_#{object}").empty? || - !self.send("max_size_column_#{column}_object_#{object}").empty? + !self.send("max_size_column_#{column}_object_#{object}").empty? end @@ -345,15 +345,15 @@ class RuleParameterSet < ActiveRecord::Base mode_parameter "#{prefix}_mode_#{mode}".to_sym end end - + general_attributes.each do |attribute| parameter attribute.to_sym unless attribute == "stop_areas_area" || attribute == "check_allowed_transport_modes" validates attribute.to_sym, :numericality => true, :allow_nil => true, :allow_blank => true end end - - + + validable_objects.each do |obj| object_parameter obj end diff --git a/app/models/stop_area_copy.rb b/app/models/stop_area_copy.rb index 928b66a52..3401b5fde 100644 --- a/app/models/stop_area_copy.rb +++ b/app/models/stop_area_copy.rb @@ -6,13 +6,13 @@ class StopAreaCopy extend ActiveModel::Naming attr_accessor :source_id, :hierarchy, :area_type, :source, :copy - + validates_presence_of :source_id, :hierarchy, :area_type - + validates :hierarchy, inclusion: { in: %w(child parent) } - - def initialize(attributes = {}) + + def initialize(attributes = {}) attributes.each { |name, value| send("#{name}=", value) } if attributes if self.area_type.blank? && self.source != nil self.source_id = self.source.id @@ -31,7 +31,7 @@ class StopAreaCopy end end end - + def persisted? false end @@ -87,5 +87,4 @@ class StopAreaCopy end 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 |
