aboutsummaryrefslogtreecommitdiffstats
path: root/app/models
diff options
context:
space:
mode:
Diffstat (limited to 'app/models')
-rw-r--r--app/models/chouette/journey_pattern.rb2
-rw-r--r--app/models/chouette/netex_object_id.rb4
-rw-r--r--app/models/chouette/object_id.rb4
-rw-r--r--app/models/chouette/route.rb29
-rw-r--r--app/models/chouette/routing_constraint_zone.rb2
-rw-r--r--app/models/chouette/stif_netex_objectid.rb4
-rw-r--r--app/models/chouette/stop_point.rb15
-rw-r--r--app/models/chouette/vehicle_journey.rb2
-rw-r--r--app/models/compliance_check.rb8
-rw-r--r--app/models/compliance_check_block.rb3
-rw-r--r--app/models/compliance_check_resource.rb5
-rw-r--r--app/models/compliance_check_result.rb5
-rw-r--r--app/models/compliance_check_set.rb10
-rw-r--r--app/models/compliance_control.rb9
-rw-r--r--app/models/compliance_control_block.rb3
-rw-r--r--app/models/compliance_control_set.rb3
-rw-r--r--app/models/import.rb8
-rw-r--r--app/models/import_message.rb2
-rw-r--r--app/models/referential.rb18
-rw-r--r--app/models/referential_metadata.rb1
-rw-r--r--app/models/stop_area_copy.rb2
21 files changed, 100 insertions, 39 deletions
diff --git a/app/models/chouette/journey_pattern.rb b/app/models/chouette/journey_pattern.rb
index 2b62d5c7f..fa2a9c8bb 100644
--- a/app/models/chouette/journey_pattern.rb
+++ b/app/models/chouette/journey_pattern.rb
@@ -23,7 +23,7 @@ class Chouette::JourneyPattern < Chouette::TridentActiveRecord
def local_id
- "IBOO-#{self.try(:route).try(:line).try(:objectid).try(:local_id)}-#{self.referential.id}-#{self.id}"
+ "IBOO-#{self.referential.id}-#{self.try(:route).try(:line).try(:objectid).try(:local_id)}-#{self.id}"
end
def checksum_attributes
diff --git a/app/models/chouette/netex_object_id.rb b/app/models/chouette/netex_object_id.rb
index 07d862992..441004c1e 100644
--- a/app/models/chouette/netex_object_id.rb
+++ b/app/models/chouette/netex_object_id.rb
@@ -5,7 +5,7 @@ class Chouette::NetexObjectId < String
end
alias_method :objectid?, :valid?
- @@format = /^([A-Za-z_]+):([0-9A-Za-z_]+):([A-Za-z]+):([0-9A-Za-z_-]+)$/
+ @@format = /^([A-Za-z_]+):([0-9A-Za-z_]+):([A-Za-z]+):([0-9A-Za-z_-]+)$/
cattr_reader :format
def parts
@@ -27,7 +27,7 @@ class Chouette::NetexObjectId < String
def local_id
parts.try(:fourth)
end
-
+
def self.create(provider_id, system_id, object_type, local_id)
new [provider_id, system_id, object_type, local_id].join(":")
end
diff --git a/app/models/chouette/object_id.rb b/app/models/chouette/object_id.rb
index 4f58048e1..0b122c91b 100644
--- a/app/models/chouette/object_id.rb
+++ b/app/models/chouette/object_id.rb
@@ -5,7 +5,7 @@ class Chouette::ObjectId < String
end
alias_method :objectid?, :valid?
- @@format = /^([0-9A-Za-z_]+):([A-Za-z]+):([0-9A-Za-z_-]+)$/
+ @@format = /^([0-9A-Za-z_]+):([A-Za-z]+):([0-9A-Za-z_-]+)$/
cattr_reader :format
def parts
@@ -23,7 +23,7 @@ class Chouette::ObjectId < String
def local_id
parts.try(:third)
end
-
+
def self.create(system_id, object_type, local_id)
new [system_id, object_type, local_id].join(":")
end
diff --git a/app/models/chouette/route.rb b/app/models/chouette/route.rb
index 5b89fbbe8..49493d5b5 100644
--- a/app/models/chouette/route.rb
+++ b/app/models/chouette/route.rb
@@ -16,6 +16,7 @@ class Chouette::Route < Chouette::TridentActiveRecord
end
belongs_to :line
+ belongs_to :opposite_route, :class_name => 'Chouette::Route', :foreign_key => :opposite_route_id
has_many :routing_constraint_zones
has_many :journey_patterns, :dependent => :destroy
@@ -30,7 +31,6 @@ class Chouette::Route < Chouette::TridentActiveRecord
Chouette::Route.vehicle_journeys_timeless(proxy_association.owner.journey_patterns.pluck( :departure_stop_point_id))
end
end
- belongs_to :opposite_route, :class_name => 'Chouette::Route', :foreign_key => :opposite_route_id
has_many :stop_points, -> { order("position") }, :dependent => :destroy do
def find_by_stop_area(stop_area)
stop_area_ids = Integer === stop_area ? [stop_area] : (stop_area.children_in_depth + [stop_area]).map(&:id)
@@ -56,12 +56,13 @@ class Chouette::Route < Chouette::TridentActiveRecord
end
has_many :stop_areas, -> { order('stop_points.position ASC') }, :through => :stop_points do
def between(departure, arrival)
- departure, arrival = [departure, arrival].collect do |endpoint|
+ departure, arrival = [departure, arrival].map do |endpoint|
String === endpoint ? Chouette::StopArea.find_by_objectid(endpoint) : endpoint
end
proxy_owner.stop_points.between(departure, arrival).includes(:stop_area).collect(&:stop_area)
end
end
+
accepts_nested_attributes_for :stop_points, :allow_destroy => :true
validates_presence_of :name
@@ -75,8 +76,30 @@ class Chouette::Route < Chouette::TridentActiveRecord
after_commit :journey_patterns_control_route_sections
+ def duplicate
+ overrides = {
+ 'opposite_route_id' => nil
+ }
+ keys_for_create = attributes.keys - %w{id objectid created_at updated_at}
+ atts_for_create = attributes
+ .slice(*keys_for_create)
+ .merge(overrides)
+ new_route = self.class.create!(atts_for_create)
+ duplicate_stop_points(for_route: new_route)
+ new_route
+ end
+
+ def duplicate_stop_points(for_route:)
+ stop_points.each(&duplicate_stop_point(for_route: for_route))
+ end
+ def duplicate_stop_point(for_route:)
+ -> stop_point do
+ stop_point.duplicate(for_route: for_route)
+ end
+ end
+
def local_id
- "IBOO-#{self.line.objectid.local_id}-#{self.referential.id}-#{self.id}"
+ "IBOO-#{self.referential.id}-#{self.line.objectid.local_id}-#{self.id}"
end
def geometry_presenter
diff --git a/app/models/chouette/routing_constraint_zone.rb b/app/models/chouette/routing_constraint_zone.rb
index 21efa2539..efe1b7237 100644
--- a/app/models/chouette/routing_constraint_zone.rb
+++ b/app/models/chouette/routing_constraint_zone.rb
@@ -9,7 +9,7 @@ class Chouette::RoutingConstraintZone < Chouette::TridentActiveRecord
validate :stop_points_belong_to_route, :not_all_stop_points_selected
def local_id
- "IBOO-#{self.route.line.objectid.local_id}-#{self.route.objectid.local_id}-#{self.referential.id}-#{self.id}"
+ "IBOO-#{self.referential.id}-#{self.route.line.objectid.local_id}-#{self.route.objectid.local_id}-#{self.id}"
end
scope :order_by_stop_points_count, ->(direction) do
diff --git a/app/models/chouette/stif_netex_objectid.rb b/app/models/chouette/stif_netex_objectid.rb
index 3b11691d9..a0a91668a 100644
--- a/app/models/chouette/stif_netex_objectid.rb
+++ b/app/models/chouette/stif_netex_objectid.rb
@@ -26,6 +26,10 @@ class Chouette::StifNetexObjectid < String
parts.try(:fourth)
end
+ def short_id
+ local_id.try(:split, "-").try(:[], -1)
+ end
+
def self.create(provider_id, object_type, local_id, boiv_id)
new [provider_id, object_type, local_id, boiv_id].join(":")
end
diff --git a/app/models/chouette/stop_point.rb b/app/models/chouette/stop_point.rb
index 8fe79dc0c..89c492b91 100644
--- a/app/models/chouette/stop_point.rb
+++ b/app/models/chouette/stop_point.rb
@@ -20,6 +20,11 @@ module Chouette
validates_presence_of :stop_area
validate :stop_area_id_validation
+ def stop_area_id_validation
+ if stop_area_id.nil?
+ errors.add(:stop_area_id, I18n.t("stop_areas.errors.empty"))
+ end
+ end
scope :default_order, -> { order("position") }
@@ -34,10 +39,12 @@ module Chouette
end
end
- def stop_area_id_validation
- if stop_area_id.nil?
- errors.add(:stop_area_id, I18n.t("stop_areas.errors.empty"))
- end
+ def duplicate(for_route:)
+ keys_for_create = attributes.keys - %w{id objectid created_at updated_at}
+ atts_for_create = attributes
+ .slice(*keys_for_create)
+ .merge('route_id' => for_route.id)
+ self.class.create!(atts_for_create)
end
def self.area_candidates
diff --git a/app/models/chouette/vehicle_journey.rb b/app/models/chouette/vehicle_journey.rb
index e60afef6e..f574afc93 100644
--- a/app/models/chouette/vehicle_journey.rb
+++ b/app/models/chouette/vehicle_journey.rb
@@ -57,7 +57,7 @@ module Chouette
end
def local_id
- "IBOO-#{self.route.line.objectid.local_id}-#{self.referential.id}-#{self.id}"
+ "IBOO-#{self.referential.id}-#{self.route.line.objectid.local_id}-#{self.id}"
end
def checksum_attributes
diff --git a/app/models/compliance_check.rb b/app/models/compliance_check.rb
index a9dbc4211..85cf5e37e 100644
--- a/app/models/compliance_check.rb
+++ b/app/models/compliance_check.rb
@@ -1,3 +1,9 @@
-class ComplianceCheck
+class ComplianceCheck < ActiveRecord::Base
+ belongs_to :compliance_check_set
+ belongs_to :compliance_check_block
+ enum criticity: [:info, :warning, :error]
+ validates :criticity, presence: true
+ validates :name, presence: true
+ validates :code, presence: true
end
diff --git a/app/models/compliance_check_block.rb b/app/models/compliance_check_block.rb
new file mode 100644
index 000000000..035c03ed9
--- /dev/null
+++ b/app/models/compliance_check_block.rb
@@ -0,0 +1,3 @@
+class ComplianceCheckBlock < ActiveRecord::Base
+ belongs_to :compliance_check_set
+end
diff --git a/app/models/compliance_check_resource.rb b/app/models/compliance_check_resource.rb
new file mode 100644
index 000000000..7826f00c3
--- /dev/null
+++ b/app/models/compliance_check_resource.rb
@@ -0,0 +1,5 @@
+class ComplianceCheckResource < ActiveRecord::Base
+ extend Enumerize
+
+ enumerize :status, in: %w[new successful warning failed]
+end
diff --git a/app/models/compliance_check_result.rb b/app/models/compliance_check_result.rb
index 06f8649f5..161e45189 100644
--- a/app/models/compliance_check_result.rb
+++ b/app/models/compliance_check_result.rb
@@ -1,3 +1,4 @@
-class ComplianceCheckResult
-
+class ComplianceCheckResult < ActiveRecord::Base
+ belongs_to :compliance_check
+ belongs_to :compliance_check_resource
end
diff --git a/app/models/compliance_check_set.rb b/app/models/compliance_check_set.rb
new file mode 100644
index 000000000..7b6400a21
--- /dev/null
+++ b/app/models/compliance_check_set.rb
@@ -0,0 +1,10 @@
+class ComplianceCheckSet < ActiveRecord::Base
+ extend Enumerize
+
+ belongs_to :referential
+ belongs_to :compliance_control_set
+ belongs_to :workbench
+ belongs_to :parent, polymorphic: true
+
+ enumerize :status, in: %w[new pending successful warning failed running aborted canceled]
+end
diff --git a/app/models/compliance_control.rb b/app/models/compliance_control.rb
new file mode 100644
index 000000000..64556b524
--- /dev/null
+++ b/app/models/compliance_control.rb
@@ -0,0 +1,9 @@
+class ComplianceControl < ActiveRecord::Base
+ belongs_to :compliance_control_set
+ belongs_to :compliance_control_block
+
+ enum criticity: [:info, :warning, :error]
+ validates :criticity, presence: true
+ validates :name, presence: true
+ validates :code, presence: true
+end
diff --git a/app/models/compliance_control_block.rb b/app/models/compliance_control_block.rb
new file mode 100644
index 000000000..cf5a9d72b
--- /dev/null
+++ b/app/models/compliance_control_block.rb
@@ -0,0 +1,3 @@
+class ComplianceControlBlock < ActiveRecord::Base
+ belongs_to :compliance_control_set
+end
diff --git a/app/models/compliance_control_set.rb b/app/models/compliance_control_set.rb
new file mode 100644
index 000000000..7801eb612
--- /dev/null
+++ b/app/models/compliance_control_set.rb
@@ -0,0 +1,3 @@
+class ComplianceControlSet < ActiveRecord::Base
+ belongs_to :organisation
+end
diff --git a/app/models/import.rb b/app/models/import.rb
index 55d74c13c..74f7ef10c 100644
--- a/app/models/import.rb
+++ b/app/models/import.rb
@@ -9,7 +9,9 @@ class Import < ActiveRecord::Base
has_many :resources, class_name: "ImportResource", dependent: :destroy
has_many :children, foreign_key: :parent_id, class_name: "Import", dependent: :destroy
- scope :started_on_date, ->(date) { where('started_at BETWEEN ? AND ?', date.beginning_of_day, date.end_of_day) }
+ scope :where_started_at_between, ->(start_date, end_date) do
+ where('started_at BETWEEN ? AND ?', start_date, end_date)
+ end
extend Enumerize
enumerize :status, in: %i(new pending successful warning failed running aborted canceled), scope: true, default: :new
@@ -19,10 +21,6 @@ class Import < ActiveRecord::Base
before_create :initialize_fields
- def self.ransackable_scopes(auth_object = nil)
- [:started_on_date]
- end
-
def self.model_name
ActiveModel::Name.new Import, Import, "Import"
end
diff --git a/app/models/import_message.rb b/app/models/import_message.rb
index 913f6fd41..5d0f5c862 100644
--- a/app/models/import_message.rb
+++ b/app/models/import_message.rb
@@ -1,6 +1,6 @@
class ImportMessage < ActiveRecord::Base
belongs_to :import
- belongs_to :resource, class_name: ImportResource, dependent: :destroy
+ belongs_to :resource, class_name: ImportResource
enum criticity: [:info, :warning, :error]
validates :criticity, presence: true
diff --git a/app/models/referential.rb b/app/models/referential.rb
index b508e2f33..af08aa868 100644
--- a/app/models/referential.rb
+++ b/app/models/referential.rb
@@ -11,6 +11,9 @@ class Referential < ActiveRecord::Base
# validates_presence_of :lower_corner
validates_uniqueness_of :slug
+
+ validates_presence_of :line_referential
+ validates_presence_of :stop_area_referential
validates_format_of :slug, :with => %r{\A[a-z][0-9a-z_]+\Z}
validates_format_of :prefix, :with => %r{\A[0-9a-zA-Z_]+\Z}
validates_format_of :upper_corner, :with => %r{\A-?[0-9]+\.?[0-9]*\,-?[0-9]+\.?[0-9]*\Z}
@@ -180,8 +183,7 @@ class Referential < ActiveRecord::Base
projection_type || ""
end
- before_validation :assign_line_and_stop_area_referential, :on => :create, if: :workbench, unless: :created_from
- before_validation :clone_associations, :on => :create, if: :created_from
+ before_validation :assign_line_and_stop_area_referential, :on => :create, if: :workbench
before_validation :assign_slug, :on => :create
before_validation :assign_prefix, :on => :create
before_create :create_schema
@@ -202,18 +204,6 @@ class Referential < ActiveRecord::Base
end
end
- def clone_associations
- self.line_referential = created_from.line_referential
- self.stop_area_referential = created_from.stop_area_referential
- self.workbench = created_from.workbench
- end
-
- def clone_metadatas
- created_from.metadatas.each do |meta|
- self.metadatas << ReferentialMetadata.new_from(meta)
- end
- end
-
def metadatas_period
query = "select min(lower), max(upper) from (select lower(unnest(periodes)) as lower, upper(unnest(periodes)) as upper from public.referential_metadata where public.referential_metadata.referential_id = #{id}) bounds;"
diff --git a/app/models/referential_metadata.rb b/app/models/referential_metadata.rb
index 839a937f4..393dc70d3 100644
--- a/app/models/referential_metadata.rb
+++ b/app/models/referential_metadata.rb
@@ -157,6 +157,7 @@ class ReferentialMetadata < ActiveRecord::Base
def self.new_from(from, functional_scope)
from.dup.tap do |metadata|
+ metadata.referential_source_id = from.referential_id
metadata.line_ids = from.referential.lines.where(id: metadata.line_ids, objectid: functional_scope).collect(&:id)
metadata.referential_id = nil
end
diff --git a/app/models/stop_area_copy.rb b/app/models/stop_area_copy.rb
index 0fa56ff68..d3eb78557 100644
--- a/app/models/stop_area_copy.rb
+++ b/app/models/stop_area_copy.rb
@@ -1,5 +1,3 @@
-# -*- coding: utf-8 -*-
-
class StopAreaCopy
include ActiveModel::Validations
include ActiveModel::Conversion