diff options
Diffstat (limited to 'app/serializers/pipeline_entity.rb')
-rw-r--r-- | app/serializers/pipeline_entity.rb | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/app/serializers/pipeline_entity.rb b/app/serializers/pipeline_entity.rb index 29b1a6c244b..5ac1e590d39 100644 --- a/app/serializers/pipeline_entity.rb +++ b/app/serializers/pipeline_entity.rb @@ -23,11 +23,12 @@ class PipelineEntity < Grape::Entity expose :latest?, as: :latest expose :stuck?, as: :stuck expose :auto_devops_source?, as: :auto_devops - expose :merge_request?, as: :merge_request + expose :merge_request_event?, as: :merge_request expose :has_yaml_errors?, as: :yaml_errors 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 @@ -49,7 +54,7 @@ class PipelineEntity < Grape::Entity expose :tag?, as: :tag expose :branch?, as: :branch - expose :merge_request?, as: :merge_request + expose :merge_request_event?, as: :merge_request end expose :commit, using: CommitEntity @@ -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 |