diff options
Diffstat (limited to 'app/models')
30 files changed, 101 insertions, 199 deletions
diff --git a/app/models/compliance_control.rb b/app/models/compliance_control.rb index 12ff4737a..c5389e832 100644 --- a/app/models/compliance_control.rb +++ b/app/models/compliance_control.rb @@ -1,12 +1,42 @@ class ComplianceControl < ActiveRecord::Base + extend Enumerize belongs_to :compliance_control_set - belongs_to :compliance_control_block + has_one :compliance_control_block, dependent: :destroy + accepts_nested_attributes_for :compliance_control_block + + @@default_criticity = :warning + @@default_code = "" - extend Enumerize enumerize :criticity, in: %i(info warning error), scope: true, default: :info validates :criticity, presence: true validates :name, presence: true validates :code, presence: true + validates :origin_code, presence: true validates :compliance_control_set, presence: true + + def self.policy_class + ComplianceControlPolicy + end + + def self.inherited(child) + child.instance_eval do + def model_name + ComplianceControl.model_name + end + end + super + end + + before_validation(on: :create) do + self.name ||= self.class.name + self.code ||= @@default_code + self.origin_code ||= @@default_code + self.criticity ||= @@default_criticity + end + end + +# Ensure STI subclasses are loaded +# http://guides.rubyonrails.org/autoloading_and_reloading_constants.html#autoloading-and-sti +require_dependency 'generic_attribute_control/min_max' diff --git a/app/models/compliance_control_block.rb b/app/models/compliance_control_block.rb index cf5a9d72b..a08e271f6 100644 --- a/app/models/compliance_control_block.rb +++ b/app/models/compliance_control_block.rb @@ -1,3 +1,16 @@ class ComplianceControlBlock < ActiveRecord::Base belongs_to :compliance_control_set + belongs_to :compliance_control + + before_save :set_compliance_control_set + + hstore_accessor :condition_attributes, transport_mode: :string + + def set_compliance_control_set + self.compliance_control_set = self.compliance_control.compliance_control_set + end + + def self.transport_modes + ["all"] + StifTransportModeEnumerations.transport_mode.values + end end diff --git a/app/models/compliance_control_set.rb b/app/models/compliance_control_set.rb index 4dafd48c7..f8f491cba 100644 --- a/app/models/compliance_control_set.rb +++ b/app/models/compliance_control_set.rb @@ -1,11 +1,9 @@ class ComplianceControlSet < ActiveRecord::Base belongs_to :organisation - has_many :compliance_controls + has_many :compliance_controls, dependent: :destroy validates :name, presence: true - scope :where_updated_at_between, ->(start_date, end_date) do where('updated_at BETWEEN ? AND ?', start_date, end_date) end - end diff --git a/app/models/generic_attribute_control/min_max.rb b/app/models/generic_attribute_control/min_max.rb new file mode 100644 index 000000000..6a2e1f284 --- /dev/null +++ b/app/models/generic_attribute_control/min_max.rb @@ -0,0 +1,17 @@ +module GenericAttributeControl + class MinMax < ComplianceControl + hstore_accessor :control_attributes, minimum: :integer, maximum: :integer + + @@default_criticity = :warning + @@default_code = "3-Generic-2" + + validate :min_max_values + def min_max_values + true + end + + def self.dynamic_attributes + self.hstore_metadata_for_control_attributes.keys + end + end +end diff --git a/app/models/generic_attribute_control/pattern.rb b/app/models/generic_attribute_control/pattern.rb new file mode 100644 index 000000000..5b27da54e --- /dev/null +++ b/app/models/generic_attribute_control/pattern.rb @@ -0,0 +1,13 @@ +module GenericAttributeControl + class Pattern < ComplianceControl + hstore_accessor :control_attributes, value: :string, pattern: :string + + @@default_criticity = :warning + @@default_code = "3-Generic-3" + + validate :pattern_match + def pattern_match + true + end + end +end
\ No newline at end of file diff --git a/app/models/generic_attribute_control/uniqueness.rb b/app/models/generic_attribute_control/uniqueness.rb new file mode 100644 index 000000000..4f1a82083 --- /dev/null +++ b/app/models/generic_attribute_control/uniqueness.rb @@ -0,0 +1,13 @@ +module GenericAttributeControl + class Uniqueness < ComplianceControl + hstore_accessor :control_attributes, name: :string + + @@default_criticity = :warning + @@default_code = "3-Generic-3" + + validate :unique_values + def unique_values + true + end + end +end
\ No newline at end of file diff --git a/app/models/generic_attribute_min_max.rb b/app/models/generic_attribute_min_max.rb deleted file mode 100644 index e9a127c56..000000000 --- a/app/models/generic_attribute_min_max.rb +++ /dev/null @@ -1,27 +0,0 @@ -#module ComplianceControls - - class GenericAttributeMinMax < ComplianceControl - - - hstore_accessor :control_attributes, minimum: :integer, maximum: :integer - #attribute :minimum, type: :integer, optionnal: true - #attribute :maximum, type: :integer, optionnal: true - # #attribute :target, type: ModelAttribute - - @@default_criticity = :warning - @@default_code = "3-Generic-2" - - validate :min_max_values - def min_max_values - true - end - - after_initialize do - self.name = 'GenericAttributeMinMax' - self.code = @@default_code - self.criticity = @@default_criticity - end - - end - -#end diff --git a/app/models/generic_attribute_pattern.rb b/app/models/generic_attribute_pattern.rb deleted file mode 100644 index 0043f1563..000000000 --- a/app/models/generic_attribute_pattern.rb +++ /dev/null @@ -1,23 +0,0 @@ -#module ComplianceControls - - class GenericAttributePattern < ComplianceControl - - hstore_accessor :control_attributes, value: :string, pattern: :string - - @@default_criticity = :warning - @@default_code = "3-Generic-3" - - validate :pattern_match - def pattern_match - true - end - - after_initialize do - self.name = 'GenericAttributeMinMax' - self.code = @@default_code - self.criticity = @@default_criticity - end - - end - -#end
\ No newline at end of file diff --git a/app/models/generic_attribute_uniqueness.rb b/app/models/generic_attribute_uniqueness.rb deleted file mode 100644 index dcf4a16c2..000000000 --- a/app/models/generic_attribute_uniqueness.rb +++ /dev/null @@ -1,23 +0,0 @@ -#module ComplianceControls - - class GenericAttributeUniqueness < ComplianceControl - - hstore_accessor :control_attributes, name: :string - - @@default_criticity = :warning - @@default_code = "3-Generic-3" - - validate :unique_values - def unique_values - true - end - - after_initialize do - self.name = 'GenericAttributeMinMax' - self.code = @@default_code - self.criticity = @@default_criticity - end - - end - -#end
\ No newline at end of file diff --git a/app/models/journey_pattern_control/duplicates.rb b/app/models/journey_pattern_control/duplicates.rb index 78ca07e90..d3908cfc0 100644 --- a/app/models/journey_pattern_control/duplicates.rb +++ b/app/models/journey_pattern_control/duplicates.rb @@ -3,11 +3,5 @@ module JourneyPatternControl @@default_criticity = :warning @@default_code = "3-JourneyPattern-1" - - after_initialize do - self.name = self.class.name - self.code = @@default_code - self.criticity = @@default_criticity - end end end diff --git a/app/models/journey_pattern_control/vehicle_journey.rb b/app/models/journey_pattern_control/vehicle_journey.rb index a90c16138..d7151f147 100644 --- a/app/models/journey_pattern_control/vehicle_journey.rb +++ b/app/models/journey_pattern_control/vehicle_journey.rb @@ -3,11 +3,5 @@ module JourneyPatternControl @@default_criticity = :warning @@default_code = "3-JourneyPattern-2" - - after_initialize do - self.name = self.class.name - self.code = @@default_code - self.criticity = @@default_criticity - end end end
\ No newline at end of file diff --git a/app/models/line_control/route.rb b/app/models/line_control/route.rb index 8ac13a080..21c5eca06 100644 --- a/app/models/line_control/route.rb +++ b/app/models/line_control/route.rb @@ -3,11 +3,5 @@ module LineControl @@default_criticity = :warning @@default_code = "3-Line-1" - - after_initialize do - self.name = self.class.name - self.code = @@default_code - self.criticity = @@default_criticity - end end end
\ No newline at end of file diff --git a/app/models/route_control/duplicates.rb b/app/models/route_control/duplicates.rb index 379d7cf98..fb9c34e0a 100644 --- a/app/models/route_control/duplicates.rb +++ b/app/models/route_control/duplicates.rb @@ -3,11 +3,5 @@ module RouteControl @@default_criticity = :warning @@default_code = "3-Route-4" - - after_initialize do - self.name = self.class.name - self.code = @@default_code - self.criticity = @@default_criticity - end end end diff --git a/app/models/route_control/journey_pattern.rb b/app/models/route_control/journey_pattern.rb index 0559fac42..08f603d8f 100644 --- a/app/models/route_control/journey_pattern.rb +++ b/app/models/route_control/journey_pattern.rb @@ -3,11 +3,5 @@ module RouteControl @@default_criticity = :warning @@default_code = "3-Route-3" - - after_initialize do - self.name = self.class.name - self.code = @@default_code - self.criticity = @@default_criticity - end end end
\ No newline at end of file diff --git a/app/models/route_control/minimum_length.rb b/app/models/route_control/minimum_length.rb index 14bc7064f..f42b88748 100644 --- a/app/models/route_control/minimum_length.rb +++ b/app/models/route_control/minimum_length.rb @@ -3,11 +3,5 @@ module RouteControl @@default_criticity = :error @@default_code = "3-Route-6" - - after_initialize do - self.name = self.class.name - self.code = @@default_code - self.criticity = @@default_criticity - end end end diff --git a/app/models/route_control/omnibus_journey_pattern.rb b/app/models/route_control/omnibus_journey_pattern.rb index 2f09ff735..3b9f6d06f 100644 --- a/app/models/route_control/omnibus_journey_pattern.rb +++ b/app/models/route_control/omnibus_journey_pattern.rb @@ -3,11 +3,5 @@ module RouteControl @@default_criticity = :warning @@default_code = "3-Route-9" - - after_initialize do - self.name = self.class.name - self.code = @@default_code - self.criticity = @@default_criticity - end end end diff --git a/app/models/route_control/opposite_route.rb b/app/models/route_control/opposite_route.rb index d5f2bc59e..e91b081e2 100644 --- a/app/models/route_control/opposite_route.rb +++ b/app/models/route_control/opposite_route.rb @@ -3,12 +3,5 @@ module RouteControl @@default_criticity = :error @@default_code = "3-Route-2" - - after_initialize do - self.name = self.class.name - self.code = @@default_code - self.criticity = @@default_criticity - end - end end diff --git a/app/models/route_control/opposite_route_terminus.rb b/app/models/route_control/opposite_route_terminus.rb index e72229ca3..fd62b7684 100644 --- a/app/models/route_control/opposite_route_terminus.rb +++ b/app/models/route_control/opposite_route_terminus.rb @@ -3,11 +3,5 @@ module RouteControl @@default_criticity = :warning @@default_code = "3-Route-5" - - after_initialize do - self.name = self.class.name - self.code = @@default_code - self.criticity = @@default_criticity - end end end
\ No newline at end of file diff --git a/app/models/route_control/speed.rb b/app/models/route_control/speed.rb index fb07b5c87..0a2b6ac76 100644 --- a/app/models/route_control/speed.rb +++ b/app/models/route_control/speed.rb @@ -5,11 +5,5 @@ module VehicleJourneyControl @@default_criticity = :warning @@default_code = "3-VehicleJourney-2" - - after_initialize do - self.name = self.class.name - self.code = @@default_code - self.criticity = @@default_criticity - end end end diff --git a/app/models/route_control/stop_points_in_journey_pattern.rb b/app/models/route_control/stop_points_in_journey_pattern.rb index 195257a4a..dced6c005 100644 --- a/app/models/route_control/stop_points_in_journey_pattern.rb +++ b/app/models/route_control/stop_points_in_journey_pattern.rb @@ -3,11 +3,5 @@ module RouteControl @@default_criticity = :error @@default_code = "3-Route-6" - - after_initialize do - self.name = self.class.name - self.code = @@default_code - self.criticity = @@default_criticity - end end end diff --git a/app/models/route_control/time_table.rb b/app/models/route_control/time_table.rb index 911807ba9..5d0f21b40 100644 --- a/app/models/route_control/time_table.rb +++ b/app/models/route_control/time_table.rb @@ -3,11 +3,5 @@ module VehicleJourneyControl @@default_criticity = :error @@default_code = "3-VehicleJourney-4" - - after_initialize do - self.name = self.class.name - self.code = @@default_code - self.criticity = @@default_criticity - end end end diff --git a/app/models/route_control/unactivated_stop_points.rb b/app/models/route_control/unactivated_stop_points.rb index 8ab680490..dee846cbb 100644 --- a/app/models/route_control/unactivated_stop_points.rb +++ b/app/models/route_control/unactivated_stop_points.rb @@ -3,11 +3,5 @@ module RouteControl @@default_criticity = :warning @@default_code = "3-Route-10" - - after_initialize do - self.name = self.class.name - self.code = @@default_code - self.criticity = @@default_criticity - end end end diff --git a/app/models/route_control/vehicle_journey_at_stops.rb b/app/models/route_control/vehicle_journey_at_stops.rb index 02a43fb10..149282fe6 100644 --- a/app/models/route_control/vehicle_journey_at_stops.rb +++ b/app/models/route_control/vehicle_journey_at_stops.rb @@ -3,11 +3,5 @@ module VehicleJourneyControl @@default_criticity = :error @@default_code = "3-VehicleJourney-5" - - after_initialize do - self.name = self.class.name - self.code = @@default_code - self.criticity = @@default_criticity - end end end diff --git a/app/models/route_control/zdl_stop_area.rb b/app/models/route_control/zdl_stop_area.rb index 4561c9b2e..088a1d2f2 100644 --- a/app/models/route_control/zdl_stop_area.rb +++ b/app/models/route_control/zdl_stop_area.rb @@ -3,11 +3,5 @@ module RouteControl @@default_criticity = :warning @@default_code = "3-Route-1" - - after_initialize do - self.name = self.class.name - self.code = @@default_code - self.criticity = @@default_criticity - end end end diff --git a/app/models/routing_constaint_zone_control/maximum_length.rb b/app/models/routing_constaint_zone_control/maximum_length.rb index fd63ffeda..4d289de63 100644 --- a/app/models/routing_constaint_zone_control/maximum_length.rb +++ b/app/models/routing_constaint_zone_control/maximum_length.rb @@ -3,11 +3,5 @@ module RoutingConstaintZoneControl @@default_criticity = :warning @@default_code = "3-ITL-2" - - after_initialize do - self.name = self.class.name - self.code = @@default_code - self.criticity = @@default_criticity - end end end
\ No newline at end of file diff --git a/app/models/routing_constaint_zone_control/minimum_length.rb b/app/models/routing_constaint_zone_control/minimum_length.rb index c17bbc834..28f0791a7 100644 --- a/app/models/routing_constaint_zone_control/minimum_length.rb +++ b/app/models/routing_constaint_zone_control/minimum_length.rb @@ -3,11 +3,5 @@ module RoutingConstaintZoneControl @@default_criticity = :warning @@default_code = "3-ITL-3" - - after_initialize do - self.name = self.class.name - self.code = @@default_code - self.criticity = @@default_criticity - end end end
\ No newline at end of file diff --git a/app/models/routing_constaint_zone_control/unactivated_stop_point.rb b/app/models/routing_constaint_zone_control/unactivated_stop_point.rb index 92a1d1a58..fe5381a34 100644 --- a/app/models/routing_constaint_zone_control/unactivated_stop_point.rb +++ b/app/models/routing_constaint_zone_control/unactivated_stop_point.rb @@ -3,11 +3,5 @@ module RoutingConstaintZoneControl @@default_criticity = :warning @@default_code = "3-ITL-1" - - after_initialize do - self.name = self.class.name - self.code = @@default_code - self.criticity = @@default_criticity - end end end diff --git a/app/models/vechicle_journey_control/delta.rb b/app/models/vechicle_journey_control/delta.rb index d4e1e6eca..d77eff48a 100644 --- a/app/models/vechicle_journey_control/delta.rb +++ b/app/models/vechicle_journey_control/delta.rb @@ -5,11 +5,5 @@ module VehicleJourneyControl @@default_criticity = :warning @@default_code = "3-VehicleJourney-3" - - after_initialize do - self.name = self.class.name - self.code = @@default_code - self.criticity = @@default_criticity - end end end diff --git a/app/models/vechicle_journey_control/waiting_time.rb b/app/models/vechicle_journey_control/waiting_time.rb index a7e90b6ac..cbffa5526 100644 --- a/app/models/vechicle_journey_control/waiting_time.rb +++ b/app/models/vechicle_journey_control/waiting_time.rb @@ -3,11 +3,5 @@ module VehicleJourneyControl @@default_criticity = :warning @@default_code = "3-VehicleJourney-1" - - after_initialize do - self.name = self.class.name - self.code = @@default_code - self.criticity = @@default_criticity - end end end diff --git a/app/models/workbench.rb b/app/models/workbench.rb index 30692e625..fe4e6cce1 100644 --- a/app/models/workbench.rb +++ b/app/models/workbench.rb @@ -2,6 +2,7 @@ class Workbench < ActiveRecord::Base belongs_to :organisation belongs_to :line_referential belongs_to :stop_area_referential + belongs_to :output, class_name: 'ReferentialSuite' has_many :lines, -> (workbench) { Stif::MyWorkbenchScopes.new(workbench).line_scope(self) }, through: :line_referential has_many :networks, through: :line_referential @@ -13,10 +14,13 @@ class Workbench < ActiveRecord::Base validates :name, presence: true validates :organisation, presence: true + validates :output, presence: true has_many :referentials has_many :referential_metadatas, through: :referentials, source: :metadatas + before_validation :initialize_output + def all_referentials if line_ids.empty? @@ -26,4 +30,12 @@ class Workbench < ActiveRecord::Base end end + private + + def initialize_output + # Don't reset `output` if it's already initialised + return if !output.nil? + + self.output = ReferentialSuite.create + end end |
