ninoxe 0.1.6 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/app/models/chouette/command.rb +3 -2
- data/app/models/chouette/route.rb +12 -11
- data/app/models/chouette/stop_point.rb +11 -5
- data/app/models/chouette/time_table.rb +19 -7
- data/app/models/chouette/time_table_date.rb +8 -1
- data/app/models/chouette/time_table_period.rb +6 -1
- data/app/models/chouette/trident_active_record.rb +12 -0
- data/config/database.yml +2 -0
- data/{spec/dummy/config/database.yml → config/database.yml.me} +2 -0
- data/lib/ninoxe/version.rb +1 -1
- data/lib/ninoxe.rb~ +7 -0
- metadata +131 -209
- checksums.yaml +0 -7
- data/spec/dummy/README.rdoc +0 -261
- data/spec/dummy/Rakefile +0 -6
- data/spec/dummy/app/assets/javascripts/application.js +0 -15
- data/spec/dummy/app/assets/stylesheets/application.css +0 -13
- data/spec/dummy/app/controllers/application_controller.rb +0 -3
- data/spec/dummy/app/helpers/application_helper.rb +0 -2
- data/spec/dummy/app/mailers/.gitkeep +0 -0
- data/spec/dummy/app/models/.gitkeep +0 -0
- data/spec/dummy/app/views/layouts/application.html.erb +0 -14
- data/spec/dummy/config/application.rb +0 -56
- data/spec/dummy/config/boot.rb +0 -10
- data/spec/dummy/config/environment.rb +0 -7
- data/spec/dummy/config/environments/development.rb +0 -37
- data/spec/dummy/config/environments/production.rb +0 -67
- data/spec/dummy/config/environments/test.rb +0 -37
- data/spec/dummy/config/initializers/active_record.rb +0 -2
- data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -7
- data/spec/dummy/config/initializers/inflections.rb +0 -15
- data/spec/dummy/config/initializers/mime_types.rb +0 -5
- data/spec/dummy/config/initializers/secret_token.rb +0 -7
- data/spec/dummy/config/initializers/session_store.rb +0 -8
- data/spec/dummy/config/initializers/wrap_parameters.rb +0 -14
- data/spec/dummy/config/locales/en.yml +0 -5
- data/spec/dummy/config/routes.rb +0 -4
- data/spec/dummy/config.ru +0 -4
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/lib/assets/.gitkeep +0 -0
- data/spec/dummy/log/.gitkeep +0 -0
- data/spec/dummy/public/404.html +0 -26
- data/spec/dummy/public/422.html +0 -26
- data/spec/dummy/public/500.html +0 -25
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/script/rails +0 -6
- data/spec/models/chouette/access_link_spec.rb +0 -78
- data/spec/models/chouette/access_point_spec.rb +0 -193
- data/spec/models/chouette/active_record_spec.rb +0 -121
- data/spec/models/chouette/area_type_spec.rb +0 -53
- data/spec/models/chouette/company_spec.rb +0 -51
- data/spec/models/chouette/connection_link_spec.rb +0 -56
- data/spec/models/chouette/direction_spec.rb +0 -60
- data/spec/models/chouette/exporter_spec.rb +0 -28
- data/spec/models/chouette/file_validator_spec.rb +0 -28
- data/spec/models/chouette/group_of_line_spec.rb +0 -31
- data/spec/models/chouette/journey_pattern_spec.rb +0 -62
- data/spec/models/chouette/line_spec.rb +0 -106
- data/spec/models/chouette/loader_spec.rb +0 -69
- data/spec/models/chouette/network_spec.rb +0 -22
- data/spec/models/chouette/object_id_spec.rb +0 -146
- data/spec/models/chouette/route_spec.rb +0 -159
- data/spec/models/chouette/stop_area_spec.rb +0 -354
- data/spec/models/chouette/stop_point_spec.rb +0 -39
- data/spec/models/chouette/time_table_spec.rb +0 -372
- data/spec/models/chouette/transport_mode_spec.rb +0 -64
- data/spec/models/chouette/vehicle_journey_at_stop_spec.rb +0 -46
- data/spec/models/chouette/vehicle_journey_spec.rb +0 -204
- data/spec/presenters/chouette/geometry/general_presenter.rb +0 -1
- data/spec/presenters/chouette/geometry/line_presenter_spec.rb +0 -13
- data/spec/spec_helper.rb +0 -45
@@ -17,7 +17,7 @@ class Chouette::Command
|
|
17
17
|
@@command = "chouette"
|
18
18
|
cattr_accessor :command
|
19
19
|
|
20
|
-
attr_accessor :database, :schema, :host, :user, :password
|
20
|
+
attr_accessor :database, :schema, :host, :user, :password, :port
|
21
21
|
|
22
22
|
def initialize(options = {})
|
23
23
|
database_options_from_active_record.merge(options).each do |k,v|
|
@@ -31,6 +31,7 @@ class Chouette::Command
|
|
31
31
|
:database => config[:database],
|
32
32
|
:user => config[:username],
|
33
33
|
:password => config[:password],
|
34
|
+
:port => config[:port],
|
34
35
|
:host => (config[:host] or "localhost")
|
35
36
|
}
|
36
37
|
end
|
@@ -45,7 +46,7 @@ class Chouette::Command
|
|
45
46
|
#f.puts "database.showsql = true"
|
46
47
|
f.puts "hibernate.username = #{user}"
|
47
48
|
f.puts "hibernate.password = #{password}"
|
48
|
-
f.puts "jdbc.url=jdbc:postgresql://#{host}
|
49
|
+
f.puts "jdbc.url=jdbc:postgresql://#{host}:#{port}/#{database}"
|
49
50
|
f.puts "jdbc.username = #{user}"
|
50
51
|
f.puts "jdbc.password = #{password}"
|
51
52
|
#f.puts "database.hbm2ddl.auto=update"
|
@@ -6,7 +6,7 @@ class Chouette::Route < Chouette::TridentActiveRecord
|
|
6
6
|
attr_accessor :direction_code
|
7
7
|
|
8
8
|
attr_accessible :direction_code, :wayback_code, :line_id, :objectid, :object_version, :creation_time, :creator_id, :name
|
9
|
-
attr_accessible :comment, :opposite_route_id, :published_name, :number, :direction, :wayback
|
9
|
+
attr_accessible :comment, :opposite_route_id, :published_name, :number, :direction, :wayback, :stop_points_attributes
|
10
10
|
|
11
11
|
def self.nullable_attributes
|
12
12
|
[:published_name, :comment, :number]
|
@@ -21,7 +21,7 @@ class Chouette::Route < Chouette::TridentActiveRecord
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
belongs_to :opposite_route, :class_name => 'Chouette::Route', :foreign_key => :opposite_route_id
|
24
|
-
has_many :stop_points, :order => 'position', :dependent => :destroy do
|
24
|
+
has_many :stop_points, inverse_of: :route, :order => 'position', :dependent => :destroy do
|
25
25
|
def find_by_stop_area(stop_area)
|
26
26
|
stop_area_ids = Integer === stop_area ? [stop_area] : (stop_area.children_in_depth + [stop_area]).map(&:id)
|
27
27
|
where( :stop_area_id => stop_area_ids).first or
|
@@ -39,7 +39,7 @@ class Chouette::Route < Chouette::TridentActiveRecord
|
|
39
39
|
endpoint
|
40
40
|
else
|
41
41
|
raise ActiveRecord::RecordNotFound.new("Can't determine position in route #{proxy_owner.id} with #{departure.inspect}")
|
42
|
-
end
|
42
|
+
end
|
43
43
|
end
|
44
44
|
where(" position between ? and ? ", between_positions.first, between_positions.last)
|
45
45
|
end
|
@@ -52,14 +52,15 @@ class Chouette::Route < Chouette::TridentActiveRecord
|
|
52
52
|
proxy_owner.stop_points.between(departure, arrival).includes(:stop_area).collect(&:stop_area)
|
53
53
|
end
|
54
54
|
end
|
55
|
+
accepts_nested_attributes_for :stop_points, :allow_destroy => :true
|
55
56
|
|
56
57
|
validates_presence_of :name
|
57
58
|
validates_presence_of :line
|
58
59
|
validates_presence_of :direction_code
|
59
60
|
validates_presence_of :wayback_code
|
60
|
-
|
61
|
+
|
61
62
|
before_destroy :dereference_opposite_route
|
62
|
-
|
63
|
+
|
63
64
|
def geometry_presenter
|
64
65
|
Chouette::Geometry::RoutePresenter.new self
|
65
66
|
end
|
@@ -86,12 +87,12 @@ class Chouette::Route < Chouette::TridentActiveRecord
|
|
86
87
|
end
|
87
88
|
|
88
89
|
def self.direction_binding
|
89
|
-
{ "A" => "straight_forward",
|
90
|
+
{ "A" => "straight_forward",
|
90
91
|
"R" => "backward",
|
91
92
|
"ClockWise" => "clock_wise",
|
92
93
|
"CounterClockWise" => "counter_clock_wise",
|
93
94
|
"North" => "north",
|
94
|
-
"NorthWest" => "north_west",
|
95
|
+
"NorthWest" => "north_west",
|
95
96
|
"West" => "west",
|
96
97
|
"SouthWest" => "south_west",
|
97
98
|
"South" => "south",
|
@@ -105,7 +106,7 @@ class Chouette::Route < Chouette::TridentActiveRecord
|
|
105
106
|
end
|
106
107
|
def direction_code=(direction_code)
|
107
108
|
self.direction = nil
|
108
|
-
self.class.direction_binding.each do |k,v|
|
109
|
+
self.class.direction_binding.each do |k,v|
|
109
110
|
self.direction = k if v==direction_code
|
110
111
|
end
|
111
112
|
end
|
@@ -122,7 +123,7 @@ class Chouette::Route < Chouette::TridentActiveRecord
|
|
122
123
|
end
|
123
124
|
def wayback_code=(wayback_code)
|
124
125
|
self.wayback = nil
|
125
|
-
self.class.wayback_binding.each do |k,v|
|
126
|
+
self.class.wayback_binding.each do |k,v|
|
126
127
|
self.wayback = k if v==wayback_code
|
127
128
|
end
|
128
129
|
end
|
@@ -130,14 +131,14 @@ class Chouette::Route < Chouette::TridentActiveRecord
|
|
130
131
|
def self.waybacks
|
131
132
|
@@waybacks ||= Chouette::Wayback.all
|
132
133
|
end
|
133
|
-
|
134
|
+
|
134
135
|
def stop_point_permutation?( stop_point_ids)
|
135
136
|
stop_points.map(&:id).map(&:to_s).sort == stop_point_ids.map(&:to_s).sort
|
136
137
|
end
|
137
138
|
|
138
139
|
def reorder!( stop_point_ids)
|
139
140
|
return false unless stop_point_permutation?( stop_point_ids)
|
140
|
-
|
141
|
+
|
141
142
|
stop_area_id_by_stop_point_id = {}
|
142
143
|
stop_points.each do |sp|
|
143
144
|
stop_area_id_by_stop_point_id.merge!( sp.id => sp.stop_area_id)
|
@@ -3,21 +3,27 @@ class Chouette::StopPoint < Chouette::TridentActiveRecord
|
|
3
3
|
self.primary_key = "id"
|
4
4
|
|
5
5
|
belongs_to :stop_area
|
6
|
-
belongs_to :route
|
6
|
+
belongs_to :route, inverse_of: :stop_points
|
7
7
|
acts_as_list :scope => 'route_id = \'#{route.id}\'',:top_of_list => 0
|
8
8
|
|
9
9
|
attr_accessible :route_id, :stop_area_id, :objectid, :object_version, :creation_time, :creator_id, :position
|
10
10
|
|
11
11
|
has_many :vehicle_journey_at_stops, :dependent => :destroy
|
12
12
|
has_many :vehicle_journeys, :through => :vehicle_journey_at_stops, :uniq => true
|
13
|
-
|
13
|
+
|
14
14
|
before_destroy :remove_dependent_journey_pattern_stop_points
|
15
|
-
|
15
|
+
|
16
16
|
validates_presence_of :stop_area
|
17
|
-
|
18
|
-
|
17
|
+
validate :stop_area_id_validation
|
18
|
+
|
19
19
|
scope :default_order, order("position")
|
20
20
|
|
21
|
+
def stop_area_id_validation
|
22
|
+
if stop_area_id.nil?
|
23
|
+
errors.add(:stop_area_id, I18n.t("errors.messages.empty"))
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
21
27
|
def self.area_candidates
|
22
28
|
Chouette::StopArea.where( :area_type => ['Quay', 'BoardingPosition'])
|
23
29
|
end
|
@@ -7,8 +7,8 @@ class Chouette::TimeTable < Chouette::TridentActiveRecord
|
|
7
7
|
attr_accessible :start_date, :end_date
|
8
8
|
attr_accessor :monday,:tuesday,:wednesday,:thursday,:friday,:saturday,:sunday
|
9
9
|
|
10
|
-
has_many :dates, :class_name => "Chouette::TimeTableDate", :order => :date, :dependent => :destroy, :after_add => :shortcuts_update, :after_remove => :shortcuts_update
|
11
|
-
has_many :periods, :class_name => "Chouette::TimeTablePeriod", :order => :period_start, :dependent => :destroy, :after_add => :shortcuts_update, :after_remove => :shortcuts_update
|
10
|
+
has_many :dates, inverse_of: :time_table, :validate => :true, :class_name => "Chouette::TimeTableDate", :order => :date, :dependent => :destroy, :after_add => :shortcuts_update, :after_remove => :shortcuts_update
|
11
|
+
has_many :periods, inverse_of: :time_table, :validate => :true, :class_name => "Chouette::TimeTablePeriod", :order => :period_start, :dependent => :destroy, :after_add => :shortcuts_update, :after_remove => :shortcuts_update
|
12
12
|
|
13
13
|
def self.object_id_key
|
14
14
|
"Timetable"
|
@@ -19,6 +19,8 @@ class Chouette::TimeTable < Chouette::TridentActiveRecord
|
|
19
19
|
attr_accessible :dates_attributes,:periods_attributes
|
20
20
|
|
21
21
|
validates_presence_of :comment
|
22
|
+
validates_associated :dates
|
23
|
+
validates_associated :periods
|
22
24
|
|
23
25
|
def self.start_validity_period
|
24
26
|
[Chouette::TimeTable.minimum(:start_date)].compact.min
|
@@ -29,11 +31,21 @@ class Chouette::TimeTable < Chouette::TridentActiveRecord
|
|
29
31
|
|
30
32
|
def shortcuts_update(date=nil)
|
31
33
|
dates_array = bounding_dates
|
32
|
-
if
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
34
|
+
#if new_record?
|
35
|
+
if dates_array.empty?
|
36
|
+
self.start_date=nil
|
37
|
+
self.end_date=nil
|
38
|
+
else
|
39
|
+
self.start_date=dates_array.min
|
40
|
+
self.end_date=dates_array.max
|
41
|
+
end
|
42
|
+
#else
|
43
|
+
# if dates_array.empty?
|
44
|
+
# update_attributes :start_date => nil, :end_date => nil
|
45
|
+
# else
|
46
|
+
# update_attributes :start_date => dates_array.min, :end_date => dates_array.max
|
47
|
+
# end
|
48
|
+
#end
|
37
49
|
end
|
38
50
|
|
39
51
|
def validity_out_from_on?(expected_date)
|
@@ -1,14 +1,21 @@
|
|
1
1
|
class Chouette::TimeTableDate < Chouette::ActiveRecord
|
2
2
|
self.primary_key = "id"
|
3
|
-
belongs_to :time_table
|
3
|
+
belongs_to :time_table, inverse_of: :dates
|
4
4
|
acts_as_list :scope => 'time_table_id = #{time_table_id}',:top_of_list => 0
|
5
5
|
|
6
6
|
validates_presence_of :date
|
7
7
|
validates_uniqueness_of :date, :scope => :time_table_id
|
8
8
|
|
9
9
|
attr_accessible :date, :position, :time_table_id, :time_table
|
10
|
+
|
11
|
+
after_update :update_parent
|
12
|
+
|
10
13
|
def self.model_name
|
11
14
|
ActiveModel::Name.new Chouette::TimeTableDate, Chouette, "TimeTableDate"
|
12
15
|
end
|
16
|
+
|
17
|
+
def update_parent
|
18
|
+
time_table.shortcuts_update
|
19
|
+
end
|
13
20
|
end
|
14
21
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
class Chouette::TimeTablePeriod < Chouette::ActiveRecord
|
2
2
|
self.primary_key = "id"
|
3
|
-
belongs_to :time_table
|
3
|
+
belongs_to :time_table, inverse_of: :periods
|
4
4
|
acts_as_list :scope => 'time_table_id = #{time_table_id}',:top_of_list => 0
|
5
5
|
|
6
6
|
attr_accessible :period_start, :period_end, :position,:time_table_id,:time_table
|
@@ -10,6 +10,8 @@ class Chouette::TimeTablePeriod < Chouette::ActiveRecord
|
|
10
10
|
|
11
11
|
validate :start_must_be_before_end
|
12
12
|
|
13
|
+
after_update :update_parent
|
14
|
+
|
13
15
|
def self.model_name
|
14
16
|
ActiveModel::Name.new Chouette::TimeTablePeriod, Chouette, "TimeTablePeriod"
|
15
17
|
end
|
@@ -23,4 +25,7 @@ class Chouette::TimeTablePeriod < Chouette::ActiveRecord
|
|
23
25
|
errors.add(:period_end,I18n.t("activerecord.errors.models.time_table_period.start_must_be_before_end"))
|
24
26
|
end
|
25
27
|
end
|
28
|
+
def update_parent
|
29
|
+
time_table.shortcuts_update
|
30
|
+
end
|
26
31
|
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
class Chouette::TridentActiveRecord < Chouette::ActiveRecord
|
2
2
|
before_validation :prepare_auto_columns
|
3
|
+
after_validation :reset_auto_columns
|
4
|
+
|
3
5
|
after_save :build_objectid
|
4
6
|
|
5
7
|
self.abstract_class = true
|
@@ -39,6 +41,16 @@ class Chouette::TridentActiveRecord < Chouette::ActiveRecord
|
|
39
41
|
self.creator_id = 'chouette'
|
40
42
|
end
|
41
43
|
|
44
|
+
def reset_auto_columns
|
45
|
+
clean_object_id unless self.errors.nil? || self.errors.empty?
|
46
|
+
end
|
47
|
+
|
48
|
+
def clean_object_id
|
49
|
+
if self.objectid.include?("__pending_id__")
|
50
|
+
self.objectid=nil
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
42
54
|
def build_objectid
|
43
55
|
#logger.info 'start after_create : '+self.objectid
|
44
56
|
if self.objectid.include? ':__pending_id__'
|
data/config/database.yml
CHANGED
data/lib/ninoxe/version.rb
CHANGED