diff options
| author | Zog | 2018-02-23 16:32:35 +0100 |
|---|---|---|
| committer | Zog | 2018-02-23 16:32:35 +0100 |
| commit | 0a91ae5d80e476f967160e1987cc7e63beabea94 (patch) | |
| tree | 537230f36225698bfb45caf97490304a6dbb57c1 | |
| parent | 206bf218e1b84dbe53683ec2e3f983cd30f7ded1 (diff) | |
| download | chouette-core-0a91ae5d80e476f967160e1987cc7e63beabea94.tar.bz2 | |
Refs 5878; Add ComplianceCheck#show
| -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" |
