diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-08-29 00:10:41 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-08-29 00:10:41 +0300 |
commit | 9a4a8e6be70657c1a30b0c602ea2ba58576257fe (patch) | |
tree | 6a276e9b1171830765fec54bdd064849da484b2e /app | |
parent | 672c5fcf46b385257ce01c2f773a65aa3578175d (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
-rw-r--r-- | app/assets/javascripts/repository/components/last_commit.vue | 22 | ||||
-rw-r--r-- | app/controllers/projects/environments_controller.rb | 6 | ||||
-rw-r--r-- | app/controllers/projects/jobs_controller.rb | 8 | ||||
-rw-r--r-- | app/mailers/emails/profile.rb | 2 | ||||
-rw-r--r-- | app/models/group.rb | 12 | ||||
-rw-r--r-- | app/models/project.rb | 3 | ||||
-rw-r--r-- | app/models/project_team.rb | 1 | ||||
-rw-r--r-- | app/services/groups/destroy_service.rb | 5 | ||||
-rw-r--r-- | app/services/merge_requests/create_ref_service.rb | 4 | ||||
-rw-r--r-- | app/services/projects/destroy_service.rb | 6 | ||||
-rw-r--r-- | app/views/notify/new_email_address_added_email.html.haml (renamed from app/views/notify/new_email_address_added_email.haml) | 0 | ||||
-rw-r--r-- | app/views/notify/new_email_address_added_email.text.erb (renamed from app/views/notify/new_email_address_added_email.erb) | 0 |
12 files changed, 39 insertions, 30 deletions
diff --git a/app/assets/javascripts/repository/components/last_commit.vue b/app/assets/javascripts/repository/components/last_commit.vue index fa51ef30546..e03bec1c922 100644 --- a/app/assets/javascripts/repository/components/last_commit.vue +++ b/app/assets/javascripts/repository/components/last_commit.vue @@ -4,7 +4,7 @@ import SafeHtml from '~/vue_shared/directives/safe_html'; import defaultAvatarUrl from 'images/no_avatar.png'; import pathLastCommitQuery from 'shared_queries/repository/path_last_commit.query.graphql'; import { sprintf, s__ } from '~/locale'; -import CiIcon from '~/vue_shared/components/ci_icon.vue'; +import CiBadgeLink from '~/vue_shared/components/ci_badge_link.vue'; import ClipboardButton from '~/vue_shared/components/clipboard_button.vue'; import TimeagoTooltip from '~/vue_shared/components/time_ago_tooltip.vue'; import UserAvatarLink from '~/vue_shared/components/user_avatar/user_avatar_link.vue'; @@ -20,13 +20,13 @@ export default { UserAvatarLink, TimeagoTooltip, ClipboardButton, - CiIcon, GlButton, GlButtonGroup, GlLink, GlLoadingIcon, UserAvatarImage, SignatureBadge, + CiBadgeLink, }, directives: { GlTooltip: GlTooltipDirective, @@ -191,18 +191,14 @@ export default { > <signature-badge v-if="commit.signature" :signature="commit.signature" /> <div v-if="commit.pipeline" class="ci-status-link"> - <gl-link - v-gl-tooltip.left - :href="commit.pipeline.detailedStatus.detailsPath" - :title="statusTitle" + <ci-badge-link + :status="commit.pipeline.detailedStatus" + :details-path="commit.pipeline.detailedStatus.detailsPath" + :aria-label="statusTitle" + badge-size="lg" + :show-text="false" class="js-commit-pipeline" - > - <ci-icon - :status="commit.pipeline.detailedStatus" - :size="24" - :aria-label="statusTitle" - /> - </gl-link> + /> </div> <gl-button-group class="gl-ml-4 js-commit-sha-group"> <gl-button label class="gl-font-monospace" data-testid="last-commit-id-label">{{ diff --git a/app/controllers/projects/environments_controller.rb b/app/controllers/projects/environments_controller.rb index e1e0bb83b40..f17b70cf62a 100644 --- a/app/controllers/projects/environments_controller.rb +++ b/app/controllers/projects/environments_controller.rb @@ -109,10 +109,8 @@ class Projects::EnvironmentsController < Projects::ApplicationController job = stop_actions.first if stop_actions&.count == 1 action_or_env_url = - if job.instance_of?(::Ci::Build) - polymorphic_url([project, job]) - elsif job.instance_of?(::Ci::Bridge) - project_pipeline_url(project, job.pipeline_id) + if job + project_job_url(project, job) else project_environment_url(project, @environment) end diff --git a/app/controllers/projects/jobs_controller.rb b/app/controllers/projects/jobs_controller.rb index 4e0b304a2ee..cdce9f883f2 100644 --- a/app/controllers/projects/jobs_controller.rb +++ b/app/controllers/projects/jobs_controller.rb @@ -8,8 +8,8 @@ class Projects::JobsController < Projects::ApplicationController urgency :low, [:index, :show, :trace, :retry, :play, :cancel, :unschedule, :erase, :raw] - before_action :find_job_as_build, except: [:index, :play, :retry] - before_action :find_job_as_processable, only: [:play, :retry] + before_action :find_job_as_build, except: [:index, :play, :retry, :show] + before_action :find_job_as_processable, only: [:play, :retry, :show] before_action :authorize_read_build_trace!, only: [:trace, :raw] before_action :authorize_read_build! before_action :authorize_update_build!, @@ -38,6 +38,10 @@ class Projects::JobsController < Projects::ApplicationController end def show + if @build.instance_of?(::Ci::Bridge) + redirect_to project_pipeline_path(@build.downstream_pipeline.project, @build.downstream_pipeline.id) + end + respond_to do |format| format.html format.json do diff --git a/app/mailers/emails/profile.rb b/app/mailers/emails/profile.rb index 25d68d47228..b7ba21c6f12 100644 --- a/app/mailers/emails/profile.rb +++ b/app/mailers/emails/profile.rb @@ -155,7 +155,7 @@ module Emails @user = user @email = email - mail_with_locale(to: @user.notification_email_or_default, subject: subject(_("New email address added"))) + email_with_layout(to: @user.notification_email_or_default, subject: subject(_("New email address added"))) end def new_achievement_email(user, achievement) diff --git a/app/models/group.rb b/app/models/group.rb index 9df3c143e0c..944566bce94 100644 --- a/app/models/group.rb +++ b/app/models/group.rb @@ -36,10 +36,10 @@ class Group < Namespace alias_method :members, :group_members has_many :users, through: :group_members - has_many :owners, - -> { where(members: { access_level: Gitlab::Access::OWNER }) }, - through: :all_group_members, - source: :user + has_many :owners, -> { + where(members: { access_level: Gitlab::Access::OWNER }) + .allow_cross_joins_across_databases(url: "https://gitlab.com/gitlab-org/gitlab/-/issues/422405") + }, through: :all_group_members, source: :user has_many :requesters, -> { where.not(requested_at: nil) }, dependent: :destroy, as: :source, class_name: 'GroupMember' # rubocop:disable Cop/ActiveRecordDependent has_many :namespace_requesters, -> { where.not(requested_at: nil).unscope(where: %i[source_id source_type]) }, @@ -341,6 +341,10 @@ class Group < Namespace end end + def users + super.loaded? ? super : super.allow_cross_joins_across_databases(url: "https://gitlab.com/gitlab-org/gitlab/-/issues/422405") + end + # Overrides notification_settings has_many association # This allows to apply notification settings from parent groups # to child groups and projects. diff --git a/app/models/project.rb b/app/models/project.rb index 3d97628c216..185ab947a8d 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -338,7 +338,8 @@ class Project < ApplicationRecord primary_key: :project_namespace_id, foreign_key: :member_namespace_id, inverse_of: :project, class_name: 'ProjectMember' - has_many :users, through: :project_members + has_many :users, -> { allow_cross_joins_across_databases(url: "https://gitlab.com/gitlab-org/gitlab/-/issues/422405") }, + through: :project_members has_many :project_callouts, class_name: 'Users::ProjectCallout', foreign_key: :project_id diff --git a/app/models/project_team.rb b/app/models/project_team.rb index 3b9b82ee094..34754f4fc95 100644 --- a/app/models/project_team.rb +++ b/app/models/project_team.rb @@ -80,6 +80,7 @@ class ProjectTeam # so we filter out only members of project or project's group def members_in_project_and_ancestors members.where(id: member_user_ids) + .allow_cross_joins_across_databases(url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/422405') end def members_with_access_levels(access_levels = []) diff --git a/app/services/groups/destroy_service.rb b/app/services/groups/destroy_service.rb index 45e8972213e..0b54de469f8 100644 --- a/app/services/groups/destroy_service.rb +++ b/app/services/groups/destroy_service.rb @@ -83,7 +83,10 @@ module Groups # rubocop:disable CodeReuse/ActiveRecord def destroy_group_bots - bot_ids = group.members_and_requesters.joins(:user).merge(User.project_bot).pluck(:user_id) + bot_ids = group.members_and_requesters.joins(:user) + .merge(User.project_bot) + .allow_cross_joins_across_databases(url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/422405') + .pluck(:user_id) current_user_id = current_user.id group.run_after_commit do diff --git a/app/services/merge_requests/create_ref_service.rb b/app/services/merge_requests/create_ref_service.rb index e0f10183bac..b0039cfbf69 100644 --- a/app/services/merge_requests/create_ref_service.rb +++ b/app/services/merge_requests/create_ref_service.rb @@ -25,9 +25,7 @@ module MergeRequests source_sha = initial_source_sha # the SHA to be the merged result of the source (minus the merge commit) expected_old_oid = "" # the SHA we expect target_ref to be at prior to an update (an optimistic lock) - # TODO: Update this message with the removal of FF merge_trains_create_ref_service and update tests - # This is for compatibility with MergeToRefService during the rollout. - return ServiceResponse.error(message: '3:Invalid merge source') unless first_parent_sha.present? + return ServiceResponse.error(message: 'Invalid merge source') unless first_parent_sha.present? commit_sha, source_sha, expected_old_oid = maybe_squash!(commit_sha, source_sha, expected_old_oid) commit_sha, source_sha, expected_old_oid = maybe_rebase!(commit_sha, source_sha, expected_old_oid) diff --git a/app/services/projects/destroy_service.rb b/app/services/projects/destroy_service.rb index 0ae6fcb4d97..a2a2f9d2800 100644 --- a/app/services/projects/destroy_service.rb +++ b/app/services/projects/destroy_service.rb @@ -255,7 +255,11 @@ module Projects # We need to remove them when a project is deleted # rubocop: disable CodeReuse/ActiveRecord def destroy_project_bots! - project.members.includes(:user).references(:user).merge(User.project_bot).each do |member| + members = project.members + .allow_cross_joins_across_databases(url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/422405') + .includes(:user).references(:user).merge(User.project_bot) + + members.each do |member| Users::DestroyService.new(current_user).execute(member.user, skip_authorization: true) end end diff --git a/app/views/notify/new_email_address_added_email.haml b/app/views/notify/new_email_address_added_email.html.haml index 6d00aaedfd5..6d00aaedfd5 100644 --- a/app/views/notify/new_email_address_added_email.haml +++ b/app/views/notify/new_email_address_added_email.html.haml diff --git a/app/views/notify/new_email_address_added_email.erb b/app/views/notify/new_email_address_added_email.text.erb index 3af1953c902..3af1953c902 100644 --- a/app/views/notify/new_email_address_added_email.erb +++ b/app/views/notify/new_email_address_added_email.text.erb |