diff options
author | Bob Van Landuyt <bob@vanlanduyt.co> | 2017-11-09 15:59:11 +0100 |
---|---|---|
committer | Bob Van Landuyt <bob@vanlanduyt.co> | 2017-11-14 16:57:41 +0100 |
commit | 022d8420ec0713909ff379e1e8d36c4e46bde3a3 (patch) | |
tree | b2cdf284c023430410239a2d41806e010615c0fa /app | |
parent | fb7abd87daa8930682b05870361fe9dd112f050f (diff) | |
download | gitlab-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.rb | 2 | ||||
-rw-r--r-- | app/models/user.rb | 11 |
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 |