From 0a91ae5d80e476f967160e1987cc7e63beabea94 Mon Sep 17 00:00:00 2001 From: Zog Date: Fri, 23 Feb 2018 16:32:35 +0100 Subject: Refs 5878; Add ComplianceCheck#show --- app/models/compliance_check.rb | 10 ++++++- app/models/compliance_control.rb | 40 ++++++++++++-------------- app/models/concerns/compliance_item_support.rb | 15 ++++++++++ 3 files changed, 42 insertions(+), 23 deletions(-) create mode 100644 app/models/concerns/compliance_item_support.rb (limited to 'app/models') diff --git a/app/models/compliance_check.rb b/app/models/compliance_check.rb index 55f2ae228..71cb9aef2 100644 --- a/app/models/compliance_check.rb +++ b/app/models/compliance_check.rb @@ -1,14 +1,22 @@ class ComplianceCheck < ActiveRecord::Base + include ComplianceItemSupport self.inheritance_column = nil extend Enumerize belongs_to :compliance_check_set belongs_to :compliance_check_block - + enumerize :criticity, in: %i(warning error), scope: true, default: :warning validates :criticity, presence: true validates :name, presence: true validates :code, presence: true validates :origin_code, presence: true + + def control + ComplianceControl.find_by! origin_code: origin_code + end + + delegate :predicate, to: :control + end diff --git a/app/models/compliance_control.rb b/app/models/compliance_control.rb index 298a63ab9..45f886005 100644 --- a/app/models/compliance_control.rb +++ b/app/models/compliance_control.rb @@ -1,18 +1,16 @@ class ComplianceControl < ActiveRecord::Base + include ComplianceItemSupport class << self def criticities; %i(warning error) end def default_code; "" end - def dynamic_attributes - stored_attributes[:control_attributes] || [] - end def policy_class ComplianceControlPolicy end def subclass_patterns - { + { generic: 'Generic', journey_pattern: 'JourneyPattern', line: 'Line', @@ -45,26 +43,24 @@ class ComplianceControl < ActiveRecord::Base validates :compliance_control_set, presence: true validate def coherent_control_set - return true if compliance_control_block_id.nil? - ids = [compliance_control_block.compliance_control_set_id, compliance_control_set_id] - return true if ids.first == ids.last - names = ids.map{|id| ComplianceControlSet.find(id).name} - errors.add(:coherent_control_set, - I18n.t('compliance_controls.errors.incoherent_control_sets', - indirect_set_name: names.first, - direct_set_name: names.last)) -end - + return true if compliance_control_block_id.nil? + ids = [compliance_control_block.compliance_control_set_id, compliance_control_set_id] + return true if ids.first == ids.last + names = ids.map{|id| ComplianceControlSet.find(id).name} + errors.add(:coherent_control_set, + I18n.t('compliance_controls.errors.incoherent_control_sets', + indirect_set_name: names.first, + direct_set_name: names.last)) + end -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 + 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 -def predicate; I18n.t("compliance_controls.#{self.class.name.underscore}.description") end -def prerequisite; I18n.t('compliance_controls.metas.no_prerequisite'); end + def predicate; I18n.t("compliance_controls.#{self.class.name.underscore}.description") end end diff --git a/app/models/concerns/compliance_item_support.rb b/app/models/concerns/compliance_item_support.rb new file mode 100644 index 000000000..4ec2f130f --- /dev/null +++ b/app/models/concerns/compliance_item_support.rb @@ -0,0 +1,15 @@ +module ComplianceItemSupport + extend ActiveSupport::Concern + included do + + end + + module ClassMethods + def dynamic_attributes + stored_attributes[:control_attributes] || [] + end + end + + def prerequisite; I18n.t('compliance_controls.metas.no_prerequisite'); end + +end -- cgit v1.2.3 From ff9f6fa9674a4a50da480b550611cd1ce9d84c23 Mon Sep 17 00:00:00 2001 From: Zog Date: Tue, 27 Feb 2018 16:30:40 +0100 Subject: refs #5878; Remove hard link between a ComplianceCheck and the associated ComplianceControl --- app/models/compliance_check.rb | 6 +++--- app/models/compliance_control.rb | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) (limited to 'app/models') diff --git a/app/models/compliance_check.rb b/app/models/compliance_check.rb index 71cb9aef2..fda95ea08 100644 --- a/app/models/compliance_check.rb +++ b/app/models/compliance_check.rb @@ -13,10 +13,10 @@ class ComplianceCheck < ActiveRecord::Base validates :code, presence: true validates :origin_code, presence: true - def control - ComplianceControl.find_by! origin_code: origin_code + def control_class + compliance_control_name.present? ? compliance_control_name.constantize : nil end - delegate :predicate, to: :control + delegate :predicate, to: :control_class, allow_nil: true end diff --git a/app/models/compliance_control.rb b/app/models/compliance_control.rb index 45f886005..7cd9ba933 100644 --- a/app/models/compliance_control.rb +++ b/app/models/compliance_control.rb @@ -28,6 +28,8 @@ class ComplianceControl < ActiveRecord::Base end super end + + def predicate; I18n.t("compliance_controls.#{self.name.underscore}.description") end end extend Enumerize @@ -60,7 +62,7 @@ class ComplianceControl < ActiveRecord::Base self.origin_code ||= self.class.default_code end - def predicate; I18n.t("compliance_controls.#{self.class.name.underscore}.description") end + def predicate; self.class.predicate end end -- cgit v1.2.3 From ca9fd5d4f09c04875092904f4c1961e3e82b6c3b Mon Sep 17 00:00:00 2001 From: Luc Donnet Date: Tue, 27 Feb 2018 23:08:48 +0100 Subject: Fix prerequisite access for compliance_check and compliance_control Refs #5878 @1 --- app/models/compliance_check.rb | 1 + app/models/compliance_control.rb | 2 ++ app/models/concerns/compliance_item_support.rb | 2 -- 3 files changed, 3 insertions(+), 2 deletions(-) (limited to 'app/models') diff --git a/app/models/compliance_check.rb b/app/models/compliance_check.rb index fda95ea08..9d817e146 100644 --- a/app/models/compliance_check.rb +++ b/app/models/compliance_check.rb @@ -18,5 +18,6 @@ class ComplianceCheck < ActiveRecord::Base end delegate :predicate, to: :control_class, allow_nil: true + delegate :prerequisite, to: :control_class, allow_nil: true end diff --git a/app/models/compliance_control.rb b/app/models/compliance_control.rb index 7cd9ba933..537343005 100644 --- a/app/models/compliance_control.rb +++ b/app/models/compliance_control.rb @@ -30,6 +30,7 @@ class ComplianceControl < ActiveRecord::Base end def predicate; I18n.t("compliance_controls.#{self.name.underscore}.description") end + def prerequisite; I18n.t("compliance_controls.#{self.name.underscore}.prerequisite") end end extend Enumerize @@ -63,6 +64,7 @@ class ComplianceControl < ActiveRecord::Base end def predicate; self.class.predicate end + def prerequisite; self.class.prerequisite end end diff --git a/app/models/concerns/compliance_item_support.rb b/app/models/concerns/compliance_item_support.rb index 4ec2f130f..f44f5719f 100644 --- a/app/models/concerns/compliance_item_support.rb +++ b/app/models/concerns/compliance_item_support.rb @@ -10,6 +10,4 @@ module ComplianceItemSupport end end - def prerequisite; I18n.t('compliance_controls.metas.no_prerequisite'); end - end -- cgit v1.2.3