Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/finders/merge_requests_finder.rb')
-rw-r--r--app/finders/merge_requests_finder.rb27
1 files changed, 21 insertions, 6 deletions
diff --git a/app/finders/merge_requests_finder.rb b/app/finders/merge_requests_finder.rb
index d5e6c4783c1..b70d0b7a06a 100644
--- a/app/finders/merge_requests_finder.rb
+++ b/app/finders/merge_requests_finder.rb
@@ -30,8 +30,10 @@
# updated_before: datetime
#
class MergeRequestsFinder < IssuableFinder
+ include MergedAtFilter
+
def self.scalar_params
- @scalar_params ||= super + [:wip, :target_branch]
+ @scalar_params ||= super + [:wip, :draft, :target_branch, :merged_after, :merged_before]
end
def klass
@@ -42,8 +44,9 @@ class MergeRequestsFinder < IssuableFinder
items = by_commit(super)
items = by_deployment(items)
items = by_source_branch(items)
- items = by_wip(items)
+ items = by_draft(items)
items = by_target_branch(items)
+ items = by_merged_at(items)
by_source_project_id(items)
end
@@ -88,20 +91,32 @@ class MergeRequestsFinder < IssuableFinder
items.where(source_project_id: source_project_id)
end
- def by_wip(items)
- if params[:wip] == 'yes'
+ def by_draft(items)
+ draft_param = params[:draft] || params[:wip]
+
+ if draft_param == 'yes'
items.where(wip_match(items.arel_table))
- elsif params[:wip] == 'no'
+ elsif draft_param == 'no'
items.where.not(wip_match(items.arel_table))
else
items
end
end
+ # WIP is deprecated in favor of Draft. Currently both options are supported
def wip_match(table)
- table[:title].matches('WIP:%')
+ items =
+ table[:title].matches('WIP:%')
.or(table[:title].matches('WIP %'))
.or(table[:title].matches('[WIP]%'))
+
+ return items unless Feature.enabled?(:merge_request_draft_filter)
+
+ items
+ .or(table[:title].matches('Draft - %'))
+ .or(table[:title].matches('Draft:%'))
+ .or(table[:title].matches('[Draft]%'))
+ .or(table[:title].matches('(Draft)%'))
end
def by_deployment(items)