aboutsummaryrefslogtreecommitdiffstats
path: root/app/models
diff options
context:
space:
mode:
authorZakaria BOUZIANE2015-03-09 14:40:32 +0100
committerZakaria BOUZIANE2015-03-09 14:40:32 +0100
commit05fb2b7aa8ca7d490a8960a096de7d934fffe133 (patch)
tree9b6666380cdbd2eff1f79c79d97fbd302a768006 /app/models
parent0d5adf2fad5c0ddd8efc1eca9dc6d8e9c48b049d (diff)
parenta5f66f953120c08951b6338ad0f743c2d0eec86e (diff)
downloadchouette-core-05fb2b7aa8ca7d490a8960a096de7d934fffe133.tar.bz2
Solving merge V2_5 pbs
Diffstat (limited to 'app/models')
-rw-r--r--app/models/neptune_export.rb4
-rw-r--r--app/models/organisation.rb2
-rw-r--r--app/models/referential.rb23
-rw-r--r--app/models/rule_parameter_set.rb38
-rw-r--r--app/models/stop_area_copy.rb11
-rw-r--r--app/models/vehicle_journey_export.rb30
-rw-r--r--app/models/vehicle_journey_import.rb16
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