Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-10-19 15:57:54 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-10-19 15:57:54 +0300
commit419c53ec62de6e97a517abd5fdd4cbde3a942a34 (patch)
tree1f43a548b46bca8a5fb8fe0c31cef1883d49c5b6 /app/finders
parent1da20d9135b3ad9e75e65b028bffc921aaf8deb7 (diff)
Add latest changes from gitlab-org/gitlab@16-5-stable-eev16.5.0-rc42
Diffstat (limited to 'app/finders')
-rw-r--r--app/finders/concerns/packages/finder_helper.rb4
-rw-r--r--app/finders/merge_requests/oldest_per_commit_finder.rb14
-rw-r--r--app/finders/packages/maven/package_finder.rb6
-rw-r--r--app/finders/packages/npm/packages_for_user_finder.rb7
-rw-r--r--app/finders/projects/ml/model_finder.rb2
-rw-r--r--app/finders/projects_finder.rb2
-rw-r--r--app/finders/snippets_finder.rb14
-rw-r--r--app/finders/vs_code/settings/settings_finder.rb23
8 files changed, 56 insertions, 16 deletions
diff --git a/app/finders/concerns/packages/finder_helper.rb b/app/finders/concerns/packages/finder_helper.rb
index 0ae99782cd3..585b35981a6 100644
--- a/app/finders/concerns/packages/finder_helper.rb
+++ b/app/finders/concerns/packages/finder_helper.rb
@@ -13,11 +13,13 @@ module Packages
project.packages.installable
end
- def packages_visible_to_user(user, within_group:)
+ def packages_visible_to_user(user, within_group:, with_package_registry_enabled: false)
return ::Packages::Package.none unless within_group
return ::Packages::Package.none unless Ability.allowed?(user, :read_group, within_group)
projects = projects_visible_to_reporters(user, within_group: within_group)
+ projects = projects.with_package_registry_enabled if with_package_registry_enabled
+
::Packages::Package.for_projects(projects.select(:id)).installable
end
diff --git a/app/finders/merge_requests/oldest_per_commit_finder.rb b/app/finders/merge_requests/oldest_per_commit_finder.rb
index 5da7a08e36c..16b5964e242 100644
--- a/app/finders/merge_requests/oldest_per_commit_finder.rb
+++ b/app/finders/merge_requests/oldest_per_commit_finder.rb
@@ -18,8 +18,8 @@ module MergeRequests
mapping = {}
shas = commits.map(&:id)
- # To include merge requests by the merge/squash SHA, we don't need to go
- # through any diff rows.
+ # To include merge requests by the merged/merge/squash SHA, we don't need
+ # to go through any diff rows.
#
# We can't squeeze all this into a single query, as the diff based data
# relies on a GROUP BY. On the other hand, retrieving MRs by their merge
@@ -27,17 +27,19 @@ module MergeRequests
@project
.merge_requests
.preload_target_project
- .by_merge_or_squash_commit_sha(shas)
+ .by_merged_or_merge_or_squash_commit_sha(shas)
.each do |mr|
- # Merge/squash SHAs can't be in the merge request itself. It _is_
- # possible a newer merge request includes the commit, but in that case
- # we still want the oldest merge request.
+ # SHAs for merge commits, squash commits, and rebased source SHAs,
+ # can't be in the merge request source branch. It _is_ possible a
+ # newer merge request includes the commit, but in that case we still
+ # want the oldest merge request.
#
# It's also possible that a merge request produces both a squashed
# commit and a merge commit. In that case we want to store the mapping
# for both the SHAs.
mapping[mr.squash_commit_sha] = mr if mr.squash_commit_sha
mapping[mr.merge_commit_sha] = mr if mr.merge_commit_sha
+ mapping[mr.merged_commit_sha] = mr if mr.merged_commit_sha
end
remaining = shas - mapping.keys
diff --git a/app/finders/packages/maven/package_finder.rb b/app/finders/packages/maven/package_finder.rb
index cc28d951f52..03855afb6e4 100644
--- a/app/finders/packages/maven/package_finder.rb
+++ b/app/finders/packages/maven/package_finder.rb
@@ -4,11 +4,7 @@ module Packages
module Maven
class PackageFinder < ::Packages::GroupOrProjectPackageFinder
def execute
- packages.last
- end
-
- def execute!
- packages.last!
+ packages
end
private
diff --git a/app/finders/packages/npm/packages_for_user_finder.rb b/app/finders/packages/npm/packages_for_user_finder.rb
index f42e49f9184..dc1d3b6e7fe 100644
--- a/app/finders/packages/npm/packages_for_user_finder.rb
+++ b/app/finders/packages/npm/packages_for_user_finder.rb
@@ -3,6 +3,8 @@
module Packages
module Npm
class PackagesForUserFinder < ::Packages::GroupOrProjectPackageFinder
+ extend ::Gitlab::Utils::Override
+
def execute
packages
end
@@ -13,6 +15,11 @@ module Packages
base.npm
.with_name(@params[:package_name])
end
+
+ override :group_packages
+ def group_packages
+ packages_visible_to_user(@current_user, within_group: @project_or_group, with_package_registry_enabled: true)
+ end
end
end
end
diff --git a/app/finders/projects/ml/model_finder.rb b/app/finders/projects/ml/model_finder.rb
index 99c66f53de7..1e407ba4aa4 100644
--- a/app/finders/projects/ml/model_finder.rb
+++ b/app/finders/projects/ml/model_finder.rb
@@ -11,7 +11,7 @@ module Projects
::Ml::Model
.by_project(@project)
.including_latest_version
- .limit(100) # This is a temporary limit before we add pagination
+ .with_version_count
end
end
end
diff --git a/app/finders/projects_finder.rb b/app/finders/projects_finder.rb
index e6ee4355fd4..87edf36d1ce 100644
--- a/app/finders/projects_finder.rb
+++ b/app/finders/projects_finder.rb
@@ -61,7 +61,7 @@ class ProjectsFinder < UnionFinder
collection = Project.wrap_with_cte(collection) if use_cte
collection = filter_projects(collection)
- sort(collection)
+ sort(collection).allow_cross_joins_across_databases(url: "https://gitlab.com/gitlab-org/gitlab/-/issues/427628")
end
private
diff --git a/app/finders/snippets_finder.rb b/app/finders/snippets_finder.rb
index cb824aca33f..e09de1f6612 100644
--- a/app/finders/snippets_finder.rb
+++ b/app/finders/snippets_finder.rb
@@ -42,6 +42,7 @@ class SnippetsFinder < UnionFinder
include FinderMethods
include Gitlab::Utils::StrongMemoize
include CreatedAtFilter
+ include Gitlab::Allowable
attr_reader :current_user, :params
@@ -79,6 +80,7 @@ class SnippetsFinder < UnionFinder
snippets = all_snippets
snippets = by_ids(snippets)
snippets = snippets.with_optional_visibility(visibility_from_scope)
+ snippets = hide_created_by_banned_user(snippets)
end
by_created_at(snippets)
@@ -87,7 +89,7 @@ class SnippetsFinder < UnionFinder
def return_all_available_and_permited?
# Currently limited to access_levels `admin` and `auditor`
# See policies/base_policy.rb files for specifics.
- params[:all_available] && current_user&.can_read_all_resources?
+ params[:all_available] && can?(current_user, :read_all_resources)
end
def all_snippets
@@ -126,7 +128,7 @@ class SnippetsFinder < UnionFinder
queries = []
queries << personal_snippets unless only_project?
- if Ability.allowed?(current_user, :read_cross_project)
+ if can?(current_user, :read_cross_project)
queries << snippets_of_visible_projects
queries << snippets_of_authorized_projects if current_user
end
@@ -207,6 +209,14 @@ class SnippetsFinder < UnionFinder
snippets.id_in(params[:ids])
end
+ def hide_created_by_banned_user(snippets)
+ # if admin -> return all snippets, if not-admin -> filter out snippets by banned user
+ return snippets if can?(current_user, :read_all_resources)
+ return snippets unless Feature.enabled?(:hide_snippets_of_banned_users)
+
+ snippets.without_created_by_banned_user
+ end
+
def author
strong_memoize(:author) do
next unless params[:author].present?
diff --git a/app/finders/vs_code/settings/settings_finder.rb b/app/finders/vs_code/settings/settings_finder.rb
new file mode 100644
index 00000000000..459ccdbe566
--- /dev/null
+++ b/app/finders/vs_code/settings/settings_finder.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+module VsCode
+ module Settings
+ class SettingsFinder
+ def initialize(current_user, setting_types)
+ @current_user = current_user
+ @setting_types = setting_types
+ end
+
+ def execute
+ relation = User.find(current_user.id).vscode_settings
+ return relation unless setting_types.present?
+
+ relation.by_setting_type(setting_types)
+ end
+
+ private
+
+ attr_accessor :current_user, :setting_types
+ end
+ end
+end