Split up adding ancestors for projects

This commit is contained in:
Bob Van Landuyt 2017-10-02 14:22:17 +02:00
parent 8a685ca856
commit 6c2de364dd
1 changed files with 13 additions and 4 deletions

View File

@ -61,14 +61,19 @@ class GroupDescendantsFinder
paginated_projects = paginate_projects_after_groups(subgroups_with_counts)
if params[:filter]
ancestors_for_project_search = ancestors_for_groups(Group.where(id: paginated_projects.select(:namespace_id)))
subgroups_with_counts = ancestors_for_project_search.with_route.select(GROUP_SELECTS) | subgroups_with_counts
end
subgroups_with_counts = add_project_ancestors_when_searching(subgroups_with_counts, paginated_projects)
@children = subgroups_with_counts + paginated_projects
end
def add_project_ancestors_when_searching(groups, projects)
return groups unless params[:filter]
project_ancestors = ancestors_for_projects(projects)
.with_route.select(GROUP_SELECTS)
groups | project_ancestors
end
def paginate_projects_after_groups(loaded_subgroups)
# We adjust the pagination for projects for the combination with groups:
# - We limit the first page (page 0) where we show projects:
@ -138,6 +143,10 @@ class GroupDescendantsFinder
.base_and_ancestors.where.not(id: ancestors_for_parent)
end
def ancestors_for_projects(projects)
ancestors_for_groups(Group.where(id: projects.select(:namespace_id)))
end
def subgroups
return Group.none unless Group.supports_nested_groups?
return Group.none unless can?(current_user, :read_group, parent_group)