diff options
| author | Zog | 2018-05-09 08:41:23 +0200 |
|---|---|---|
| committer | Zog | 2018-05-09 08:41:23 +0200 |
| commit | 9434284e4f12b4b576762dabbd2b0a308e28bc61 (patch) | |
| tree | 227e341a2dd8d33c992f52ceb7c6be99e687db93 | |
| parent | 430550b965035be3d78abad790e6c44fdc69087f (diff) | |
| download | chouette-core-9434284e4f12b4b576762dabbd2b0a308e28bc61.tar.bz2 | |
Refs #6960; Update imports to use nesw implementation
| -rw-r--r-- | app/helpers/table_builder_helper.rb | 24 | ||||
| -rw-r--r-- | app/models/compliance_check_set.rb | 4 | ||||
| -rw-r--r-- | app/models/concerns/iev_interfaces/task.rb | 12 | ||||
| -rw-r--r-- | app/models/import/base.rb | 9 | ||||
| -rw-r--r-- | app/models/import/gtfs.rb | 13 | ||||
| -rw-r--r-- | app/models/import/resource.rb | 29 | ||||
| -rw-r--r-- | app/models/workgroup.rb | 9 | ||||
| -rw-r--r-- | app/views/imports/import/_workbench.html.slim | 21 | ||||
| -rw-r--r-- | app/workers/compliance_control_set_copy_worker.rb | 1 | ||||
| -rw-r--r-- | config/locales/workgroups.en.yml | 10 | ||||
| -rw-r--r-- | config/locales/workgroups.fr.yml | 10 |
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 |
