diff options
| -rw-r--r-- | app/controllers/compliance_checks_controller.rb | 4 | ||||
| -rw-r--r-- | app/helpers/application_helper.rb | 2 | ||||
| -rw-r--r-- | app/models/compliance_check.rb | 10 | ||||
| -rw-r--r-- | app/models/compliance_control.rb | 40 | ||||
| -rw-r--r-- | app/models/concerns/compliance_item_support.rb | 15 | ||||
| -rw-r--r-- | app/views/compliance_checks/show.html.slim | 13 | ||||
| -rw-r--r-- | app/views/compliance_controls/show.html.slim | 17 | ||||
| -rw-r--r-- | app/views/shared/controls/_metadatas.html.slim | 15 | ||||
| -rw-r--r-- | config/breadcrumbs.rb | 5 | ||||
| -rw-r--r-- | config/locales/compliance_checks.en.yml | 4 | ||||
| -rw-r--r-- | config/locales/compliance_checks.fr.yml | 5 | 
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" | 
