summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-06-11 23:09:41 +0200
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-06-11 23:09:41 +0200
commitc69ca9912ed06876d96e0bb1aa7d511473867dc2 (patch)
tree35544f45f283f408d3eb1e3fd5f8fcbd235df223
parent8f142c4aaeac73743196b1648677eb712f70c87b (diff)
parentb0de6e9ae27a6364819f47d13d827a8aa253c83e (diff)
downloadgitlab-ce-c69ca9912ed06876d96e0bb1aa7d511473867dc2.tar.gz
Merge pull request #9371 from zenati/patch-2
An `in_namespace` scope is already present
-rw-r--r--app/controllers/admin/projects_controller.rb2
-rw-r--r--app/models/project.rb2
-rw-r--r--app/models/user.rb8
-rw-r--r--app/services/search/global_service.rb2
-rw-r--r--lib/tasks/gitlab/cleanup.rake2
-rw-r--r--lib/tasks/gitlab/web_hook.rake4
6 files changed, 11 insertions, 9 deletions
diff --git a/app/controllers/admin/projects_controller.rb b/app/controllers/admin/projects_controller.rb
index ee449badf59..f616ccf5684 100644
--- a/app/controllers/admin/projects_controller.rb
+++ b/app/controllers/admin/projects_controller.rb
@@ -5,7 +5,7 @@ class Admin::ProjectsController < Admin::ApplicationController
def index
@projects = Project.all
- @projects = @projects.where(namespace_id: params[:namespace_id]) if params[:namespace_id].present?
+ @projects = @projects.in_namespace(params[:namespace_id]) if params[:namespace_id].present?
@projects = @projects.where("visibility_level IN (?)", params[:visibility_levels]) if params[:visibility_levels].present?
@projects = @projects.with_push if params[:with_push].present?
@projects = @projects.abandoned if params[:abandoned].present?
diff --git a/app/models/project.rb b/app/models/project.rb
index 3c9f0dad28b..b161cbe86b9 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -158,7 +158,7 @@ class Project < ActiveRecord::Base
scope :without_user, ->(user) { where('projects.id NOT IN (:ids)', ids: user.authorized_projects.map(&:id) ) }
scope :without_team, ->(team) { team.projects.present? ? where('projects.id NOT IN (:ids)', ids: team.projects.map(&:id)) : scoped }
scope :not_in_group, ->(group) { where('projects.id NOT IN (:ids)', ids: group.project_ids ) }
- scope :in_namespace, ->(namespace) { where(namespace_id: namespace.id) }
+ scope :in_namespace, ->(namespace_ids) { where(namespace_id: namespace_ids) }
scope :in_group_namespace, -> { joins(:group) }
scope :personal, ->(user) { where(namespace_id: user.namespace_id) }
scope :joined, ->(user) { where('namespace_id != ?', user.namespace_id) }
diff --git a/app/models/user.rb b/app/models/user.rb
index 596dc7ea33a..8be0b622704 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -352,9 +352,11 @@ class User < ActiveRecord::Base
end
def owned_projects
- @owned_projects ||= begin
- Project.where(namespace_id: owned_groups.pluck(:id).push(namespace.id)).joins(:namespace)
- end
+ @owned_projects ||=
+ begin
+ namespace_ids = owned_groups.pluck(:id).push(namespace.id)
+ Project.in_namespace(namespace_ids).joins(:namespace)
+ end
end
# Team membership in authorized projects
diff --git a/app/services/search/global_service.rb b/app/services/search/global_service.rb
index 0bcc50c81a7..e904cb6c6fc 100644
--- a/app/services/search/global_service.rb
+++ b/app/services/search/global_service.rb
@@ -9,7 +9,7 @@ module Search
def execute
group = Group.find_by(id: params[:group_id]) if params[:group_id].present?
projects = ProjectsFinder.new.execute(current_user)
- projects = projects.where(namespace_id: group.id) if group
+ projects = projects.in_namespace(group.id) if group
project_ids = projects.pluck(:id)
Gitlab::SearchResults.new(project_ids, params[:search])
diff --git a/lib/tasks/gitlab/cleanup.rake b/lib/tasks/gitlab/cleanup.rake
index 3c9802a0be4..d49cb6778f1 100644
--- a/lib/tasks/gitlab/cleanup.rake
+++ b/lib/tasks/gitlab/cleanup.rake
@@ -51,7 +51,7 @@ namespace :gitlab do
git_base_path = Gitlab.config.gitlab_shell.repos_path
all_dirs = Dir.glob(git_base_path + '/*')
- global_projects = Project.where(namespace_id: nil).pluck(:path)
+ global_projects = Project.in_namespace(nil).pluck(:path)
puts git_base_path.yellow
puts "Looking for global repos to remove... "
diff --git a/lib/tasks/gitlab/web_hook.rake b/lib/tasks/gitlab/web_hook.rake
index f9f586db93c..412bcad1229 100644
--- a/lib/tasks/gitlab/web_hook.rake
+++ b/lib/tasks/gitlab/web_hook.rake
@@ -51,11 +51,11 @@ namespace :gitlab do
if namespace_path.blank?
Project
elsif namespace_path == '/'
- Project.where(namespace_id: nil)
+ Project.in_namespace(nil)
else
namespace = Namespace.where(path: namespace_path).first
if namespace
- Project.where(namespace_id: namespace.id)
+ Project.in_namespace(namespace.id)
else
puts "Namespace not found: #{namespace_path}".red
exit 2