From 584bc2b59ecf95ee1021596e8f3583d9af97a5a7 Mon Sep 17 00:00:00 2001 From: Luc Donnet Date: Sat, 14 Oct 2017 18:22:45 +0200 Subject: Fix translations for compliance_control type translation, compliance_control validation, compliance_control module --- app/controllers/compliance_controls_controller.rb | 32 ++++++++++++++++------ app/models/compliance_control.rb | 13 +++++---- app/models/generic_attribute_control/min_max.rb | 3 ++ app/models/generic_attribute_control/pattern.rb | 8 ++---- app/models/generic_attribute_control/uniqueness.rb | 5 +--- app/models/route_control/time_table.rb | 6 ---- .../route_control/vehicle_journey_at_stops.rb | 6 ---- app/models/vehicle_journey_control/delta.rb | 2 ++ app/models/vehicle_journey_control/speed.rb | 3 ++ app/models/vehicle_journey_control/time_table.rb | 6 ++++ .../vehicle_journey_at_stops.rb | 6 ++++ app/models/vehicle_journey_control/waiting_time.rb | 2 ++ app/views/compliance_controls/_form.html.slim | 4 +-- .../compliance_controls/select_type.html.slim | 4 +-- app/views/compliance_controls/show.html.slim | 4 +-- 15 files changed, 63 insertions(+), 41 deletions(-) delete mode 100644 app/models/route_control/time_table.rb delete mode 100644 app/models/route_control/vehicle_journey_at_stops.rb create mode 100644 app/models/vehicle_journey_control/time_table.rb create mode 100644 app/models/vehicle_journey_control/vehicle_journey_at_stops.rb (limited to 'app') 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/route_control/time_table.rb b/app/models/route_control/time_table.rb deleted file mode 100644 index 069cd0a9e..000000000 --- a/app/models/route_control/time_table.rb +++ /dev/null @@ -1,6 +0,0 @@ -module RouteControl - class TimeTable < ComplianceControl - - def self.default_code; "3-VehicleJourney-4" 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 deleted file mode 100644 index 7c376a2da..000000000 --- a/app/models/route_control/vehicle_journey_at_stops.rb +++ /dev/null @@ -1,6 +0,0 @@ -module RouteControl - class VehicleJourneyAtStops < ComplianceControl - - def self.default_code; "3-VehicleJourney-5" end - end -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/vehicle_journey_control/time_table.rb b/app/models/vehicle_journey_control/time_table.rb new file mode 100644 index 000000000..617ead12b --- /dev/null +++ b/app/models/vehicle_journey_control/time_table.rb @@ -0,0 +1,6 @@ +module VehicleJourneyControl + class TimeTable < ComplianceControl + + def self.default_code; "3-VehicleJourney-4" end + end +end diff --git a/app/models/vehicle_journey_control/vehicle_journey_at_stops.rb b/app/models/vehicle_journey_control/vehicle_journey_at_stops.rb new file mode 100644 index 000000000..47ee26f82 --- /dev/null +++ b/app/models/vehicle_journey_control/vehicle_journey_at_stops.rb @@ -0,0 +1,6 @@ +module VehicleJourneyControl + class VehicleJourneyAtStops < ComplianceControl + + def self.default_code; "3-VehicleJourney-5" end + end +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 \ ) -- cgit v1.2.3