From 3f17e1c0dbd41fb8a7106a39ec0b9c224f477a2d Mon Sep 17 00:00:00 2001 From: Pavel Balashou Date: Thu, 23 Apr 2026 12:21:34 +0200 Subject: [PATCH] [#74323] Replace user number with relevant information during project(s) migration https://community.openproject.org/wp/74323 - Remove Jira Migrator feature flag. --- .../wizard_step_confirm_import_component.rb | 11 ++++------- app/models/import/jira.rb | 2 ++ config/initializers/feature_decisions.rb | 4 ---- config/initializers/menus.rb | 4 ++-- config/locales/en.yml | 1 + config/routes.rb | 2 +- spec/features/admin/import/jira/instances_spec.rb | 2 +- spec/features/menu_items/admin_menu_item_spec.rb | 8 ++++---- 8 files changed, 15 insertions(+), 19 deletions(-) diff --git a/app/components/admin/import/jira/import_runs/wizard_step_confirm_import_component.rb b/app/components/admin/import/jira/import_runs/wizard_step_confirm_import_component.rb index ce70b8e5ed1..ecab7c4779e 100644 --- a/app/components/admin/import/jira/import_runs/wizard_step_confirm_import_component.rb +++ b/app/components/admin/import/jira/import_runs/wizard_step_confirm_import_component.rb @@ -38,9 +38,10 @@ module Admin::Import::Jira::ImportRuns projects_label(selected_projects_count), issues_label(selected_issues_count), statuses_label(selected_statuses_count), - types_label(selected_types_count), - users_label(available_users_count) - ].map { |label| { label:, checked: true } } + types_label(selected_types_count) + ] + .map { |label| { label:, checked: true } } + .push({ label: I18n.t(:"admin.jira.run.wizard.sections.confirm_import.label_users_import_explanation") }) end def selected_projects_count @@ -58,9 +59,5 @@ module Admin::Import::Jira::ImportRuns def selected_statuses_count model.selected["status_ids"]&.count || 0 end - - def available_users_count - model.available["total_users"] - end end end diff --git a/app/models/import/jira.rb b/app/models/import/jira.rb index 7d7d2aec637..1fbbc033426 100644 --- a/app/models/import/jira.rb +++ b/app/models/import/jira.rb @@ -32,6 +32,8 @@ module Import class Jira < ApplicationRecord self.table_name = "jiras" + has_many :jira_imports, dependent: :destroy + validate :url_must_be_http_or_https def client diff --git a/config/initializers/feature_decisions.rb b/config/initializers/feature_decisions.rb index 014b03061ac..2ea65a77b59 100644 --- a/config/initializers/feature_decisions.rb +++ b/config/initializers/feature_decisions.rb @@ -57,10 +57,6 @@ OpenProject::FeatureDecisions.add :portfolio_models, description: "Enables the creation and management of portfolio and program work spaces.", force_active: true -OpenProject::FeatureDecisions.add :jira_import, - description: "Enables Jira Migration Tool.", - force_active: false - OpenProject::FeatureDecisions.add :user_working_times, description: "Enables tracking of user working hours and non-working days." diff --git a/config/initializers/menus.rb b/config/initializers/menus.rb index 42425cb03e2..c1dff6e8bf4 100644 --- a/config/initializers/menus.rb +++ b/config/initializers/menus.rb @@ -679,13 +679,13 @@ Redmine::MenuManager.map :admin_menu do |menu| menu.push :import, { controller: "/admin/import/jira/instances", action: :index }, - if: ->(_) { User.current.admin? && OpenProject::FeatureDecisions.jira_import_active? }, + if: ->(_) { User.current.admin? }, caption: :label_import, icon: "desktop-download" menu.push :jira_import, { controller: "/admin/import/jira/instances", action: :index }, - if: ->(_) { User.current.admin? && OpenProject::FeatureDecisions.jira_import_active? }, + if: ->(_) { User.current.admin? }, caption: :label_jira_import, parent: :import end diff --git a/config/locales/en.yml b/config/locales/en.yml index 797f428cbfe..b206339b9f6 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -269,6 +269,7 @@ en: caption: "Review your import settings and start the import" caption_done: "Completed" label_available_data: "Available data to import" + label_users_import_explanation: "Users that are involved in selected projects (group memberships included)" button_start: "Start import" description: "You are about to start an import run with the following settings." label_progress: "Import in progress..." diff --git a/config/routes.rb b/config/routes.rb index f8abb0e3993..bc9cf3b0732 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -743,7 +743,7 @@ Rails.application.routes.draw do post "plugin/:id", action: :update_plugin end - namespace :import, constraints: lambda { |_request| OpenProject::FeatureDecisions.jira_import_active? } do + namespace :import do get "/", to: redirect("/admin/import/jira") resources :jira, controller: "/admin/import/jira/instances" do collection do diff --git a/spec/features/admin/import/jira/instances_spec.rb b/spec/features/admin/import/jira/instances_spec.rb index 92c3df37d99..993dbd18c5f 100644 --- a/spec/features/admin/import/jira/instances_spec.rb +++ b/spec/features/admin/import/jira/instances_spec.rb @@ -30,7 +30,7 @@ require "spec_helper" -RSpec.describe "Jira instance configuration", :js, with_flag: { jira_import: true } do +RSpec.describe "Jira instance configuration", :js do shared_let(:admin) { create(:admin) } current_user { admin } diff --git a/spec/features/menu_items/admin_menu_item_spec.rb b/spec/features/menu_items/admin_menu_item_spec.rb index 3d3df96db89..734ab70e9a2 100644 --- a/spec/features/menu_items/admin_menu_item_spec.rb +++ b/spec/features/menu_items/admin_menu_item_spec.rb @@ -46,8 +46,8 @@ RSpec.describe "Admin menu items", context "without having any menu items hidden in configuration" do it "must display all menu items" do expect(page).to have_test_selector("menu-blocks--container") - expect(page).to have_test_selector("menu-block", count: 23) - expect(page).to have_test_selector("op-menu--item-action", count: 24) # All plus 'overview' + expect(page).to have_test_selector("menu-block", count: 24) + expect(page).to have_test_selector("op-menu--item-action", count: 25) # All plus 'overview' end end @@ -57,10 +57,10 @@ RSpec.describe "Admin menu items", } do it "must not display the hidden menu items and blocks" do expect(page).to have_test_selector("menu-blocks--container") - expect(page).to have_test_selector("menu-block", count: 22) + expect(page).to have_test_selector("menu-block", count: 23) expect(page).not_to have_test_selector("menu-block", text: I18n.t(:label_color_plural)) - expect(page).to have_test_selector("op-menu--item-action", count: 23) # All plus 'overview' + expect(page).to have_test_selector("op-menu--item-action", count: 24) # All plus 'overview' expect(page).not_to have_test_selector("op-menu--item-action", text: I18n.t(:label_color_plural)) end end