diff options
| author | Jacopo <beschi.jacopo@gmail.com> | 2018-10-03 13:00:03 +0200 |
|---|---|---|
| committer | Jacopo <beschi.jacopo@gmail.com> | 2018-10-03 14:19:08 +0200 |
| commit | a1c3d40739ed133e1ca1cd9191628acf938809cf (patch) | |
| tree | c5db7647bd3e842d1ef968df0cff14edf6d23fae /app | |
| parent | bf37ff071fca1b61681e42522ffb6a6dcf5c0e8d (diff) | |
| download | gitlab-ce-a1c3d40739ed133e1ca1cd9191628acf938809cf.tar.gz | |
Allows to filter issues by `Any milestone` in the API
In GET `api/v4/projects/:id/issues` the user can filter issues
that have an assigned milestone through the parameter
`milestone=Any+Milestone`.
Diffstat (limited to 'app')
| -rw-r--r-- | app/finders/issuable_finder.rb | 6 | ||||
| -rw-r--r-- | app/models/concerns/issuable.rb | 1 |
2 files changed, 7 insertions, 0 deletions
diff --git a/app/finders/issuable_finder.rb b/app/finders/issuable_finder.rb index 0209a1397b9..794c2f293c4 100644 --- a/app/finders/issuable_finder.rb +++ b/app/finders/issuable_finder.rb @@ -424,6 +424,10 @@ class IssuableFinder params[:milestone_title] == Milestone::Upcoming.name end + def filter_by_any_milestone? + params[:milestone_title] == Milestone::Any.title + end + def filter_by_started_milestone? params[:milestone_title] == Milestone::Started.name end @@ -433,6 +437,8 @@ class IssuableFinder if milestones? if filter_by_no_milestone? items = items.left_joins_milestones.where(milestone_id: [-1, nil]) + elsif filter_by_any_milestone? + items = items.any_milestone elsif filter_by_upcoming_milestone? upcoming_ids = Milestone.upcoming_ids_by_projects(projects(items)) items = items.left_joins_milestones.where(milestone_id: upcoming_ids) diff --git a/app/models/concerns/issuable.rb b/app/models/concerns/issuable.rb index 5f65fceb7af..2aa52bbaeea 100644 --- a/app/models/concerns/issuable.rb +++ b/app/models/concerns/issuable.rb @@ -76,6 +76,7 @@ module Issuable scope :recent, -> { reorder(id: :desc) } scope :of_projects, ->(ids) { where(project_id: ids) } scope :of_milestones, ->(ids) { where(milestone_id: ids) } + scope :any_milestone, -> { where('milestone_id IS NOT NULL') } scope :with_milestone, ->(title) { left_joins_milestones.where(milestones: { title: title }) } scope :opened, -> { with_state(:opened) } scope :only_opened, -> { with_state(:opened) } |
