diff options
author | Heinrich Lee Yu <hleeyu@gmail.com> | 2018-11-15 14:56:51 +0800 |
---|---|---|
committer | Heinrich Lee Yu <hleeyu@gmail.com> | 2018-12-31 11:00:29 +0800 |
commit | 12e01daec9f24fda742103f9e6c795c358693de5 (patch) | |
tree | 74eda7709f2803585f34cd8d969aefe69feaa782 /app/finders | |
parent | c07bf1abf2a5c3751e575ee5926e9a052fa0b341 (diff) | |
download | gitlab-ce-12e01daec9f24fda742103f9e6c795c358693de5.tar.gz |
Add group milestones in upcoming filter
Diffstat (limited to 'app/finders')
-rw-r--r-- | app/finders/issuable_finder.rb | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/app/finders/issuable_finder.rb b/app/finders/issuable_finder.rb index b73a3fa6e01..a144db9fcd1 100644 --- a/app/finders/issuable_finder.rb +++ b/app/finders/issuable_finder.rb @@ -149,6 +149,18 @@ class IssuableFinder end end + def related_groups + if project? && project && project.group && Ability.allowed?(current_user, :read_group, project.group) + project.group.self_and_ancestors + elsif group + [group] + elsif current_user + Gitlab::GroupHierarchy.new(current_user.authorized_groups, current_user.groups).all_groups + else + [] + end + end + def project? params[:project_id].present? end @@ -163,8 +175,10 @@ class IssuableFinder end # rubocop: disable CodeReuse/ActiveRecord - def projects(items = nil) - return @projects = project if project? + def projects + return @projects if defined?(@projects) + + return @projects = [project] if project? projects = if current_user && params[:authorized_only].presence && !current_user_related? @@ -459,7 +473,7 @@ class IssuableFinder elsif filter_by_any_milestone? items = items.any_milestone elsif filter_by_upcoming_milestone? - upcoming_ids = Milestone.upcoming_ids_by_projects(projects(items)) + upcoming_ids = Milestone.upcoming_ids(projects, related_groups) items = items.left_joins_milestones.where(milestone_id: upcoming_ids) elsif filter_by_started_milestone? items = items.left_joins_milestones.where('milestones.start_date <= NOW()') |