From 00d1aff0f61be908ad9dfedff47f33f5ef1f274a Mon Sep 17 00:00:00 2001 From: Xinhui Date: Wed, 20 Sep 2017 14:28:22 +0200 Subject: Add type to permited params & remove policy check --- app/controllers/compliance_controls_controller.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'app') diff --git a/app/controllers/compliance_controls_controller.rb b/app/controllers/compliance_controls_controller.rb index dad9b935a..75c2dbc72 100644 --- a/app/controllers/compliance_controls_controller.rb +++ b/app/controllers/compliance_controls_controller.rb @@ -1,5 +1,4 @@ class ComplianceControlsController < BreadcrumbController - include PolicyChecker defaults resource_class: ComplianceControl belongs_to :compliance_control_set @@ -33,6 +32,6 @@ class ComplianceControlsController < BreadcrumbController end def compliance_control_params - params.require(:compliance_control).permit(:name, :code, :criticity, :comment, :control_attributes) + params.require(:compliance_control).permit(:name, :code, :criticity, :comment, :control_attributes, :type) end end -- cgit v1.2.3 From 8052230ad2966e794fe85ac48244012b4a74d6d3 Mon Sep 17 00:00:00 2001 From: Xinhui Date: Thu, 21 Sep 2017 11:47:18 +0200 Subject: Move ComplianceControl#index into ComplianceControlSet#show Refs #4579 --- .../compliance_control_sets_controller.rb | 14 +++++++-- app/controllers/compliance_controls_controller.rb | 15 --------- app/decorators/compliance_control_decorator.rb | 10 +++--- app/views/compliance_control_sets/show.html.slim | 36 +++++++++++++++++++++- app/views/compliance_controls/show.html.slim | 1 + 5 files changed, 53 insertions(+), 23 deletions(-) (limited to 'app') diff --git a/app/controllers/compliance_control_sets_controller.rb b/app/controllers/compliance_control_sets_controller.rb index 20ddcbe97..306b2eac7 100644 --- a/app/controllers/compliance_control_sets_controller.rb +++ b/app/controllers/compliance_control_sets_controller.rb @@ -14,11 +14,15 @@ class ComplianceControlSetsController < BreadcrumbController end def show - show! do - @compliance_control_set = @compliance_control_set.decorate + show! do |format| + format.html { + @compliance_control_set = @compliance_control_set.decorate + @compliance_controls = decorate_compliance_controls(@compliance_control_set.compliance_controls) + } end end + private def decorate_compliance_control_sets(compliance_control_sets) ModelDecorator.decorate( compliance_control_sets, @@ -33,6 +37,12 @@ class ComplianceControlSetsController < BreadcrumbController # end private + def decorate_compliance_controls(compliance_controls) + ModelDecorator.decorate( + compliance_controls, + with: ComplianceControlDecorator, + ) + end def ransack_updated_at_params start_date = [] diff --git a/app/controllers/compliance_controls_controller.rb b/app/controllers/compliance_controls_controller.rb index 75c2dbc72..87dfcf15b 100644 --- a/app/controllers/compliance_controls_controller.rb +++ b/app/controllers/compliance_controls_controller.rb @@ -2,14 +2,6 @@ class ComplianceControlsController < BreadcrumbController defaults resource_class: ComplianceControl belongs_to :compliance_control_set - def index - index! do |format| - format.html { - @compliance_controls = decorate_compliance_controls(@compliance_controls) - } - end - end - def create create!(notice: t('notice.compliance_control.created')) end @@ -24,13 +16,6 @@ class ComplianceControlsController < BreadcrumbController end private - def decorate_compliance_controls(compliance_controls) - ModelDecorator.decorate( - compliance_controls, - with: ComplianceControlDecorator, - ) - end - def compliance_control_params params.require(:compliance_control).permit(:name, :code, :criticity, :comment, :control_attributes, :type) end diff --git a/app/decorators/compliance_control_decorator.rb b/app/decorators/compliance_control_decorator.rb index 38b968ad1..3a05a5c59 100644 --- a/app/decorators/compliance_control_decorator.rb +++ b/app/decorators/compliance_control_decorator.rb @@ -4,21 +4,21 @@ class ComplianceControlDecorator < Draper::Decorator def action_links links = [] - if h.policy(object).destroy? + # if h.policy(object).destroy? links << Link.new( content: h.destroy_link_content, href: h.compliance_control_set_compliance_control_path(object.compliance_control_set.id, object.id), method: :delete, data: { confirm: h.t('compliance_controls.actions.destroy_confirm') } ) - end + # end - if h.policy(object).edit? + # if h.policy(object).edit? links << Link.new( content: h.t('compliance_controls.actions.edit'), - href: h.edit_compliance_control_set_path(object.compliance_control_set.id, object.id) + href: h.edit_compliance_control_set_compliance_control_path(object.compliance_control_set.id, object.id) ) - end + # end links end diff --git a/app/views/compliance_control_sets/show.html.slim b/app/views/compliance_control_sets/show.html.slim index b4a5b2260..d7d4678ba 100644 --- a/app/views/compliance_control_sets/show.html.slim +++ b/app/views/compliance_control_sets/show.html.slim @@ -22,4 +22,38 @@ .row .col-lg-6.col-md-6.col-sm-12.col-xs-12 = definition_list t('metadatas'), - ComplianceControlSet.human_attribute_name(:name) => @compliance_control_set.name \ No newline at end of file + ComplianceControlSet.human_attribute_name(:name) => @compliance_control_set.name + + .container-fluid + .row + .col-lg-12 + /= render 'filters' + .row + .col-lg-12 + .select_table + = table_builder_2 @compliance_controls, + [ \ + TableBuilderHelper::Column.new( \ + key: :code, \ + attribute: 'code' \ + ), \ + TableBuilderHelper::Column.new( \ + key: :name, \ + attribute: 'name', \ + link_to: lambda do |compliance_control| \ + compliance_control_set_compliance_control_path(@compliance_control_set, compliance_control) \ + end \ + ), \ + TableBuilderHelper::Column.new( \ + key: :criticity, \ + attribute: 'criticity' \ + ), \ + TableBuilderHelper::Column.new( \ + key: :comment, \ + attribute: 'comment' \ + ), \ + ], + sortable: true, + cls: 'table has-filter has-search' + + diff --git a/app/views/compliance_controls/show.html.slim b/app/views/compliance_controls/show.html.slim index e69de29bb..9e197695d 100644 --- a/app/views/compliance_controls/show.html.slim +++ b/app/views/compliance_controls/show.html.slim @@ -0,0 +1 @@ += @compliance_control.inspect -- cgit v1.2.3 From bc084cd98fd01d2cebb57fd1e791b61f02f1e194 Mon Sep 17 00:00:00 2001 From: Xinhui Date: Thu, 21 Sep 2017 12:07:41 +0200 Subject: ComplianceControlSet#show add compliance_control create link Refs #4563 --- app/decorators/compliance_control_set_decorator.rb | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'app') diff --git a/app/decorators/compliance_control_set_decorator.rb b/app/decorators/compliance_control_set_decorator.rb index 876a54d09..f9e4de836 100644 --- a/app/decorators/compliance_control_set_decorator.rb +++ b/app/decorators/compliance_control_set_decorator.rb @@ -19,6 +19,13 @@ class ComplianceControlSetDecorator < Draper::Decorator href: h.edit_compliance_control_set_path(object.id) ) # end + + # if h.policy(ComplianceControl).create? + links << Link.new( + content: h.t('compliance_control_sets.actions.add_compliance_control'), + href: h.new_compliance_control_set_compliance_control_path(object.id) + ) + # end links end -- cgit v1.2.3 From d5e8f6ff7bcf443bcfd3d525e888da883d8ae32c Mon Sep 17 00:00:00 2001 From: Xinhui Date: Thu, 21 Sep 2017 14:30:13 +0200 Subject: Manually specifying policy classes for ComplianceControl & children Refs #4581 --- app/controllers/compliance_controls_controller.rb | 1 + app/models/compliance_control.rb | 4 ++++ 2 files changed, 5 insertions(+) (limited to 'app') diff --git a/app/controllers/compliance_controls_controller.rb b/app/controllers/compliance_controls_controller.rb index 87dfcf15b..c5c76fd58 100644 --- a/app/controllers/compliance_controls_controller.rb +++ b/app/controllers/compliance_controls_controller.rb @@ -1,4 +1,5 @@ class ComplianceControlsController < BreadcrumbController + include PolicyChecker defaults resource_class: ComplianceControl belongs_to :compliance_control_set diff --git a/app/models/compliance_control.rb b/app/models/compliance_control.rb index 12ff4737a..46902f9b1 100644 --- a/app/models/compliance_control.rb +++ b/app/models/compliance_control.rb @@ -9,4 +9,8 @@ class ComplianceControl < ActiveRecord::Base validates :name, presence: true validates :code, presence: true validates :compliance_control_set, presence: true + + def self.policy_class + ComplianceControlPolicy + end end -- cgit v1.2.3 From 8d2db4fd3553596fff8eecf357bdd9e75f158c3a Mon Sep 17 00:00:00 2001 From: Xinhui Date: Thu, 21 Sep 2017 15:34:37 +0200 Subject: Fix STI subclasses not loaded on development env Refs #4580 --- app/models/compliance_control.rb | 4 ++++ app/views/compliance_controls/_form.html.slim | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'app') diff --git a/app/models/compliance_control.rb b/app/models/compliance_control.rb index 46902f9b1..7a09a176c 100644 --- a/app/models/compliance_control.rb +++ b/app/models/compliance_control.rb @@ -14,3 +14,7 @@ class ComplianceControl < ActiveRecord::Base ComplianceControlPolicy end end + +# Ensure STI subclasses are loaded +# http://guides.rubyonrails.org/autoloading_and_reloading_constants.html#autoloading-and-sti +require_dependency 'generic_attribute_min_max' diff --git a/app/views/compliance_controls/_form.html.slim b/app/views/compliance_controls/_form.html.slim index 1377ed12b..b4298c5fd 100644 --- a/app/views/compliance_controls/_form.html.slim +++ b/app/views/compliance_controls/_form.html.slim @@ -2,7 +2,7 @@ .row .col-lg-12 = f.input :name - = f.input :type + = f.input :type, as: :select, collection: ComplianceControl.subclasses = f.input :code = f.input :criticity = f.input :comment -- cgit v1.2.3 From 15e75e3505194171df43d69096e94f65f032f9e5 Mon Sep 17 00:00:00 2001 From: Xinhui Date: Fri, 22 Sep 2017 14:36:13 +0200 Subject: Nested compliance control block Refs #4585 --- app/controllers/compliance_controls_controller.rb | 2 +- app/models/compliance_control.rb | 6 ++++-- app/models/compliance_control_block.rb | 7 +++++++ app/views/compliance_controls/_form.html.slim | 3 +++ 4 files changed, 15 insertions(+), 3 deletions(-) (limited to 'app') diff --git a/app/controllers/compliance_controls_controller.rb b/app/controllers/compliance_controls_controller.rb index c5c76fd58..bfa7cbefa 100644 --- a/app/controllers/compliance_controls_controller.rb +++ b/app/controllers/compliance_controls_controller.rb @@ -18,6 +18,6 @@ class ComplianceControlsController < BreadcrumbController private def compliance_control_params - params.require(:compliance_control).permit(:name, :code, :criticity, :comment, :control_attributes, :type) + params.require(:compliance_control).permit(:name, :code, :criticity, :comment, :control_attributes, :type, compliance_control_block_attributes: [:name]) end end diff --git a/app/models/compliance_control.rb b/app/models/compliance_control.rb index 7a09a176c..73b6be8e5 100644 --- a/app/models/compliance_control.rb +++ b/app/models/compliance_control.rb @@ -1,8 +1,10 @@ class ComplianceControl < ActiveRecord::Base + extend Enumerize belongs_to :compliance_control_set - belongs_to :compliance_control_block - extend Enumerize + has_one :compliance_control_block, dependent: :destroy + accepts_nested_attributes_for :compliance_control_block + enumerize :criticity, in: %i(info warning error), scope: true, default: :info validates :criticity, presence: true diff --git a/app/models/compliance_control_block.rb b/app/models/compliance_control_block.rb index cf5a9d72b..7fda998eb 100644 --- a/app/models/compliance_control_block.rb +++ b/app/models/compliance_control_block.rb @@ -1,3 +1,10 @@ class ComplianceControlBlock < ActiveRecord::Base belongs_to :compliance_control_set + belongs_to :compliance_control + + before_save :set_compliance_control_set + + def set_compliance_control_set + self.compliance_control_set = self.compliance_control.compliance_control_set + end end diff --git a/app/views/compliance_controls/_form.html.slim b/app/views/compliance_controls/_form.html.slim index b4298c5fd..cc0310620 100644 --- a/app/views/compliance_controls/_form.html.slim +++ b/app/views/compliance_controls/_form.html.slim @@ -7,6 +7,9 @@ = f.input :criticity = f.input :comment + = f.fields_for :compliance_control_block, ComplianceControlBlock.new do |c| + = c.input :name + end .separator = f.button :submit, t('actions.submit'), class: 'btn btn-default formSubmitr', form: 'compliance_control_form' -- cgit v1.2.3 From 6af42621e3ba89a81d9ef9491f04f8595483de60 Mon Sep 17 00:00:00 2001 From: Xinhui Date: Fri, 22 Sep 2017 16:07:51 +0200 Subject: Remove comments --- app/models/generic_attribute_min_max.rb | 36 +++++++++++++++------------------ 1 file changed, 16 insertions(+), 20 deletions(-) (limited to 'app') diff --git a/app/models/generic_attribute_min_max.rb b/app/models/generic_attribute_min_max.rb index e9a127c56..8e85834a8 100644 --- a/app/models/generic_attribute_min_max.rb +++ b/app/models/generic_attribute_min_max.rb @@ -1,27 +1,23 @@ -#module ComplianceControls +class GenericAttributeMinMax < ComplianceControl - 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 - 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" - @@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 + 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 -- cgit v1.2.3 From 5724f7c02a5238ef727e0c1674f2c69424563527 Mon Sep 17 00:00:00 2001 From: Xinhui Date: Tue, 26 Sep 2017 11:42:47 +0200 Subject: Nested form for compliance control block Refs #4585 --- app/controllers/compliance_controls_controller.rb | 8 +++++++- app/models/compliance_control.rb | 10 +++++++++- app/models/compliance_control_block.rb | 2 ++ app/views/compliance_controls/_form.html.slim | 3 ++- app/views/compliance_controls/edit.html.slim | 9 +++++++++ app/views/compliance_controls/show.html.slim | 2 ++ 6 files changed, 31 insertions(+), 3 deletions(-) (limited to 'app') diff --git a/app/controllers/compliance_controls_controller.rb b/app/controllers/compliance_controls_controller.rb index bfa7cbefa..0f4ca3481 100644 --- a/app/controllers/compliance_controls_controller.rb +++ b/app/controllers/compliance_controls_controller.rb @@ -3,6 +3,12 @@ class ComplianceControlsController < BreadcrumbController defaults resource_class: ComplianceControl belongs_to :compliance_control_set + def new + @compliance_control_set = parent + @compliance_control = ComplianceControl.new + @compliance_control.build_compliance_control_block + end + def create create!(notice: t('notice.compliance_control.created')) end @@ -18,6 +24,6 @@ class ComplianceControlsController < BreadcrumbController private def compliance_control_params - params.require(:compliance_control).permit(:name, :code, :criticity, :comment, :control_attributes, :type, compliance_control_block_attributes: [:name]) + params.require(:compliance_control).permit(:name, :code, :criticity, :comment, :control_attributes, :type, compliance_control_block_attributes: [:name, :transport_mode]) end end diff --git a/app/models/compliance_control.rb b/app/models/compliance_control.rb index 73b6be8e5..763a42029 100644 --- a/app/models/compliance_control.rb +++ b/app/models/compliance_control.rb @@ -1,7 +1,6 @@ class ComplianceControl < ActiveRecord::Base extend Enumerize belongs_to :compliance_control_set - has_one :compliance_control_block, dependent: :destroy accepts_nested_attributes_for :compliance_control_block @@ -15,6 +14,15 @@ class ComplianceControl < ActiveRecord::Base def self.policy_class ComplianceControlPolicy end + + def self.inherited(child) + child.instance_eval do + def model_name + ComplianceControl.model_name + end + end + super + end end # Ensure STI subclasses are loaded diff --git a/app/models/compliance_control_block.rb b/app/models/compliance_control_block.rb index 7fda998eb..12b10ab2a 100644 --- a/app/models/compliance_control_block.rb +++ b/app/models/compliance_control_block.rb @@ -4,6 +4,8 @@ class ComplianceControlBlock < ActiveRecord::Base 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 diff --git a/app/views/compliance_controls/_form.html.slim b/app/views/compliance_controls/_form.html.slim index cc0310620..9ee2dec69 100644 --- a/app/views/compliance_controls/_form.html.slim +++ b/app/views/compliance_controls/_form.html.slim @@ -7,8 +7,9 @@ = f.input :criticity = f.input :comment - = f.fields_for :compliance_control_block, ComplianceControlBlock.new do |c| + = f.simple_fields_for :compliance_control_block do |c| = c.input :name + = c.input :transport_mode, as: :select, collection:StifTransportModeEnumerations.transport_mode.options end .separator diff --git a/app/views/compliance_controls/edit.html.slim b/app/views/compliance_controls/edit.html.slim index e69de29bb..6824c7e40 100644 --- a/app/views/compliance_controls/edit.html.slim +++ b/app/views/compliance_controls/edit.html.slim @@ -0,0 +1,9 @@ += pageheader 'compliance-control', + t('compliance_control.index.edit') + + +.page_content + .container-fluid + .row + .col-lg-8.col-lg-offset-2.col-md-8.col-md-offset-2.col-sm-10.col-sm-offset-1 + = render 'form' diff --git a/app/views/compliance_controls/show.html.slim b/app/views/compliance_controls/show.html.slim index 9e197695d..a665f1ab1 100644 --- a/app/views/compliance_controls/show.html.slim +++ b/app/views/compliance_controls/show.html.slim @@ -1 +1,3 @@ = @compliance_control.inspect +br += @compliance_control.compliance_control_block.inspect -- cgit v1.2.3 From b8402fc9803db04b029a22c5bd9d33ee756ff4ec Mon Sep 17 00:00:00 2001 From: Xinhui Date: Tue, 26 Sep 2017 11:58:17 +0200 Subject: Add dependent destroy on associations --- app/models/compliance_control_set.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'app') 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 -- cgit v1.2.3 From 47aa20b9490166a9e0edd7e2095fc8612ff8f892 Mon Sep 17 00:00:00 2001 From: Xinhui Date: Tue, 26 Sep 2017 12:35:38 +0200 Subject: Remove action override, notice is now handle by gem responder --- app/controllers/compliance_controls_controller.rb | 8 -------- 1 file changed, 8 deletions(-) (limited to 'app') diff --git a/app/controllers/compliance_controls_controller.rb b/app/controllers/compliance_controls_controller.rb index 0f4ca3481..20f4b15af 100644 --- a/app/controllers/compliance_controls_controller.rb +++ b/app/controllers/compliance_controls_controller.rb @@ -9,19 +9,11 @@ class ComplianceControlsController < BreadcrumbController @compliance_control.build_compliance_control_block end - def create - create!(notice: t('notice.compliance_control.created')) - end - def update path = compliance_control_set_compliance_control_path(parent, resource) update!(notice: t('notice.compliance_control.updated')) { path } end - def destroy - destroy!(notice: t('notice.compliance_control.destroyed')) - end - private def compliance_control_params params.require(:compliance_control).permit(:name, :code, :criticity, :comment, :control_attributes, :type, compliance_control_block_attributes: [:name, :transport_mode]) -- cgit v1.2.3 From c3f80c537e28dfe316ee0dcbee2bde2b5307fd79 Mon Sep 17 00:00:00 2001 From: Xinhui Date: Wed, 27 Sep 2017 11:59:44 +0200 Subject: Support of dynamic_attributes in form Refs #4467 --- app/controllers/compliance_controls_controller.rb | 10 ++++++++-- app/models/generic_attribute_min_max.rb | 18 +++++++++--------- app/views/compliance_controls/_form.html.slim | 4 ++++ 3 files changed, 21 insertions(+), 11 deletions(-) (limited to 'app') diff --git a/app/controllers/compliance_controls_controller.rb b/app/controllers/compliance_controls_controller.rb index 20f4b15af..71d702945 100644 --- a/app/controllers/compliance_controls_controller.rb +++ b/app/controllers/compliance_controls_controller.rb @@ -5,7 +5,7 @@ class ComplianceControlsController < BreadcrumbController def new @compliance_control_set = parent - @compliance_control = ComplianceControl.new + @compliance_control = GenericAttributeMinMax.new @compliance_control.build_compliance_control_block end @@ -15,7 +15,13 @@ class ComplianceControlsController < BreadcrumbController end private + def dynamic_attributes_params + params.require(:compliance_control).permit(:type).values[0].constantize.dynamic_attributes + end + def compliance_control_params - params.require(:compliance_control).permit(:name, :code, :criticity, :comment, :control_attributes, :type, compliance_control_block_attributes: [:name, :transport_mode]) + base = [:name, :code, :criticity, :comment, :control_attributes, :type, compliance_control_block_attributes: [:name, :transport_mode]] + permited = base + dynamic_attributes_params + params.require(:compliance_control).permit(permited) end end diff --git a/app/models/generic_attribute_min_max.rb b/app/models/generic_attribute_min_max.rb index 8e85834a8..91bf285f0 100644 --- a/app/models/generic_attribute_min_max.rb +++ b/app/models/generic_attribute_min_max.rb @@ -1,23 +1,23 @@ 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 + def self.dynamic_attributes + self.hstore_metadata_for_control_attributes.keys end + # after_initialize do + # self.name = 'GenericAttributeMinMax' + # self.code = @@default_code + # self.criticity = @@default_criticity + # end + end diff --git a/app/views/compliance_controls/_form.html.slim b/app/views/compliance_controls/_form.html.slim index 9ee2dec69..c9e1c0fcc 100644 --- a/app/views/compliance_controls/_form.html.slim +++ b/app/views/compliance_controls/_form.html.slim @@ -7,6 +7,10 @@ = f.input :criticity = f.input :comment + - f.object.class.dynamic_attributes.each do |attribute| + = f.input attribute.to_sym + end + = f.simple_fields_for :compliance_control_block do |c| = c.input :name = c.input :transport_mode, as: :select, collection:StifTransportModeEnumerations.transport_mode.options -- cgit v1.2.3 From b4160ff81b0e2636e213c0a2ec3352a33c0669c9 Mon Sep 17 00:00:00 2001 From: Xinhui Date: Wed, 27 Sep 2017 12:01:47 +0200 Subject: Disable policy for testing --- app/policies/compliance_control_policy.rb | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'app') diff --git a/app/policies/compliance_control_policy.rb b/app/policies/compliance_control_policy.rb index fbea366f5..09250f013 100644 --- a/app/policies/compliance_control_policy.rb +++ b/app/policies/compliance_control_policy.rb @@ -6,14 +6,17 @@ class ComplianceControlPolicy < ApplicationPolicy end def destroy? - user.has_permission?('compliance_controls.destroy') + # user.has_permission?('compliance_controls.destroy') + true end def create? - user.has_permission?('compliance_controls.create') + # user.has_permission?('compliance_controls.create') + true end def update? - user.has_permission?('compliance_controls.update') + # user.has_permission?('compliance_controls.update') + true end end -- cgit v1.2.3 From 750815f4513dfa8c57238fdfaaee07af02b0e8cd Mon Sep 17 00:00:00 2001 From: Xinhui Date: Wed, 20 Sep 2017 14:28:22 +0200 Subject: Add type to permited params & remove policy check --- app/controllers/compliance_controls_controller.rb | 1 - 1 file changed, 1 deletion(-) (limited to 'app') diff --git a/app/controllers/compliance_controls_controller.rb b/app/controllers/compliance_controls_controller.rb index 71d702945..7deeab01d 100644 --- a/app/controllers/compliance_controls_controller.rb +++ b/app/controllers/compliance_controls_controller.rb @@ -1,5 +1,4 @@ class ComplianceControlsController < BreadcrumbController - include PolicyChecker defaults resource_class: ComplianceControl belongs_to :compliance_control_set -- cgit v1.2.3 From 86abe568ce4c04d14df882ece44576ff069c4a3c Mon Sep 17 00:00:00 2001 From: Xinhui Date: Wed, 27 Sep 2017 16:05:29 +0200 Subject: Add 'all' option to transport_modes Refs #4518 --- app/models/compliance_control_block.rb | 4 ++++ app/views/compliance_controls/_form.html.slim | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'app') diff --git a/app/models/compliance_control_block.rb b/app/models/compliance_control_block.rb index 12b10ab2a..a08e271f6 100644 --- a/app/models/compliance_control_block.rb +++ b/app/models/compliance_control_block.rb @@ -9,4 +9,8 @@ class ComplianceControlBlock < ActiveRecord::Base 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/views/compliance_controls/_form.html.slim b/app/views/compliance_controls/_form.html.slim index c9e1c0fcc..bb8f68464 100644 --- a/app/views/compliance_controls/_form.html.slim +++ b/app/views/compliance_controls/_form.html.slim @@ -13,7 +13,7 @@ = f.simple_fields_for :compliance_control_block do |c| = c.input :name - = c.input :transport_mode, as: :select, collection:StifTransportModeEnumerations.transport_mode.options + = c.input :transport_mode, as: :select, collection:ComplianceControlBlock.transport_modes end .separator -- cgit v1.2.3 From ea0cf8c5e11ddbd61eed8cd825ac923ad947cdf4 Mon Sep 17 00:00:00 2001 From: cedricnjanga Date: Wed, 27 Sep 2017 12:28:23 +0200 Subject: Refs #4616 put generic_attribute compliance control inside a folder --- app/models/generic_attribute_control/min_max.rb | 17 ++++++++++++++++ app/models/generic_attribute_control/pattern.rb | 13 ++++++++++++ app/models/generic_attribute_control/uniqueness.rb | 13 ++++++++++++ app/models/generic_attribute_min_max.rb | 23 ---------------------- app/models/generic_attribute_pattern.rb | 23 ---------------------- app/models/generic_attribute_uniqueness.rb | 23 ---------------------- 6 files changed, 43 insertions(+), 69 deletions(-) create mode 100644 app/models/generic_attribute_control/min_max.rb create mode 100644 app/models/generic_attribute_control/pattern.rb create mode 100644 app/models/generic_attribute_control/uniqueness.rb delete mode 100644 app/models/generic_attribute_min_max.rb delete mode 100644 app/models/generic_attribute_pattern.rb delete mode 100644 app/models/generic_attribute_uniqueness.rb (limited to 'app') 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 91bf285f0..000000000 --- a/app/models/generic_attribute_min_max.rb +++ /dev/null @@ -1,23 +0,0 @@ -class GenericAttributeMinMax < 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 - - # after_initialize do - # self.name = 'GenericAttributeMinMax' - # self.code = @@default_code - # self.criticity = @@default_criticity - # 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 -- cgit v1.2.3 From eb761e221efc3ce0b09bfea96415907afac33d4a Mon Sep 17 00:00:00 2001 From: cedricnjanga Date: Wed, 27 Sep 2017 12:31:02 +0200 Subject: Refs #4615 Refacto compliance control models and add origin_code to ComplianceControl model --- app/models/compliance_control.rb | 14 +++++++++++++- app/models/journey_pattern_control/duplicates.rb | 6 ------ app/models/journey_pattern_control/vehicle_journey.rb | 6 ------ app/models/line_control/route.rb | 6 ------ app/models/route_control/duplicates.rb | 6 ------ app/models/route_control/journey_pattern.rb | 6 ------ app/models/route_control/minimum_length.rb | 6 ------ app/models/route_control/omnibus_journey_pattern.rb | 6 ------ app/models/route_control/opposite_route.rb | 7 ------- app/models/route_control/opposite_route_terminus.rb | 6 ------ app/models/route_control/speed.rb | 6 ------ app/models/route_control/stop_points_in_journey_pattern.rb | 6 ------ app/models/route_control/time_table.rb | 6 ------ app/models/route_control/unactivated_stop_points.rb | 6 ------ app/models/route_control/vehicle_journey_at_stops.rb | 6 ------ app/models/route_control/zdl_stop_area.rb | 6 ------ .../routing_constaint_zone_control/maximum_length.rb | 6 ------ .../routing_constaint_zone_control/minimum_length.rb | 6 ------ .../unactivated_stop_point.rb | 6 ------ app/models/vechicle_journey_control/delta.rb | 6 ------ app/models/vechicle_journey_control/waiting_time.rb | 6 ------ 21 files changed, 13 insertions(+), 122 deletions(-) (limited to 'app') diff --git a/app/models/compliance_control.rb b/app/models/compliance_control.rb index 763a42029..9c3083695 100644 --- a/app/models/compliance_control.rb +++ b/app/models/compliance_control.rb @@ -4,11 +4,15 @@ class ComplianceControl < ActiveRecord::Base has_one :compliance_control_block, dependent: :destroy accepts_nested_attributes_for :compliance_control_block + @@default_criticity = :warning + @@default_code = "" + 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 @@ -23,8 +27,16 @@ class ComplianceControl < ActiveRecord::Base 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_min_max' +require_dependency 'generic_attribute_control/min_max' 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 -- cgit v1.2.3 From 5911206bbadb2c3c9609f8be0ce1affd6584015e Mon Sep 17 00:00:00 2001 From: cedricnjanga Date: Wed, 27 Sep 2017 16:08:19 +0200 Subject: Refs #4615 Change spec and controller regarding to the ComplianceControl models changes --- app/controllers/compliance_controls_controller.rb | 2 +- app/models/compliance_control.rb | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'app') diff --git a/app/controllers/compliance_controls_controller.rb b/app/controllers/compliance_controls_controller.rb index 7deeab01d..b4fb2f1de 100644 --- a/app/controllers/compliance_controls_controller.rb +++ b/app/controllers/compliance_controls_controller.rb @@ -19,7 +19,7 @@ class ComplianceControlsController < BreadcrumbController end def compliance_control_params - base = [:name, :code, :criticity, :comment, :control_attributes, :type, compliance_control_block_attributes: [:name, :transport_mode]] + base = [:name, :code, :origin_code, :criticity, :comment, :control_attributes, :type, compliance_control_block_attributes: [:name, :transport_mode]] permited = base + dynamic_attributes_params params.require(:compliance_control).permit(permited) end diff --git a/app/models/compliance_control.rb b/app/models/compliance_control.rb index 9c3083695..c5389e832 100644 --- a/app/models/compliance_control.rb +++ b/app/models/compliance_control.rb @@ -29,10 +29,10 @@ class ComplianceControl < ActiveRecord::Base end before_validation(on: :create) do - self.name = self.class.name - self.code = @@default_code - self.origin_code = @@default_code - self.criticity = @@default_criticity + self.name ||= self.class.name + self.code ||= @@default_code + self.origin_code ||= @@default_code + self.criticity ||= @@default_criticity end end -- cgit v1.2.3 From 28a352d2c4cba71c796a3504513e0664cec92cb5 Mon Sep 17 00:00:00 2001 From: cedricnjanga Date: Wed, 27 Sep 2017 16:34:02 +0200 Subject: Refs #4615 Resolve rebase conflict --- app/controllers/compliance_controls_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app') diff --git a/app/controllers/compliance_controls_controller.rb b/app/controllers/compliance_controls_controller.rb index b4fb2f1de..eb1ba68ea 100644 --- a/app/controllers/compliance_controls_controller.rb +++ b/app/controllers/compliance_controls_controller.rb @@ -4,7 +4,7 @@ class ComplianceControlsController < BreadcrumbController def new @compliance_control_set = parent - @compliance_control = GenericAttributeMinMax.new + @compliance_control = GenericAttributeControl::MinMax.new @compliance_control.build_compliance_control_block end -- cgit v1.2.3