summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2018-11-09 05:05:30 +0000
committerSteve Azzopardi <steveazz@outlook.com>2018-11-09 09:01:34 +0100
commit52fba2e9c2a512948938b1fbb214e85593ea5f3e (patch)
treeb93d928961983b53b6a1702866353cdf5a28d504 /app
parent320db975b71a5da023335a5969ca378aef159367 (diff)
downloadgitlab-ce-52fba2e9c2a512948938b1fbb214e85593ea5f3e.tar.gz
Merge branch 'revert_issue_board_entity' into 'master'
Revert "Extract code into IssueBoardEntity" See merge request gitlab-org/gitlab-ce!22928
Diffstat (limited to 'app')
-rw-r--r--app/controllers/boards/issues_controller.rb16
-rw-r--r--app/models/issue.rb14
-rw-r--r--app/serializers/README.md4
-rw-r--r--app/serializers/issue_board_entity.rb52
-rw-r--r--app/serializers/issue_serializer.rb6
-rw-r--r--app/serializers/label_entity.rb4
6 files changed, 29 insertions, 67 deletions
diff --git a/app/controllers/boards/issues_controller.rb b/app/controllers/boards/issues_controller.rb
index 0dd7500623d..7f874687212 100644
--- a/app/controllers/boards/issues_controller.rb
+++ b/app/controllers/boards/issues_controller.rb
@@ -100,12 +100,18 @@ module Boards
.merge(board_id: params[:board_id], list_id: params[:list_id], request: request)
end
- def serializer
- IssueSerializer.new(current_user: current_user)
- end
-
def serialize_as_json(resource)
- serializer.represent(resource, serializer: 'board', include_full_project_path: board.group_board?)
+ resource.as_json(
+ only: [:id, :iid, :project_id, :title, :confidential, :due_date, :relative_position, :weight],
+ labels: true,
+ issue_endpoints: true,
+ include_full_project_path: board.group_board?,
+ include: {
+ project: { only: [:id, :path] },
+ assignees: { only: [:id, :name, :username], methods: [:avatar_url] },
+ milestone: { only: [:id, :title] }
+ }
+ )
end
def whitelist_query_limiting
diff --git a/app/models/issue.rb b/app/models/issue.rb
index abdb3448d4e..0de5e434b02 100644
--- a/app/models/issue.rb
+++ b/app/models/issue.rb
@@ -231,6 +231,20 @@ class Issue < ActiveRecord::Base
def as_json(options = {})
super(options).tap do |json|
+ if options.key?(:issue_endpoints) && project
+ url_helper = Gitlab::Routing.url_helpers
+
+ issue_reference = options[:include_full_project_path] ? to_reference(full: true) : to_reference
+
+ json.merge!(
+ reference_path: issue_reference,
+ real_path: url_helper.project_issue_path(project, self),
+ issue_sidebar_endpoint: url_helper.project_issue_path(project, self, format: :json, serializer: 'sidebar'),
+ toggle_subscription_endpoint: url_helper.toggle_subscription_project_issue_path(project, self),
+ assignable_labels_endpoint: url_helper.project_labels_path(project, format: :json, include_ancestor_groups: true)
+ )
+ end
+
if options.key?(:labels)
json[:labels] = labels.as_json(
project: project,
diff --git a/app/serializers/README.md b/app/serializers/README.md
index bb94745b0b5..0337f88db5f 100644
--- a/app/serializers/README.md
+++ b/app/serializers/README.md
@@ -180,7 +180,7 @@ def index
render json: MyResourceSerializer
.new(current_user: @current_user)
.represent_details(@project.resources)
- end
+ nd
end
```
@@ -196,7 +196,7 @@ def index
.represent_details(@project.resources),
count: @project.resources.count
}
- end
+ nd
end
```
diff --git a/app/serializers/issue_board_entity.rb b/app/serializers/issue_board_entity.rb
deleted file mode 100644
index 4e3d03b236b..00000000000
--- a/app/serializers/issue_board_entity.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-# frozen_string_literal: true
-
-class IssueBoardEntity < Grape::Entity
- include RequestAwareEntity
-
- expose :id
- expose :iid
- expose :title
-
- expose :confidential
- expose :due_date
- expose :project_id
- expose :relative_position
- expose :weight, if: -> (*) { respond_to?(:weight) }
- expose :time_estimate
-
- expose :project do |issue|
- API::Entities::Project.represent issue.project, only: [:id, :path]
- end
-
- expose :milestone, expose_nil: false do |issue|
- API::Entities::Project.represent issue.milestone, only: [:id, :title]
- end
-
- expose :assignees do |issue|
- API::Entities::UserBasic.represent issue.assignees, only: [:id, :name, :username, :avatar_url]
- end
-
- expose :labels do |issue|
- LabelEntity.represent issue.labels, project: issue.project, only: [:id, :title, :description, :color, :priority, :text_color]
- end
-
- expose :reference_path, if: -> (issue) { issue.project } do |issue, options|
- options[:include_full_project_path] ? issue.to_reference(full: true) : issue.to_reference
- end
-
- expose :real_path, if: -> (issue) { issue.project } do |issue|
- project_issue_path(issue.project, issue)
- end
-
- expose :issue_sidebar_endpoint, if: -> (issue) { issue.project } do |issue|
- project_issue_path(issue.project, issue, format: :json, serializer: 'sidebar')
- end
-
- expose :toggle_subscription_endpoint, if: -> (issue) { issue.project } do |issue|
- toggle_subscription_project_issue_path(issue.project, issue)
- end
-
- expose :assignable_labels_endpoint, if: -> (issue) { issue.project } do |issue|
- project_labels_path(issue.project, format: :json, include_ancestor_groups: true)
- end
-end
diff --git a/app/serializers/issue_serializer.rb b/app/serializers/issue_serializer.rb
index d66f0a5acb7..37cf5e28396 100644
--- a/app/serializers/issue_serializer.rb
+++ b/app/serializers/issue_serializer.rb
@@ -4,17 +4,15 @@ class IssueSerializer < BaseSerializer
# This overrided method takes care of which entity should be used
# to serialize the `issue` based on `basic` key in `opts` param.
# Hence, `entity` doesn't need to be declared on the class scope.
- def represent(issue, opts = {})
+ def represent(merge_request, opts = {})
entity =
case opts[:serializer]
when 'sidebar'
IssueSidebarEntity
- when 'board'
- IssueBoardEntity
else
IssueEntity
end
- super(issue, opts, entity)
+ super(merge_request, opts, entity)
end
end
diff --git a/app/serializers/label_entity.rb b/app/serializers/label_entity.rb
index 5082245dda9..98743d62b50 100644
--- a/app/serializers/label_entity.rb
+++ b/app/serializers/label_entity.rb
@@ -12,8 +12,4 @@ class LabelEntity < Grape::Entity
expose :text_color
expose :created_at
expose :updated_at
-
- expose :priority, if: -> (*) { options.key?(:project) } do |label|
- label.priority(options[:project])
- end
end