Loading app/assets/javascripts/importer_status.js +2 −0 Original line number Diff line number Diff line Loading @@ -56,6 +56,8 @@ if (job.import_status === 'finished') { job_item.removeClass("active").addClass("success"); return status_field.html('<span><i class="fa fa-check"></i> done</span>'); } else if (job.import_status === 'scheduled') { return status_field.html("<i class='fa fa-spinner fa-spin'></i> scheduled"); } else if (job.import_status === 'started') { return status_field.html("<i class='fa fa-spinner fa-spin'></i> started"); } else { Loading app/controllers/projects/imports_controller.rb +1 −8 Original line number Diff line number Diff line Loading @@ -14,14 +14,7 @@ def create @project.import_url = params[:project][:import_url] if @project.save @project.reload if @project.import_failed? @project.import_retry else @project.import_start @project.add_import_job end @project.reload.import_schedule end redirect_to namespace_project_import_path(@project.namespace, @project) Loading app/models/application_setting.rb +1 −5 Original line number Diff line number Diff line Loading @@ -199,7 +199,7 @@ def self.ensure_cache_setup ApplicationSetting.define_attribute_methods end def self.defaults_ce def self.defaults { after_sign_up_text: nil, akismet_enabled: false, Loading Loading @@ -250,10 +250,6 @@ def self.defaults_ce } end def self.defaults defaults_ce end def self.create_from_defaults create(defaults) end Loading app/models/project.rb +25 −4 Original line number Diff line number Diff line Loading @@ -165,7 +165,7 @@ def update_forks_visibility_level has_many :todos, dependent: :destroy has_many :notification_settings, dependent: :destroy, as: :source has_one :import_data, dependent: :destroy, class_name: "ProjectImportData" has_one :import_data, dependent: :delete, class_name: "ProjectImportData" has_one :project_feature, dependent: :destroy has_one :statistics, class_name: 'ProjectStatistics', dependent: :delete has_many :container_repositories, dependent: :destroy Loading Loading @@ -298,8 +298,16 @@ def self.with_feature_available_for_user(feature, user) scope :excluding_project, ->(project) { where.not(id: project) } state_machine :import_status, initial: :none do event :import_schedule do transition [:none, :finished, :failed] => :scheduled end event :force_import_start do transition [:none, :finished, :failed] => :started end event :import_start do transition [:none, :finished] => :started transition scheduled: :started end event :import_finish do Loading @@ -307,18 +315,23 @@ def self.with_feature_available_for_user(feature, user) end event :import_fail do transition started: :failed transition [:scheduled, :started] => :failed end event :import_retry do transition failed: :started end state :scheduled state :started state :finished state :failed after_transition any => :finished, do: :reset_cache_and_import_attrs after_transition [:none, :finished, :failed] => :scheduled do |project, _| project.run_after_commit { add_import_job } end after_transition started: :finished, do: :reset_cache_and_import_attrs end class << self Loading Loading @@ -532,9 +545,17 @@ def imported? end def import_in_progress? import_started? || import_scheduled? end def import_started? import? && import_status == 'started' end def import_scheduled? import_status == 'scheduled' end def import_failed? import_status == 'failed' end Loading app/services/projects/create_service.rb +2 −3 Original line number Diff line number Diff line Loading @@ -48,15 +48,14 @@ def execute save_project_and_import_data(import_data) @project.import_start if @project.import? after_create_actions if @project.persisted? if @project.errors.empty? @project.add_import_job if @project.import? @project.import_schedule if @project.import? else fail(error: @project.errors.full_messages.join(', ')) end @project rescue ActiveRecord::RecordInvalid => e message = "Unable to save #{e.record.type}: #{e.record.errors.full_messages.join(", ")} " Loading Loading
app/assets/javascripts/importer_status.js +2 −0 Original line number Diff line number Diff line Loading @@ -56,6 +56,8 @@ if (job.import_status === 'finished') { job_item.removeClass("active").addClass("success"); return status_field.html('<span><i class="fa fa-check"></i> done</span>'); } else if (job.import_status === 'scheduled') { return status_field.html("<i class='fa fa-spinner fa-spin'></i> scheduled"); } else if (job.import_status === 'started') { return status_field.html("<i class='fa fa-spinner fa-spin'></i> started"); } else { Loading
app/controllers/projects/imports_controller.rb +1 −8 Original line number Diff line number Diff line Loading @@ -14,14 +14,7 @@ def create @project.import_url = params[:project][:import_url] if @project.save @project.reload if @project.import_failed? @project.import_retry else @project.import_start @project.add_import_job end @project.reload.import_schedule end redirect_to namespace_project_import_path(@project.namespace, @project) Loading
app/models/application_setting.rb +1 −5 Original line number Diff line number Diff line Loading @@ -199,7 +199,7 @@ def self.ensure_cache_setup ApplicationSetting.define_attribute_methods end def self.defaults_ce def self.defaults { after_sign_up_text: nil, akismet_enabled: false, Loading Loading @@ -250,10 +250,6 @@ def self.defaults_ce } end def self.defaults defaults_ce end def self.create_from_defaults create(defaults) end Loading
app/models/project.rb +25 −4 Original line number Diff line number Diff line Loading @@ -165,7 +165,7 @@ def update_forks_visibility_level has_many :todos, dependent: :destroy has_many :notification_settings, dependent: :destroy, as: :source has_one :import_data, dependent: :destroy, class_name: "ProjectImportData" has_one :import_data, dependent: :delete, class_name: "ProjectImportData" has_one :project_feature, dependent: :destroy has_one :statistics, class_name: 'ProjectStatistics', dependent: :delete has_many :container_repositories, dependent: :destroy Loading Loading @@ -298,8 +298,16 @@ def self.with_feature_available_for_user(feature, user) scope :excluding_project, ->(project) { where.not(id: project) } state_machine :import_status, initial: :none do event :import_schedule do transition [:none, :finished, :failed] => :scheduled end event :force_import_start do transition [:none, :finished, :failed] => :started end event :import_start do transition [:none, :finished] => :started transition scheduled: :started end event :import_finish do Loading @@ -307,18 +315,23 @@ def self.with_feature_available_for_user(feature, user) end event :import_fail do transition started: :failed transition [:scheduled, :started] => :failed end event :import_retry do transition failed: :started end state :scheduled state :started state :finished state :failed after_transition any => :finished, do: :reset_cache_and_import_attrs after_transition [:none, :finished, :failed] => :scheduled do |project, _| project.run_after_commit { add_import_job } end after_transition started: :finished, do: :reset_cache_and_import_attrs end class << self Loading Loading @@ -532,9 +545,17 @@ def imported? end def import_in_progress? import_started? || import_scheduled? end def import_started? import? && import_status == 'started' end def import_scheduled? import_status == 'scheduled' end def import_failed? import_status == 'failed' end Loading
app/services/projects/create_service.rb +2 −3 Original line number Diff line number Diff line Loading @@ -48,15 +48,14 @@ def execute save_project_and_import_data(import_data) @project.import_start if @project.import? after_create_actions if @project.persisted? if @project.errors.empty? @project.add_import_job if @project.import? @project.import_schedule if @project.import? else fail(error: @project.errors.full_messages.join(', ')) end @project rescue ActiveRecord::RecordInvalid => e message = "Unable to save #{e.record.type}: #{e.record.errors.full_messages.join(", ")} " Loading