diff options
author | Stan Hu <stanhu@gmail.com> | 2018-11-09 05:05:30 +0000 |
---|---|---|
committer | Steve Azzopardi <steveazz@outlook.com> | 2018-11-09 09:01:34 +0100 |
commit | 52fba2e9c2a512948938b1fbb214e85593ea5f3e (patch) | |
tree | b93d928961983b53b6a1702866353cdf5a28d504 /app | |
parent | 320db975b71a5da023335a5969ca378aef159367 (diff) | |
download | gitlab-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.rb | 16 | ||||
-rw-r--r-- | app/models/issue.rb | 14 | ||||
-rw-r--r-- | app/serializers/README.md | 4 | ||||
-rw-r--r-- | app/serializers/issue_board_entity.rb | 52 | ||||
-rw-r--r-- | app/serializers/issue_serializer.rb | 6 | ||||
-rw-r--r-- | app/serializers/label_entity.rb | 4 |
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 |