diff options
| author | Luc Donnet | 2017-10-14 18:22:45 +0200 |
|---|---|---|
| committer | Luc Donnet | 2017-10-14 18:23:16 +0200 |
| commit | 584bc2b59ecf95ee1021596e8f3583d9af97a5a7 (patch) | |
| tree | d68bc9fefb0102c92e501f9b541987125dc94f29 | |
| parent | 16e9fe5e4e75f2df98f0da371062d572fa45a48b (diff) | |
| download | chouette-core-584bc2b59ecf95ee1021596e8f3583d9af97a5a7.tar.bz2 | |
Fix translations for compliance_control type translation, compliance_control validation, compliance_control module
24 files changed, 118 insertions, 82 deletions
diff --git a/app/controllers/compliance_controls_controller.rb b/app/controllers/compliance_controls_controller.rb index d7d84afb3..6fe799267 100644 --- a/app/controllers/compliance_controls_controller.rb +++ b/app/controllers/compliance_controls_controller.rb @@ -7,26 +7,42 @@ class ComplianceControlsController < BreadcrumbController end def new - if params[:sti_class] - @compliance_control_set = parent - @compliance_control = params[:sti_class].constantize.new - else + if params[:sti_class].blank? + flash[:notice] = I18n.t("compliance_controls.errors.mandatory_control_type") redirect_to(action: :select_type) end + new! end def create - create! { compliance_control_set_path(parent) } + create! do |success, failure| + success.html { redirect_to compliance_control_set_path(parent) } + failure.html { render( :action => 'new' ) } + end + end + + protected + + alias_method :compliance_control_set, :parent + alias_method :compliance_control, :resource + + def build_resource + @compliance_control ||= compliance_control_class.new compliance_control_set: parent end private + + def compliance_control_class + (params[:sti_class] || params[:compliance_control][:type]).constantize + end + def dynamic_attributes_params - params.require(:compliance_control).permit(:type).values[0].constantize.dynamic_attributes + compliance_control_class.dynamic_attributes end def compliance_control_params base = [:name, :code, :origin_code, :criticity, :comment, :control_attributes, :type, :compliance_control_block_id] - permited = base + dynamic_attributes_params - params.require(:compliance_control).permit(permited) + permitted = base + dynamic_attributes_params + params.require(:compliance_control).permit(permitted) end end diff --git a/app/models/compliance_control.rb b/app/models/compliance_control.rb index 363ef5d61..bfbc075c6 100644 --- a/app/models/compliance_control.rb +++ b/app/models/compliance_control.rb @@ -44,10 +44,11 @@ class ComplianceControl < ActiveRecord::Base end end - before_validation(on: :create) do - self.name ||= self.class.name - self.code ||= self.class.default_code - self.origin_code ||= self.class.default_code + def initialize(attributes = {}) + super + self.name ||= I18n.t("activerecord.models.#{self.class.name.underscore}.one") + self.code ||= self.class.default_code + self.origin_code ||= self.class.default_code end end @@ -67,9 +68,7 @@ require_dependency 'route_control/omnibus_journey_pattern' require_dependency 'route_control/opposite_route_terminus' require_dependency 'route_control/opposite_route' require_dependency 'route_control/stop_points_in_journey_pattern' -require_dependency 'route_control/time_table' require_dependency 'route_control/unactivated_stop_points' -require_dependency 'route_control/vehicle_journey_at_stops' require_dependency 'route_control/zdl_stop_area' require_dependency 'routing_constraint_zone_control/maximum_length' require_dependency 'routing_constraint_zone_control/minimum_length' @@ -77,3 +76,5 @@ require_dependency 'routing_constraint_zone_control/unactivated_stop_point' require_dependency 'vehicle_journey_control/delta' require_dependency 'vehicle_journey_control/waiting_time' require_dependency 'vehicle_journey_control/speed' +require_dependency 'vehicle_journey_control/time_table' +require_dependency 'vehicle_journey_control/vehicle_journey_at_stops' diff --git a/app/models/generic_attribute_control/min_max.rb b/app/models/generic_attribute_control/min_max.rb index 876f56eed..c46ba0453 100644 --- a/app/models/generic_attribute_control/min_max.rb +++ b/app/models/generic_attribute_control/min_max.rb @@ -2,6 +2,9 @@ module GenericAttributeControl class MinMax < ComplianceControl hstore_accessor :control_attributes, minimum: :integer, maximum: :integer, target: :string + validates :minimum, numericality: true, allow_nil: true + validates :maximum, numericality: true, allow_nil: true + #validates :target, presence: true validate :min_max_values def min_max_values true diff --git a/app/models/generic_attribute_control/pattern.rb b/app/models/generic_attribute_control/pattern.rb index 6796da84f..d59f211dc 100644 --- a/app/models/generic_attribute_control/pattern.rb +++ b/app/models/generic_attribute_control/pattern.rb @@ -2,15 +2,13 @@ module GenericAttributeControl class Pattern < ComplianceControl hstore_accessor :control_attributes, pattern: :string, target: :string - validate :pattern_match - def pattern_match - true - end + #validates :target, presence: true + #validates :pattern, presence: true class << self def attribute_type; :string end def default_criticity; :warning end - def default_code; "3-Generic-3" end + def default_code; "3-Generic-1" end end end end diff --git a/app/models/generic_attribute_control/uniqueness.rb b/app/models/generic_attribute_control/uniqueness.rb index f227bf8b6..dbedcd858 100644 --- a/app/models/generic_attribute_control/uniqueness.rb +++ b/app/models/generic_attribute_control/uniqueness.rb @@ -2,10 +2,7 @@ module GenericAttributeControl class Uniqueness < ComplianceControl hstore_accessor :control_attributes, target: :string - validate :unique_values - def unique_values - true - end + #validates :target, presence: true class << self def attribute_type; :string end diff --git a/app/models/vehicle_journey_control/delta.rb b/app/models/vehicle_journey_control/delta.rb index 7be0db261..1f3a4d492 100644 --- a/app/models/vehicle_journey_control/delta.rb +++ b/app/models/vehicle_journey_control/delta.rb @@ -3,6 +3,8 @@ module VehicleJourneyControl hstore_accessor :control_attributes, maximum: :integer + validates :maximum, numericality: true, allow_nil: true + def self.default_code; "3-VehicleJourney-3" end end end diff --git a/app/models/vehicle_journey_control/speed.rb b/app/models/vehicle_journey_control/speed.rb index cc46ee1f9..099a46d1d 100644 --- a/app/models/vehicle_journey_control/speed.rb +++ b/app/models/vehicle_journey_control/speed.rb @@ -2,6 +2,9 @@ module VehicleJourneyControl class Speed < ComplianceControl hstore_accessor :control_attributes, minimum: :integer, maximum: :integer + validates :minimum, numericality: true, allow_nil: true + validates :maximum, numericality: true, allow_nil: true + def self.default_code; "3-VehicleJourney-2" end end end diff --git a/app/models/route_control/time_table.rb b/app/models/vehicle_journey_control/time_table.rb index 069cd0a9e..617ead12b 100644 --- a/app/models/route_control/time_table.rb +++ b/app/models/vehicle_journey_control/time_table.rb @@ -1,4 +1,4 @@ -module RouteControl +module VehicleJourneyControl class TimeTable < ComplianceControl def self.default_code; "3-VehicleJourney-4" end diff --git a/app/models/route_control/vehicle_journey_at_stops.rb b/app/models/vehicle_journey_control/vehicle_journey_at_stops.rb index 7c376a2da..47ee26f82 100644 --- a/app/models/route_control/vehicle_journey_at_stops.rb +++ b/app/models/vehicle_journey_control/vehicle_journey_at_stops.rb @@ -1,4 +1,4 @@ -module RouteControl +module VehicleJourneyControl class VehicleJourneyAtStops < ComplianceControl def self.default_code; "3-VehicleJourney-5" end diff --git a/app/models/vehicle_journey_control/waiting_time.rb b/app/models/vehicle_journey_control/waiting_time.rb index da35bc4a1..68fccb5c1 100644 --- a/app/models/vehicle_journey_control/waiting_time.rb +++ b/app/models/vehicle_journey_control/waiting_time.rb @@ -2,6 +2,8 @@ module VehicleJourneyControl class WaitingTime < ComplianceControl hstore_accessor :control_attributes, maximum: :integer + validates :maximum, numericality: true, allow_nil: true + def self.default_code; "3-VehicleJourney-1" end end end diff --git a/app/views/compliance_controls/_form.html.slim b/app/views/compliance_controls/_form.html.slim index 8c56d145f..1ebbe8802 100644 --- a/app/views/compliance_controls/_form.html.slim +++ b/app/views/compliance_controls/_form.html.slim @@ -2,14 +2,14 @@ .row .col-lg-12 = f.input :name - = f.input :type, as: :select, collection: ComplianceControl.subclasses, disabled: true + = f.input :type, as: :hidden = f.input :code = f.input :criticity = f.association :compliance_control_block, collection: @compliance_control_set.compliance_control_blocks, label_method: :label_method = f.input :comment - f.object.class.dynamic_attributes.each do |attribute| - if attribute == :target - = f.input :target, as: :grouped_select, collection: ModelAttribute.grouped_options(@compliance_control.class.attribute_type), :group_method => :last + = f.input :target, as: :grouped_select, collection: ModelAttribute.grouped_options(@compliance_control.class.attribute_type), group_method: :last, include_blank: false - else = f.input attribute.to_sym end diff --git a/app/views/compliance_controls/select_type.html.slim b/app/views/compliance_controls/select_type.html.slim index 72ac41dc9..a4ae1ed27 100644 --- a/app/views/compliance_controls/select_type.html.slim +++ b/app/views/compliance_controls/select_type.html.slim @@ -12,7 +12,7 @@ = form_tag(new_compliance_control_set_compliance_control_path, method: :get) do - @sti_subclasses.each do |klass| .radio - = radio_button_tag(:sti_class, klass) - = I18n.t("activerecord.models.#{klass.name.underscore}.one") + = radio_button_tag(:sti_class, klass, @sti_subclasses.first) + = "#{klass.default_code} - #{I18n.t("activerecord.models.#{klass.name.underscore}.one")}" .text-right = submit_tag t('compliance_control_sets.actions.loaded'), class: "btn btn-outline-primary" diff --git a/app/views/compliance_controls/show.html.slim b/app/views/compliance_controls/show.html.slim index 7affcf2a3..2cf8051fc 100644 --- a/app/views/compliance_controls/show.html.slim +++ b/app/views/compliance_controls/show.html.slim @@ -16,8 +16,8 @@ ComplianceControl.human_attribute_name(:comment) => @compliance_control.comment, }.merge( \ {}.tap do |hash| \ - @compliance_control.control_attributes.each do |k, v| \ - hash[ComplianceControl.human_attribute_name(k)] = v \ + @compliance_control.class.dynamic_attributes.each do |attribute| \ + hash[ComplianceControl.human_attribute_name(attribute)] = @compliance_control.send(attribute) \ end \ end \ ) diff --git a/config/initializers/apartment.rb b/config/initializers/apartment.rb index 9954c9b3e..1c951317a 100644 --- a/config/initializers/apartment.rb +++ b/config/initializers/apartment.rb @@ -62,9 +62,7 @@ Apartment.configure do |config| 'RouteControl::OppositeRouteTerminus', 'RouteControl::OppositeRoute', 'RouteControl::StopPointsInJourneyPattern', - 'RouteControl::TimeTable', 'RouteControl::UnactivatedStopPoints', - 'RouteControl::VehicleJourneyAtStops', 'RouteControl::ZDLStopArea', 'RoutingConstraintZoneControl::MaximumLength', 'RoutingConstraintZoneControl::MinimumLength', @@ -72,6 +70,8 @@ Apartment.configure do |config| 'VehicleJourneyControl::Delta', 'VehicleJourneyControl::WaitingTime', 'VehicleJourneyControl::Speed', + 'VehicleJourneyControl::TimeTable', + 'VehicleJourneyControl::VehicleJourneyAtStops', 'ComplianceControlSet', 'ComplianceControlBlock', 'ComplianceCheck', diff --git a/config/locales/compliance_controls.fr.yml b/config/locales/compliance_controls.fr.yml index 00a78899c..8a55743f2 100644 --- a/config/locales/compliance_controls.fr.yml +++ b/config/locales/compliance_controls.fr.yml @@ -2,6 +2,7 @@ fr: compliance_controls: errors: incoherent_control_sets: "Le contrôle ne peut pas être associé à un jeu de contrôle (id: %{direct_set_name}) différent de celui de son groupe (id: %{indirect_set_name})" + mandatory_control_type: "Un type de contrôle doit être sélectionné" show: title: "Jeu de controle" index: @@ -21,6 +22,8 @@ fr: "Si l'itinéraire référence un itinéraire inverse, celui-ci doit : - référencer l'itinéraire inverse - avoir un sens opposé à l'itinéraire testé" + route_control/stop_points_in_journey_pattern: + zeze: "" route_control: journey_pattern: messages: @@ -116,49 +119,53 @@ fr: one: "controle" other: "contrôles" route_control/zdl_stop_area: - one: "" + one: "Deux arrêts d’une même ZDL ne peuvent pas se succéder dans un itinéraire" route_control/opposite_route: - one: "" + one: "Vérification de l'itinéraire inverse" route_control/journey_pattern: - one: + one: "Présence de missions" route_control/duplicates: - one: "" + one: "Détection de double définition d'itinéraire" route_control/opposite_route_terminus: - one: "" + one: "Vérification des terminus de l'itinéraire inverse" route_control/minimum_length: - one: "" + one: "Un itinéraire doit contenir au moins 2 arrêts" route_control/omnibus_journey_pattern: - one: "" - route_control/unactivated_stop_point: - one: "" + one: "Existence d’une mission passant par tous les arrêts de l'itinéraire" + route_control/unactivated_stop_points: + one: "Itinéraire & arrêt désactivé" + route_control/stop_points_in_journey_pattern: + one: "Un itinéraire doit contenir au moins 2 arrêts" journey_pattern_control/duplicates: - one: "" + one: "Doublon de missions dans une ligne" journey_pattern_control/vehicle_journey: - one: "" + one: "Présence de courses" vehicle_journey_control/waiting_time: - one: "" + one: "La durée d’attente à un arrêt ne doit pas être trop grande" vehicle_journey_control/speed: - one: "" + one: "La vitesse entre deux arrêts doit être dans une fourchette paramétrable" vehicle_journey_control/delta: - one: "" + one: "Les vitesses entre 2 arrêts doivent être similaires pour toutes les courses d’une même mission" vehicle_journey_control/time_table: - one: "" + one: "Une course doit avoir au moins un calendrier d’application" vehicle_journey_control/vehicle_journey_at_stops: - one: "" + one: "Chronologie croissante des horaires" routing_constraint_zone_control/vehicle_journey_at_stops: - one: "" + one: "Chronologie croissante des horaires" routing_constraint_zone_control/maximum_length: - one: "" + one: "Couverture de l'itinéraire" routing_constraint_zone_control/minimum_length: - one: "" + one: "Définition minimale d'une ITL" + routing_constraint_zone_control/unactivated_stop_point: + one: "ITL & arret désactivé" line_control/route: - one: "" - generic_attribute_control/content: - one: "" + one: "Appariement des itinéraires" + generic_attribute_control/pattern: + one: "Contrôle du contenu selon un pattern" generic_attribute_control/min_max: - one: "" + one: "Valeur min, max de champs numériques" generic_attribute_control/uniqueness: - one: "" + one: "Unicité d'un attribut d'un objet dans une ligne" attributes: compliance_control: diff --git a/lib/model_attribute.rb b/lib/model_attribute.rb index 33f6c80aa..872c00152 100644 --- a/lib/model_attribute.rb +++ b/lib/model_attribute.rb @@ -12,7 +12,7 @@ class ModelAttribute el[I18n.t("activerecord.models.#{key}.one")] = values.map do |i| [ I18n.t("activerecord.attributes.#{i.klass}.#{i.name}"), - "#{i.klass}.#{i.name}" + "#{i.klass}\##{i.name}" ] end end diff --git a/spec/factories/compliance_controls/route_control_factories.rb b/spec/factories/compliance_controls/route_control_factories.rb index 763a197ee..1462ca635 100644 --- a/spec/factories/compliance_controls/route_control_factories.rb +++ b/spec/factories/compliance_controls/route_control_factories.rb @@ -35,12 +35,4 @@ FactoryGirl.define do factory :route_control_zdl_stop_area, class: 'RouteControl::ZDLStopArea' do association :compliance_control_set end - - factory :route_control_time_table, class: 'RouteControl::TimeTable' do - association :compliance_control_set - end - - factory :route_control_control_vehicle_journey_at_stops, class: 'RouteControl::VehicleJourneyAtStops' do - association :compliance_control_set - end end diff --git a/spec/factories/compliance_controls/vehicle_journey_control_factories.rb b/spec/factories/compliance_controls/vehicle_journey_control_factories.rb index 3775624db..b9da530fb 100644 --- a/spec/factories/compliance_controls/vehicle_journey_control_factories.rb +++ b/spec/factories/compliance_controls/vehicle_journey_control_factories.rb @@ -11,4 +11,12 @@ FactoryGirl.define do factory :vehicle_journey_control_speed, class: 'VehicleJourneyControl::Speed' do association :compliance_control_set end + + factory :vehicle_journey_control_time_table, class: 'VehicleJourneyControl::TimeTable' do + association :compliance_control_set + end + + factory :vehicle_journey_control_vehicle_journey_at_stops, class: 'VehicleJourneyControl::VehicleJourneyAtStops' do + association :compliance_control_set + end end diff --git a/spec/models/compliance_control_class_level_defaults/generic_attribute_control/pattern_cccld_spec.rb b/spec/models/compliance_control_class_level_defaults/generic_attribute_control/pattern_cccld_spec.rb index 850cd1d76..9610cc796 100644 --- a/spec/models/compliance_control_class_level_defaults/generic_attribute_control/pattern_cccld_spec.rb +++ b/spec/models/compliance_control_class_level_defaults/generic_attribute_control/pattern_cccld_spec.rb @@ -1,7 +1,7 @@ RSpec.describe GenericAttributeControl::Pattern, type: :model do - let( :default_code ){ "3-Generic-3" } + let( :default_code ){ "3-Generic-1" } let( :factory ){ :generic_attribute_control_pattern } - it_behaves_like 'ComplianceControl Class Level Defaults' + it_behaves_like 'ComplianceControl Class Level Defaults' end diff --git a/spec/models/compliance_control_class_level_defaults/route_control/time_table_cccld_spec.rb b/spec/models/compliance_control_class_level_defaults/route_control/time_table_cccld_spec.rb deleted file mode 100644 index cbe14e4a7..000000000 --- a/spec/models/compliance_control_class_level_defaults/route_control/time_table_cccld_spec.rb +++ /dev/null @@ -1,7 +0,0 @@ - -RSpec.describe RouteControl::TimeTable, type: :model do - let( :default_code ){ "3-VehicleJourney-4" } - let( :factory ){ :route_control_time_table } - - it_behaves_like 'ComplianceControl Class Level Defaults' -end diff --git a/spec/models/compliance_control_class_level_defaults/route_control/vehicle_journey_at_stops_cccld_spec.rb b/spec/models/compliance_control_class_level_defaults/route_control/vehicle_journey_at_stops_cccld_spec.rb deleted file mode 100644 index 1268dbc98..000000000 --- a/spec/models/compliance_control_class_level_defaults/route_control/vehicle_journey_at_stops_cccld_spec.rb +++ /dev/null @@ -1,7 +0,0 @@ - -RSpec.describe RouteControl::VehicleJourneyAtStops, type: :model do - let( :default_code ){ "3-VehicleJourney-5" } - let( :factory ){ :route_control_control_vehicle_journey_at_stops } - - it_behaves_like 'ComplianceControl Class Level Defaults' -end diff --git a/spec/models/compliance_control_class_level_defaults/vehicle_journey_control/speed_cccld_spec.rb b/spec/models/compliance_control_class_level_defaults/vehicle_journey_control/speed_cccld_spec.rb new file mode 100644 index 000000000..2a3cae9ff --- /dev/null +++ b/spec/models/compliance_control_class_level_defaults/vehicle_journey_control/speed_cccld_spec.rb @@ -0,0 +1,7 @@ + +RSpec.describe VehicleJourneyControl::Speed, type: :model do + let( :default_code ){ "3-VehicleJourney-2" } + let( :factory ){ :vehicle_journey_control_speed } + + it_behaves_like 'ComplianceControl Class Level Defaults' +end diff --git a/spec/models/compliance_control_class_level_defaults/vehicle_journey_control/time_table_cccld_spec.rb b/spec/models/compliance_control_class_level_defaults/vehicle_journey_control/time_table_cccld_spec.rb new file mode 100644 index 000000000..19dfe871d --- /dev/null +++ b/spec/models/compliance_control_class_level_defaults/vehicle_journey_control/time_table_cccld_spec.rb @@ -0,0 +1,7 @@ + +RSpec.describe VehicleJourneyControl::TimeTable, type: :model do + let( :default_code ){ "3-VehicleJourney-4" } + let( :factory ){ :vehicle_journey_control_time_table } + + it_behaves_like 'ComplianceControl Class Level Defaults' +end diff --git a/spec/models/compliance_control_class_level_defaults/vehicle_journey_control/vehicle_journey_at_stops_cccld_spec.rb b/spec/models/compliance_control_class_level_defaults/vehicle_journey_control/vehicle_journey_at_stops_cccld_spec.rb new file mode 100644 index 000000000..30b5893d5 --- /dev/null +++ b/spec/models/compliance_control_class_level_defaults/vehicle_journey_control/vehicle_journey_at_stops_cccld_spec.rb @@ -0,0 +1,7 @@ + +RSpec.describe VehicleJourneyControl::VehicleJourneyAtStops, type: :model do + let( :default_code ){ "3-VehicleJourney-5" } + let( :factory ){ :vehicle_journey_control_vehicle_journey_at_stops } + + it_behaves_like 'ComplianceControl Class Level Defaults' +end |
