aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZog2018-02-23 16:32:35 +0100
committerZog2018-02-23 16:32:35 +0100
commit0a91ae5d80e476f967160e1987cc7e63beabea94 (patch)
tree537230f36225698bfb45caf97490304a6dbb57c1
parent206bf218e1b84dbe53683ec2e3f983cd30f7ded1 (diff)
downloadchouette-core-0a91ae5d80e476f967160e1987cc7e63beabea94.tar.bz2
Refs 5878; Add ComplianceCheck#show
-rw-r--r--app/controllers/compliance_checks_controller.rb4
-rw-r--r--app/helpers/application_helper.rb2
-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
-rw-r--r--app/views/compliance_checks/show.html.slim13
-rw-r--r--app/views/compliance_controls/show.html.slim17
-rw-r--r--app/views/shared/controls/_metadatas.html.slim15
-rw-r--r--config/breadcrumbs.rb5
-rw-r--r--config/locales/compliance_checks.en.yml4
-rw-r--r--config/locales/compliance_checks.fr.yml5
11 files changed, 88 insertions, 42 deletions
diff --git a/app/controllers/compliance_checks_controller.rb b/app/controllers/compliance_checks_controller.rb
index 81749e292..32a408336 100644
--- a/app/controllers/compliance_checks_controller.rb
+++ b/app/controllers/compliance_checks_controller.rb
@@ -1,4 +1,6 @@
class ComplianceChecksController < InheritedResources::Base
-
+ before_action do
+ @workbench = Workbench.find params[:workbench_id]
+ end
end
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 0058c210d..356c7e69e 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -19,7 +19,7 @@ module ApplicationHelper
return object.full_name
end
- local = "#{object.model_name.name.underscore.pluralize}.#{params[:action]}.title"
+ local = "#{object.model_name.name.underscore.pluralize}.#{params[:action]}.title"
if object.try(:name)
t(local, name: object.name || object.id)
else
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
diff --git a/app/views/compliance_checks/show.html.slim b/app/views/compliance_checks/show.html.slim
new file mode 100644
index 000000000..8dd699c65
--- /dev/null
+++ b/app/views/compliance_checks/show.html.slim
@@ -0,0 +1,13 @@
+- breadcrumb :compliance_check, @workbench, resource
+- page_header_content_for resource
+
+
+.page_content
+ .container-fluid
+ .row
+ .col-lg-6.col-md-6.col-sm-12.col-xs-12
+ = render partial: "shared/controls/metadatas"
+ - if resource.compliance_check_block
+ = definition_list t('compliance_controls.show.metadatas.compliance_check_block'),
+ I18n.t('activerecord.attributes.compliance_control_blocks.transport_mode') => I18n.t("enumerize.transport_mode.#{resource.compliance_check_block.transport_mode}"),
+ I18n.t('activerecord.attributes.compliance_control_blocks.transport_submode') => I18n.t("enumerize.transport_submode.#{resource.compliance_check_block.transport_submode}")
diff --git a/app/views/compliance_controls/show.html.slim b/app/views/compliance_controls/show.html.slim
index ab25747a9..6e7a45d12 100644
--- a/app/views/compliance_controls/show.html.slim
+++ b/app/views/compliance_controls/show.html.slim
@@ -6,22 +6,7 @@
.container-fluid
.row
.col-lg-6.col-md-6.col-sm-12.col-xs-12
- /- @compliance_control.control_attributes.each_with_index do |(key,value), index|
- = definition_list t('metadatas'),
- { \
- ComplianceControl.human_attribute_name(:name) => @compliance_control.name,
- ComplianceControl.human_attribute_name(:code) => @compliance_control.code,
- ComplianceControl.human_attribute_name(:criticity) => @compliance_control.criticity,
- ComplianceControl.human_attribute_name(:comment) => @compliance_control.comment,
- I18n.t('activerecord.attributes.compliance_control.predicate') => @compliance_control.predicate,
- I18n.t('activerecord.attributes.compliance_control.prerequisite') => @compliance_control.prerequisite,
- }.merge( \
- {}.tap do |hash| \
- @compliance_control.class.dynamic_attributes.each do |attribute| \
- hash[ComplianceControl.human_attribute_name(attribute)] = @compliance_control.send(attribute) \
- end \
- end \
- )
+ = render partial: "shared/controls/metadatas"
- if @compliance_control.compliance_control_block
= definition_list t('compliance_controls.show.metadatas.compliance_control_block'),
I18n.t('activerecord.attributes.compliance_control_blocks.transport_mode') => I18n.t("enumerize.transport_mode.#{@compliance_control.compliance_control_block.transport_mode}"),
diff --git a/app/views/shared/controls/_metadatas.html.slim b/app/views/shared/controls/_metadatas.html.slim
new file mode 100644
index 000000000..49df06166
--- /dev/null
+++ b/app/views/shared/controls/_metadatas.html.slim
@@ -0,0 +1,15 @@
+= definition_list t('metadatas'),
+ { \
+ ComplianceControl.human_attribute_name(:name) => resource.name,
+ ComplianceControl.human_attribute_name(:code) => resource.code,
+ ComplianceControl.human_attribute_name(:criticity) => resource.criticity,
+ ComplianceControl.human_attribute_name(:comment) => resource.comment,
+ I18n.t('activerecord.attributes.compliance_control.predicate') => resource.predicate,
+ I18n.t('activerecord.attributes.compliance_control.prerequisite') => resource.prerequisite,
+ }.merge( \
+ {}.tap do |hash| \
+ resource.class.dynamic_attributes.each do |attribute| \
+ hash[ComplianceControl.human_attribute_name(attribute)] = resource.send(attribute) \
+ end \
+ end \
+ )
diff --git a/config/breadcrumbs.rb b/config/breadcrumbs.rb
index 00ccf16bd..d2b205baa 100644
--- a/config/breadcrumbs.rb
+++ b/config/breadcrumbs.rb
@@ -96,6 +96,11 @@ crumb :compliance_check_set do |workbench, compliance_check_set|
parent :compliance_check_sets, workbench
end
+crumb :compliance_check do |workbench, compliance_check|
+ link breadcrumb_name(compliance_check), workbench_compliance_check_set_compliance_check_path(workbench, compliance_check.compliance_check_set, compliance_check)
+ parent :compliance_check_set, compliance_check.compliance_check_set, workbench
+end
+
crumb :compliance_check_set_executed do |workbench, compliance_check_set|
link I18n.t('compliance_check_sets.executed.title', name: compliance_check_set.name), executed_workbench_compliance_check_set_path(workbench, compliance_check_set)
parent :compliance_check_sets, workbench
diff --git a/config/locales/compliance_checks.en.yml b/config/locales/compliance_checks.en.yml
index 177c87852..f960755da 100644
--- a/config/locales/compliance_checks.en.yml
+++ b/config/locales/compliance_checks.en.yml
@@ -8,3 +8,7 @@ en:
subclass: Object
criticity: Severity
name: Name
+ show:
+ title: "Compliance check"
+ metadatas:
+ compliance_control_block: "Control block informations"
diff --git a/config/locales/compliance_checks.fr.yml b/config/locales/compliance_checks.fr.yml
index d11d37003..041ab4f43 100644
--- a/config/locales/compliance_checks.fr.yml
+++ b/config/locales/compliance_checks.fr.yml
@@ -11,4 +11,7 @@ fr:
subclass: Objet
criticity: Criticité
name: Nom
-
+ show:
+ title: "Consulter un contrôle"
+ metadatas:
+ compliance_control_block: "Informations sur le groupe de contrôle"