aboutsummaryrefslogtreecommitdiffstats
path: root/app/models
diff options
context:
space:
mode:
Diffstat (limited to 'app/models')
-rw-r--r--app/models/chouette/area_type.rb5
-rw-r--r--app/models/chouette/stop_area.rb12
-rw-r--r--app/models/compliance_control.rb2
-rw-r--r--app/models/import.rb1
-rw-r--r--app/models/referential.rb1
-rw-r--r--app/models/vehicle_journey_control/waiting_time.rb2
6 files changed, 20 insertions, 3 deletions
diff --git a/app/models/chouette/area_type.rb b/app/models/chouette/area_type.rb
index 33cbfbb48..43d96b391 100644
--- a/app/models/chouette/area_type.rb
+++ b/app/models/chouette/area_type.rb
@@ -1,4 +1,5 @@
class Chouette::AreaType
+ include Comparable
ALL = %i(zdep zder zdlp zdlr lda gdl).freeze
@@ -30,6 +31,10 @@ class Chouette::AreaType
@code = code
end
+ def <=>(other)
+ all.index(code) <=> all.index(other.code)
+ end
+
def label
I18n.translate code, scope: 'area_types.label'
end
diff --git a/app/models/chouette/stop_area.rb b/app/models/chouette/stop_area.rb
index 2f8d7c096..4f1359ff8 100644
--- a/app/models/chouette/stop_area.rb
+++ b/app/models/chouette/stop_area.rb
@@ -40,12 +40,20 @@ module Chouette
validates_format_of :url, :with => %r{\Ahttps?:\/\/([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?\Z}, :allow_nil => true, :allow_blank => true
validates_numericality_of :waiting_time, greater_than_or_equal_to: 0, only_integer: true, if: :waiting_time
+ validate :parent_area_type_must_be_greater
def self.nullable_attributes
[:registration_number, :street_name, :country_code, :fare_code,
:nearest_topic_name, :comment, :long_lat_type, :zip_code, :city_name, :url, :time_zone]
end
+ def parent_area_type_must_be_greater
+ return unless self.parent
+ if Chouette::AreaType.find(self.area_type) >= Chouette::AreaType.find(self.parent.area_type)
+ errors.add(:parent_id, I18n.t('stop_areas.errors.parent_area_type', area_type: self.parent.area_type))
+ end
+ end
+
after_update :clean_invalid_access_links
before_save :coordinates_to_lat_lng
@@ -74,6 +82,10 @@ module Chouette
end
end
+ def full_name
+ "#{name} #{zip_code} #{city_name} - #{user_objectid}"
+ end
+
def user_objectid
if objectid =~ /^.*:([0-9A-Za-z_-]+):STIF$/
$1
diff --git a/app/models/compliance_control.rb b/app/models/compliance_control.rb
index 3fcf26f5d..2bde5b95a 100644
--- a/app/models/compliance_control.rb
+++ b/app/models/compliance_control.rb
@@ -6,7 +6,7 @@ class ComplianceControl < ActiveRecord::Base
def prerequisite; I18n.t('compliance_controls.metas.no_prerequisite'); end
def predicate; I18n.t("compliance_controls.#{self.name.underscore}.description") end
def dynamic_attributes
- stored_attributes[:control_attributes]
+ stored_attributes[:control_attributes] || []
end
def policy_class
diff --git a/app/models/import.rb b/app/models/import.rb
index 19e835986..049a65f40 100644
--- a/app/models/import.rb
+++ b/app/models/import.rb
@@ -19,7 +19,6 @@ class Import < ActiveRecord::Base
validates :name, presence: true
validates :file, presence: true
validates_presence_of :workbench, :creator
- validates_format_of :file, with: %r{\.zip\z}i, message: I18n.t('activerecord.errors.models.import.attributes.file.wrong_file_extension')
before_create :initialize_fields
diff --git a/app/models/referential.rb b/app/models/referential.rb
index 122af65a1..8db009ebd 100644
--- a/app/models/referential.rb
+++ b/app/models/referential.rb
@@ -282,6 +282,7 @@ class Referential < ActiveRecord::Base
def detect_overlapped_referentials
self.class.where(id: overlapped_referential_ids).each do |referential|
+ Rails.logger.info "Referential #{referential.id} #{referential.metadatas.inspect} overlaps #{metadatas.inspect}"
errors.add :metadatas, I18n.t("referentials.errors.overlapped_referential", :referential => referential.name)
end
end
diff --git a/app/models/vehicle_journey_control/waiting_time.rb b/app/models/vehicle_journey_control/waiting_time.rb
index 252135f04..f2666cb72 100644
--- a/app/models/vehicle_journey_control/waiting_time.rb
+++ b/app/models/vehicle_journey_control/waiting_time.rb
@@ -2,7 +2,7 @@ module VehicleJourneyControl
class WaitingTime < ComplianceControl
store_accessor :control_attributes, :maximum
- validates :maximum, numericality: true, allow_nil: true
+ validates_numericality_of :maximum, allow_nil: true, greater_than_or_equal_to: 0
def self.default_code; "3-VehicleJourney-1" end
end