summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorBob Van Landuyt <bob@vanlanduyt.co>2017-11-09 15:59:11 +0100
committerBob Van Landuyt <bob@vanlanduyt.co>2017-11-14 16:57:41 +0100
commit022d8420ec0713909ff379e1e8d36c4e46bde3a3 (patch)
treeb2cdf284c023430410239a2d41806e010615c0fa /app
parentfb7abd87daa8930682b05870361fe9dd112f050f (diff)
downloadgitlab-ce-022d8420ec0713909ff379e1e8d36c4e46bde3a3.tar.gz
Include child projects a user can manage in namespace dropdowns
These dropdown options are used for creating and transfering projects.
Diffstat (limited to 'app')
-rw-r--r--app/helpers/namespaces_helper.rb2
-rw-r--r--app/models/user.rb11
2 files changed, 11 insertions, 2 deletions
diff --git a/app/helpers/namespaces_helper.rb b/app/helpers/namespaces_helper.rb
index d7df9bb06d2..fa749098d76 100644
--- a/app/helpers/namespaces_helper.rb
+++ b/app/helpers/namespaces_helper.rb
@@ -4,7 +4,7 @@ module NamespacesHelper
end
def namespaces_options(selected = :current_user, display_path: false, extra_group: nil)
- groups = current_user.owned_groups + current_user.masters_groups
+ groups = current_user.manageable_groups.includes(:route)
users = [current_user.namespace]
unless extra_group.nil? || extra_group.is_a?(Group)
diff --git a/app/models/user.rb b/app/models/user.rb
index f436efd604f..ea10e2854d6 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -921,7 +921,16 @@ class User < ActiveRecord::Base
end
def manageable_namespaces
- @manageable_namespaces ||= [namespace] + owned_groups + masters_groups
+ @manageable_namespaces ||= [namespace] + manageable_groups
+ end
+
+ def manageable_groups
+ union = Gitlab::SQL::Union.new([owned_groups.select(:id),
+ masters_groups.select(:id)])
+ arel_union = Arel::Nodes::SqlLiteral.new(union.to_sql)
+ owned_and_master_groups = Group.where(Group.arel_table[:id].in(arel_union))
+
+ Gitlab::GroupHierarchy.new(owned_and_master_groups).base_and_descendants
end
def namespaces