aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZog2018-05-09 08:41:23 +0200
committerZog2018-05-09 08:41:23 +0200
commit9434284e4f12b4b576762dabbd2b0a308e28bc61 (patch)
tree227e341a2dd8d33c992f52ceb7c6be99e687db93
parent430550b965035be3d78abad790e6c44fdc69087f (diff)
downloadchouette-core-9434284e4f12b4b576762dabbd2b0a308e28bc61.tar.bz2
Refs #6960; Update imports to use nesw implementation
-rw-r--r--app/helpers/table_builder_helper.rb24
-rw-r--r--app/models/compliance_check_set.rb4
-rw-r--r--app/models/concerns/iev_interfaces/task.rb12
-rw-r--r--app/models/import/base.rb9
-rw-r--r--app/models/import/gtfs.rb13
-rw-r--r--app/models/import/resource.rb29
-rw-r--r--app/models/workgroup.rb9
-rw-r--r--app/views/imports/import/_workbench.html.slim21
-rw-r--r--app/workers/compliance_control_set_copy_worker.rb1
-rw-r--r--config/locales/workgroups.en.yml10
-rw-r--r--config/locales/workgroups.fr.yml10
11 files changed, 77 insertions, 65 deletions
diff --git a/app/helpers/table_builder_helper.rb b/app/helpers/table_builder_helper.rb
index 8c73cb33c..0b24a9c05 100644
--- a/app/helpers/table_builder_helper.rb
+++ b/app/helpers/table_builder_helper.rb
@@ -153,7 +153,17 @@ module TableBuilderHelper
i = columns.index(column)
if overhead[i].blank?
- if (i > 0) && overhead[i - 1][:width] && (overhead[i - 1][:width] > 1)
+ prev = nil
+ if i > 0
+ (i-1..0).each do |j|
+ o = overhead[j]
+ if (j + o[:width].to_i) >= i
+ prev = o
+ break
+ end
+ end
+ end
+ if prev
clsArrayH = overhead[i - 1][:cls].split
hcont << content_tag(:th, build_column_header(
@@ -234,7 +244,17 @@ module TableBuilderHelper
i = columns.index(column)
if overhead[i].blank?
- if (i > 0) && overhead[i - 1][:width] && (overhead[i - 1][:width] > 1)
+ prev = nil
+ if i > 0
+ (i-1..0).each do |j|
+ o = overhead[j]
+ if (j + o[:width].to_i) >= i
+ prev = o
+ break
+ end
+ end
+ end
+ if prev
clsArrayAlt = overhead[i - 1][:cls].split
bcont << content_tag(:td, link, title: 'Voir', class: td_cls(clsArrayAlt, extra_class))
diff --git a/app/models/compliance_check_set.rb b/app/models/compliance_check_set.rb
index eb0e23d82..f29ff4de5 100644
--- a/app/models/compliance_check_set.rb
+++ b/app/models/compliance_check_set.rb
@@ -26,6 +26,10 @@ class ComplianceCheckSet < ApplicationModel
%w(successful failed warning aborted canceled)
end
+ def successful?
+ status.to_s == "successful"
+ end
+
def self.abort_old
where(
'created_at < ? AND status NOT IN (?)',
diff --git a/app/models/concerns/iev_interfaces/task.rb b/app/models/concerns/iev_interfaces/task.rb
index 3e4dd52ca..70250b3c0 100644
--- a/app/models/concerns/iev_interfaces/task.rb
+++ b/app/models/concerns/iev_interfaces/task.rb
@@ -31,6 +31,16 @@ module IevInterfaces::Task
before_save :initialize_fields, on: :create
after_save :notify_parent
+
+ status.values.each do |s|
+ define_method "#{s}!" do
+ update status: s
+ end
+
+ define_method "#{s}?" do
+ status&.to_s == s
+ end
+ end
end
module ClassMethods
@@ -117,9 +127,11 @@ module IevInterfaces::Task
def call_boiv_iev
Rails.logger.error("Begin IEV call for import")
+ running!
Net::HTTP.get iev_callback_url
Rails.logger.error("End IEV call for import")
rescue Exception => e
+ aborted!
logger.error "IEV server error : #{e.message}"
logger.error e.backtrace.inspect
end
diff --git a/app/models/import/base.rb b/app/models/import/base.rb
index baa25c3df..dcd710e58 100644
--- a/app/models/import/base.rb
+++ b/app/models/import/base.rb
@@ -44,15 +44,6 @@ class Import::Base < ApplicationModel
private
- def failed!
- update status: :failed
- end
-
- def aborted!
- Rails.logger.info "=== aborted ==="
- update status: :aborted
- end
-
def initialize_fields
super
self.token_download ||= SecureRandom.urlsafe_base64
diff --git a/app/models/import/gtfs.rb b/app/models/import/gtfs.rb
index 4f0dde9d1..520cc88e9 100644
--- a/app/models/import/gtfs.rb
+++ b/app/models/import/gtfs.rb
@@ -14,9 +14,8 @@ class Import::Gtfs < Import::Base
@resource ||= parent.resources.find_or_create_by(name: self.name, resource_type: "referential", reference: self.name)
end
- def notify_parent
- super
- main_resource.update_status_from_importer self.status
+ def next_step
+ main_resource.next_step
end
def create_message args
@@ -336,10 +335,10 @@ class Import::Gtfs < Import::Base
end
def notify_parent
- return unless parent.present?
- return if notified_parent_at
- parent.child_change
- update_column :notified_parent_at, Time.now
+ if super
+ main_resource.update_status_from_importer self.status
+ next_step
+ end
end
end
diff --git a/app/models/import/resource.rb b/app/models/import/resource.rb
index e88f03088..343eb9b7d 100644
--- a/app/models/import/resource.rb
+++ b/app/models/import/resource.rb
@@ -20,17 +20,11 @@ class Import::Resource < ApplicationModel
return unless netex_import&.successful?
- 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_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?
+ workbench.workgroup.import_compliance_control_sets.map do |key, label|
+ next unless (control_set = workbench.compliance_control_set(key)).present?
+ compliance_check_set = workbench_import_check_set key
if compliance_check_set.nil?
- ComplianceControlSetCopyWorker.perform_async id, referential_id
+ ComplianceControlSetCopyWorker.perform_async control_set.id, referential_id
end
end
end
@@ -49,17 +43,10 @@ class Import::Resource < ApplicationModel
import.children.where(name: self.reference).last
end
- 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_check_set(index)
+ def workbench_import_check_set key
return unless referential.present?
- 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
+ control_set = referential.workbench.compliance_control_set(key)
+ return unless control_set.present?
+ referential.compliance_check_sets.where(compliance_control_set_id: control_set.id, referential_id: referential_id).last
end
end
diff --git a/app/models/workgroup.rb b/app/models/workgroup.rb
index b1cdde2c1..499441cd3 100644
--- a/app/models/workgroup.rb
+++ b/app/models/workgroup.rb
@@ -39,6 +39,15 @@ class Workgroup < ApplicationModel
h
end
end
+ def import_compliance_control_sets
+ %i(
+ import
+ workbench
+ ).inject({}) do |h, k|
+ h[k] = "workgroups.available_compliance_control_sets.#{k}".t.capitalize
+ h
+ end
+ end
# XXX
# def import_compliance_control_sets
diff --git a/app/views/imports/import/_workbench.html.slim b/app/views/imports/import/_workbench.html.slim
index 17341913c..a2eeca1e5 100644
--- a/app/views/imports/import/_workbench.html.slim
+++ b/app/views/imports/import/_workbench.html.slim
@@ -9,22 +9,13 @@
= render 'shared/iev_interfaces/messages', messages: @import.messages
ruby:
- controls = []
- controls << TableBuilderHelper::Column.new(
- name: t('.stif_control'),
- 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_check_set.present? && [@import.workbench, item.workbench_import_check_set]
- end
- ) if @workbench.import_compliance_control_set.present?
- controls += @workbench.workgroup.import_compliance_control_sets.each_with_index.map do |cs, i|
+ controls = @workbench.workgroup.available_compliance_control_sets.map do |key, label|
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) },
+ name: label,
+ attribute: Proc.new { |n| n.workbench.compliance_control_set(key).present? ? import_status(n.workbench_import_check_set(key)&.status, verbose: true, default_status: (n.status == "ERROR" ? :aborted : :pending)) : '-' },
sortable: false,
link_to: lambda do |item|
- item.workgroup_import_check_set(i).present? && [@import.workbench, item.workgroup_import_check_set(i)]
+ item.workbench_import_check_set(key).present? && [@import.workbench, item.workbench_import_check_set(key)]
end
)
end
@@ -43,7 +34,7 @@ ruby:
), \
TableBuilderHelper::Column.new( \
key: :status, \
- attribute: Proc.new { |n| import_status(n.status, verbose: true, default_status: :pending) }, \
+ attribute: Proc.new { |n| import_status(n.netex_import&.status || n.status, verbose: true, default_status: :pending) }, \
sortable: false, \
link_to: lambda do |item| \
item.netex_import.present? ? [@import.workbench, item.netex_import] : [@import.workbench, @import, item] \
@@ -57,6 +48,6 @@ ruby:
controls.present? ? { \
title: I18n.t('imports.show.summary').html_safe, \
width: controls.size, \
- cls: 'overheaded-default colspan="2"' \
+ cls: "overheaded-default colspan='#{controls.size}'" \
} : nil \
].compact
diff --git a/app/workers/compliance_control_set_copy_worker.rb b/app/workers/compliance_control_set_copy_worker.rb
index d18bb0c88..337b92f4b 100644
--- a/app/workers/compliance_control_set_copy_worker.rb
+++ b/app/workers/compliance_control_set_copy_worker.rb
@@ -3,7 +3,6 @@ class ComplianceControlSetCopyWorker
def perform(control_set_id, referential_id)
check_set = ComplianceControlSetCopier.new.copy(control_set_id, referential_id)
-
begin
Net::HTTP.get(URI("#{Rails.configuration.iev_url}/boiv_iev/referentials/validator/new?id=#{check_set.id}"))
rescue Exception => e
diff --git a/config/locales/workgroups.en.yml b/config/locales/workgroups.en.yml
index deb5b58f9..506d5367e 100644
--- a/config/locales/workgroups.en.yml
+++ b/config/locales/workgroups.en.yml
@@ -3,8 +3,8 @@ en:
edit:
title: "Paramétrages de l'application"
available_compliance_control_sets:
- import_id:
- merge_id:
- automatic_id:
- workgroup_id:
- workbench_id:
+ import: after import
+ merge: after merge
+ automatic: automatic
+ workgroup: workgroup
+ workbench: workbench
diff --git a/config/locales/workgroups.fr.yml b/config/locales/workgroups.fr.yml
index 3fb932c18..17e40f720 100644
--- a/config/locales/workgroups.fr.yml
+++ b/config/locales/workgroups.fr.yml
@@ -4,8 +4,8 @@ fr:
title: "Paramétrages de l'application"
available_compliance_control_sets:
- import_id: jeu de données après import
- merge_id: jeu de données avant intégration
- automatic_id: offre transporteur
- workgroup_id: offre idf
- workbench_id: automatique
+ import: jeu de données après import
+ merge: jeu de données avant intégration
+ automatic: offre transporteur
+ workgroup: offre idf
+ workbench: automatique