From d041b6b07cc2b9c2b48e6da929c8d7f1e0ec8bca Mon Sep 17 00:00:00 2001 From: Zog Date: Mon, 30 Apr 2018 14:40:04 +0200 Subject: Add import_compliance_control_sets to Workgroups And rename resource methods for better consistency --- app/models/import/resource.rb | 23 +++++++++++++--------- app/models/workgroup.rb | 9 ++------- app/views/imports/import/_workbench.html.slim | 22 +++++++++++---------- ...import_compliance_control_sets_to_workgroups.rb | 5 +++++ db/schema.rb | 15 +++++++------- 5 files changed, 41 insertions(+), 33 deletions(-) create mode 100644 db/migrate/20180430122530_add_import_compliance_control_sets_to_workgroups.rb diff --git a/app/models/import/resource.rb b/app/models/import/resource.rb index 2c7889240..e88f03088 100644 --- a/app/models/import/resource.rb +++ b/app/models/import/resource.rb @@ -20,15 +20,18 @@ class Import::Resource < ApplicationModel return unless netex_import&.successful? - if workbench.import_compliance_control_set_id.present? && workbench_import_control_set.nil? + if workbench.import_compliance_control_set_id.present? && workbench_import_check_set.nil? ComplianceControlSetCopyWorker.perform_async workbench.import_compliance_control_set_id, referential_id return end - return if workbench_import_control_set && !workbench_import_control_set.successful? - - if workgroup.import_compliance_control_set_id.present? && workgroup_import_control_set.nil? - ComplianceControlSetCopyWorker.perform_async workgroup.import_compliance_control_set_id, referential_id + return if workbench_import_check_set && !workbench_import_control_set.successful? + workgroup.import_compliance_control_set_ids.each_with_index do |id, index| + compliance_check_set = workgroup_import_check_set[index] + return if compliance_check_set && !compliance_check_set.successful? + if compliance_check_set.nil? + ComplianceControlSetCopyWorker.perform_async id, referential_id + end end end end @@ -46,15 +49,17 @@ class Import::Resource < ApplicationModel import.children.where(name: self.reference).last end - def workbench_import_control_set + def workbench_import_check_set return unless referential.present? return unless referential.workbench.import_compliance_control_set_id.present? referential.compliance_check_sets.where(compliance_control_set_id: referential.workbench.import_compliance_control_set_id, referential_id: referential_id).last end - def workgroup_import_control_set + def workgroup_import_check_set(index) return unless referential.present? - return unless referential.workbench.workgroup.import_compliance_control_set_id.present? - referential.compliance_check_sets.where(compliance_control_set_id: referential.workbench.workgroup.import_compliance_control_set_id, referential_id: referential_id).last + return unless referential.workbench.workgroup.import_compliance_control_set_ids.present? + cs = referential.workbench.workgroup.import_compliance_control_sets[index] + return unless cs + referential.compliance_check_sets.where(compliance_control_set_id: cs.id, referential_id: referential_id).last end end diff --git a/app/models/workgroup.rb b/app/models/workgroup.rb index 6a1746eb8..247873869 100644 --- a/app/models/workgroup.rb +++ b/app/models/workgroup.rb @@ -24,12 +24,7 @@ class Workgroup < ApplicationModel export_types.include? export_name end - def import_compliance_control_set_id - # XXX - nil - end - - def import_compliance_control_set - import_compliance_control_set_id && ComplianceControlSet.find(import_compliance_control_set_id) + def import_compliance_control_sets + @import_compliance_control_sets ||= import_compliance_control_set_ids.map{|id| ComplianceControlSet.find(id)} end end diff --git a/app/views/imports/import/_workbench.html.slim b/app/views/imports/import/_workbench.html.slim index 0b6cc5945..4dcf949b0 100644 --- a/app/views/imports/import/_workbench.html.slim +++ b/app/views/imports/import/_workbench.html.slim @@ -12,20 +12,22 @@ ruby: controls = [] controls << TableBuilderHelper::Column.new( name: t('.stif_control'), - attribute: Proc.new { |n| import_status(n.workbench_import_control_set&.status, verbose: true, default_status: :pending) }, + attribute: Proc.new { |n| import_status(n.workbench_import_check_set&.status, verbose: true, default_status: :pending) }, sortable: false, link_to: lambda do |item| - item.workbench_import_control_set.present? && [@import.workbench, item.workbench_import_control_set] + item.workbench_import_check_set.present? && [@import.workbench, item.workbench_import_check_set] end ) if @workbench.import_compliance_control_set.present? - controls << TableBuilderHelper::Column.new( - name: t('.stif_control'), - attribute: Proc.new { |n| import_status(n.workgroup_import_control_set&.status, verbose: true, default_status: :pending) }, - sortable: false, - link_to: lambda do |item| - item.workbench_import_control_set.present? && [@import.workbench, item.workgroup_import_control_set] - end - ) if @workbench.workgroup.import_compliance_control_set.present? + controls += @workbench.workgroup.import_compliance_control_sets.each_with_index.map do |cs, i| + TableBuilderHelper::Column.new( + name: t('.organisation_control'), + attribute: Proc.new { |n| import_status(n.workgroup_import_check_set(i)&.status, verbose: true, default_status: :pending) }, + sortable: false, + link_to: lambda do |item| + item.workgroup_import_check_set(i).present? && [@import.workbench, item.workgroup_import_check_set(i)] + end + ) + end - if @import.resources.any? .col-lg-12 diff --git a/db/migrate/20180430122530_add_import_compliance_control_sets_to_workgroups.rb b/db/migrate/20180430122530_add_import_compliance_control_sets_to_workgroups.rb new file mode 100644 index 000000000..2fc7c8e3f --- /dev/null +++ b/db/migrate/20180430122530_add_import_compliance_control_sets_to_workgroups.rb @@ -0,0 +1,5 @@ +class AddImportComplianceControlSetsToWorkgroups < ActiveRecord::Migration + def change + add_column :workgroups, :import_compliance_control_set_ids, :integer, array: true, default: [] + end +end diff --git a/db/schema.rb b/db/schema.rb index b97af8f5c..4a049d7ae 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20180425160730) do +ActiveRecord::Schema.define(version: 20180430122530) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -1088,12 +1088,13 @@ ActiveRecord::Schema.define(version: 20180425160730) do create_table "workgroups", id: :bigserial, force: :cascade do |t| t.string "name" - t.integer "line_referential_id", limit: 8 - t.integer "stop_area_referential_id", limit: 8 - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.string "import_types", default: [], array: true - t.string "export_types", default: [], array: true + t.integer "line_referential_id", limit: 8 + t.integer "stop_area_referential_id", limit: 8 + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.string "import_types", default: [], array: true + t.string "export_types", default: [], array: true + t.integer "import_compliance_control_set_ids", default: [], array: true end add_foreign_key "access_links", "access_points", name: "aclk_acpt_fkey" -- cgit v1.2.3