diff options
| -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 | 
