diff options
author | Douwe Maan <douwe@selenight.nl> | 2016-08-13 04:23:33 +0300 |
---|---|---|
committer | Douwe Maan <douwe@selenight.nl> | 2016-08-13 04:23:33 +0300 |
commit | d9715266e86e6a48616c24147e46c1219f4e0255 (patch) | |
tree | 01d3967a00efc1f3d0b27e4a917b95a545bcf816 /app/services/slash_commands | |
parent | 463ae8f570f986d9f50ae42067715d6db0dc1541 (diff) |
Allow setting labels, milestones and assignee based on name
Diffstat (limited to 'app/services/slash_commands')
-rw-r--r-- | app/services/slash_commands/interpret_service.rb | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/app/services/slash_commands/interpret_service.rb b/app/services/slash_commands/interpret_service.rb index a2b92d70f9f..50e2a96eefb 100644 --- a/app/services/slash_commands/interpret_service.rb +++ b/app/services/slash_commands/interpret_service.rb @@ -74,6 +74,8 @@ module SlashCommands end command :assign, :reassign do |assignee_param| user = extract_references(assignee_param, :user).first + user ||= User.find_by(username: assignee_param) + user ||= User.find_by(name: assignee_param) @updates[:assignee_id] = user.id if user end @@ -95,6 +97,7 @@ module SlashCommands end command :milestone do |milestone_param| milestone = extract_references(milestone_param, :milestone).first + milestone ||= project.milestones.find_by(title: milestone_param.strip) @updates[:milestone_id] = milestone.id if milestone end @@ -204,12 +207,15 @@ module SlashCommands command :cc, noop: true def find_label_ids(labels_param) - extract_references(labels_param, :label).map(&:id) + label_ids_by_reference = extract_references(labels_param, :label).map(&:id) + labels_ids_by_name = @project.labels.where(name: labels_param.split).select(:id) + + label_ids_by_reference | labels_ids_by_name end - def extract_references(cmd_arg, type) + def extract_references(arg, type) ext = Gitlab::ReferenceExtractor.new(project, current_user) - ext.analyze(cmd_arg, author: current_user) + ext.analyze(arg, author: current_user) ext.references(type) end |