summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-10-14 20:51:41 -0300
committerDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-10-19 14:58:27 -0200
commit86e0b5d643df21503281115774da550e06a4e878 (patch)
tree1231f7b86bec02aa6a9663a6ec5cc7cefdbed4a0
parent3c2aaec1f2624ad4817e7ac52120985682afa448 (diff)
downloadgitlab-ce-86e0b5d643df21503281115774da550e06a4e878.tar.gz
Fix issue board related controllers to expose label priority per project
-rw-r--r--app/controllers/projects/boards/issues_controller.rb4
-rw-r--r--app/controllers/projects/boards/lists_controller.rb5
-rw-r--r--app/models/issue.rb12
-rw-r--r--app/models/label.rb6
-rw-r--r--app/models/list.rb11
-rw-r--r--spec/fixtures/api/schemas/list.json2
6 files changed, 34 insertions, 6 deletions
diff --git a/app/controllers/projects/boards/issues_controller.rb b/app/controllers/projects/boards/issues_controller.rb
index 71eb56aed0b..a2b01ff43dc 100644
--- a/app/controllers/projects/boards/issues_controller.rb
+++ b/app/controllers/projects/boards/issues_controller.rb
@@ -72,10 +72,10 @@ module Projects
def serialize_as_json(resource)
resource.as_json(
+ labels: true,
only: [:iid, :title, :confidential],
include: {
- assignee: { only: [:id, :name, :username], methods: [:avatar_url] },
- labels: { only: [:id, :title, :description, :color, :priority], methods: [:text_color] }
+ assignee: { only: [:id, :name, :username], methods: [:avatar_url] }
})
end
end
diff --git a/app/controllers/projects/boards/lists_controller.rb b/app/controllers/projects/boards/lists_controller.rb
index 76ae41319c4..67e3c9add81 100644
--- a/app/controllers/projects/boards/lists_controller.rb
+++ b/app/controllers/projects/boards/lists_controller.rb
@@ -76,9 +76,8 @@ module Projects
resource.as_json(
only: [:id, :list_type, :position],
methods: [:title],
- include: {
- label: { only: [:id, :title, :description, :color, :priority] }
- })
+ label: true
+ )
end
end
end
diff --git a/app/models/issue.rb b/app/models/issue.rb
index abd58e0454a..f7ccce2924a 100644
--- a/app/models/issue.rb
+++ b/app/models/issue.rb
@@ -274,4 +274,16 @@ class Issue < ActiveRecord::Base
def check_for_spam?
project.public?
end
+
+ def as_json(options = {})
+ super(options).tap do |json|
+ if options.has_key?(:labels)
+ json[:labels] = labels.as_json(
+ project: project,
+ only: [:id, :title, :description, :color],
+ methods: [:text_color]
+ )
+ end
+ end
+ end
end
diff --git a/app/models/label.rb b/app/models/label.rb
index 1d775a83f96..6fd45d251a8 100644
--- a/app/models/label.rb
+++ b/app/models/label.rb
@@ -133,6 +133,12 @@ class Label < ActiveRecord::Base
end
end
+ def as_json(options = {})
+ super(options).tap do |json|
+ json[:priority] = priorities.find_by(project: options[:project]).try(:priority) if options.has_key?(:project)
+ end
+ end
+
private
def cross_project_reference?(source_project, target_project)
diff --git a/app/models/list.rb b/app/models/list.rb
index eb87decdbc8..065d75bd1dc 100644
--- a/app/models/list.rb
+++ b/app/models/list.rb
@@ -26,6 +26,17 @@ class List < ActiveRecord::Base
label? ? label.name : list_type.humanize
end
+ def as_json(options = {})
+ super(options).tap do |json|
+ if options.has_key?(:label)
+ json[:label] = label.as_json(
+ project: board.project,
+ only: [:id, :title, :description, :color]
+ )
+ end
+ end
+ end
+
private
def can_be_destroyed
diff --git a/spec/fixtures/api/schemas/list.json b/spec/fixtures/api/schemas/list.json
index f070fa3b254..8d94cf26ecb 100644
--- a/spec/fixtures/api/schemas/list.json
+++ b/spec/fixtures/api/schemas/list.json
@@ -13,7 +13,7 @@
"enum": ["backlog", "label", "done"]
},
"label": {
- "type": ["object"],
+ "type": ["object", "null"],
"required": [
"id",
"color",