diff options
author | Shinya Maeda <shinya@gitlab.com> | 2019-03-01 19:05:04 +0900 |
---|---|---|
committer | Shinya Maeda <shinya@gitlab.com> | 2019-03-06 16:30:35 +0700 |
commit | 50776d2d298c3b6c98e2531f116ca43ba10dcda4 (patch) | |
tree | 32e9e41dafa65c0ecff65fa941918e09d268f28c /app/serializers | |
parent | c9e5ce8dbd25203484b43c48f0a55a5d7bf396e8 (diff) | |
download | gitlab-ce-50776d2d298c3b6c98e2531f116ca43ba10dcda4.tar.gz |
Expose merge request entity for pipelines
Add preload
Fix
ok
Write tests
test only postgresql
ok
add more test
;
Improve wording
Add changelog
Fix
Diffstat (limited to 'app/serializers')
-rw-r--r-- | app/serializers/merge_request_for_pipeline_entity.rb | 17 | ||||
-rw-r--r-- | app/serializers/pipeline_entity.rb | 10 | ||||
-rw-r--r-- | app/serializers/pipeline_serializer.rb | 1 |
3 files changed, 28 insertions, 0 deletions
diff --git a/app/serializers/merge_request_for_pipeline_entity.rb b/app/serializers/merge_request_for_pipeline_entity.rb new file mode 100644 index 00000000000..7779ddfd65a --- /dev/null +++ b/app/serializers/merge_request_for_pipeline_entity.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class MergeRequestForPipelineEntity < Grape::Entity + include RequestAwareEntity + + expose :iid + + expose :path do |merge_request| + project_merge_request_path(merge_request.project, merge_request) + end + + expose :title + expose :source_branch + expose :source_branch_path + expose :target_branch + expose :target_branch_path +end diff --git a/app/serializers/pipeline_entity.rb b/app/serializers/pipeline_entity.rb index c2990cb5159..5ac1e590d39 100644 --- a/app/serializers/pipeline_entity.rb +++ b/app/serializers/pipeline_entity.rb @@ -28,6 +28,7 @@ class PipelineEntity < Grape::Entity expose :can_retry?, as: :retryable expose :can_cancel?, as: :cancelable expose :failure_reason?, as: :failure_reason + expose :detached_merge_request_pipeline?, as: :detached end expose :details do @@ -36,6 +37,10 @@ class PipelineEntity < Grape::Entity expose :finished_at end + expose :merge_request, if: -> (*) { has_presentable_merge_request? }, with: MergeRequestForPipelineEntity do |pipeline| + pipeline.merge_request.present(current_user: request.current_user) + end + expose :ref do expose :name do |pipeline| pipeline.ref @@ -81,6 +86,11 @@ class PipelineEntity < Grape::Entity pipeline.cancelable? end + def has_presentable_merge_request? + pipeline.triggered_by_merge_request? && + can?(request.current_user, :read_merge_request, pipeline.merge_request) + end + def detailed_status pipeline.detailed_status(request.current_user) end diff --git a/app/serializers/pipeline_serializer.rb b/app/serializers/pipeline_serializer.rb index 7451433a841..dbbeca9431d 100644 --- a/app/serializers/pipeline_serializer.rb +++ b/app/serializers/pipeline_serializer.rb @@ -15,6 +15,7 @@ class PipelineSerializer < BaseSerializer :manual_actions, :scheduled_actions, :artifacts, + :merge_request, { pending_builds: :project, project: [:route, { namespace: :route }], |