aboutsummaryrefslogtreecommitdiffstats
path: root/app/models
diff options
context:
space:
mode:
authorZog2018-02-23 16:32:35 +0100
committerZog2018-02-23 16:32:35 +0100
commit0a91ae5d80e476f967160e1987cc7e63beabea94 (patch)
tree537230f36225698bfb45caf97490304a6dbb57c1 /app/models
parent206bf218e1b84dbe53683ec2e3f983cd30f7ded1 (diff)
downloadchouette-core-0a91ae5d80e476f967160e1987cc7e63beabea94.tar.bz2
Refs 5878; Add ComplianceCheck#show
Diffstat (limited to 'app/models')
-rw-r--r--app/models/compliance_check.rb10
-rw-r--r--app/models/compliance_control.rb40
-rw-r--r--app/models/concerns/compliance_item_support.rb15
3 files changed, 42 insertions, 23 deletions
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