Commit 516dc7a5 authored by Kamil Trzcinski's avatar Kamil Trzcinski Committed by Grzegorz Bizon

Improve actions

parent 633e6438
......@@ -127,6 +127,10 @@ module Ci
end
end
def cancelable?
active?
end
def retryable?
project.builds_enabled? && commands.present? && complete?
end
......
......@@ -13,33 +13,23 @@ module Gitlab
@subject.pipeline)
end
def action_type
case
when @subject.playable? then :playable
when @subject.active? then :cancel
when @subject.retryable? then :retry
end
end
def has_action?(current_user)
action_type && can?(current_user, :update_build, @subject)
(subject.cancelable? || subject.retryable?) &&
can?(current_user, :update_build, @subject)
end
def action_icon
case action_type
when :playable then 'remove'
when :cancel then 'icon_play'
when :retry then 'repeat'
case
when subject.cancelable? then 'icon_play'
when subject.retryable? then 'repeat'
end
end
def action_path
case action_type
when :playable
play_namespace_project_build_path(subject.project.namespace, subject.project, subject)
when :cancel
case
when subject.cancelable?
cancel_namespace_project_build_path(subject.project.namespace, subject.project, subject)
when :retry
when subject.retryable?
retry_namespace_project_build_path(subject.project.namespace, subject.project, subject)
end
end
......
......@@ -5,6 +5,10 @@ module Gitlab
class Factory < Status::Factory
private
def extended_statuses
[Stop, Play]
end
def core_status
super.extend(Status::Build::Common)
end
......
module Gitlab
module Ci
module Status
module Status
class Play < SimpleDelegator
extend Status::Extended
def text
'play'
end
def label
'play'
end
def icon
'icon_status_skipped'
end
def to_s
'play'
end
def has_action?(current_user)
can?(current_user, :update_build, subject)
end
def action_icon
:play
end
def action_path
play_namespace_project_build_path(subject.project.namespace, subject.project, subject)
end
def action_method
:post
end
def self.matches?(build)
build.playable? && !build.stops_environment?
end
end
end
end
end
end
module Gitlab
module Ci
module Status
module Status
class Play < SimpleDelegator
extend Status::Extended
def text
'stop'
end
def label
'stop'
end
def icon
'icon_status_skipped'
end
def to_s
'stop'
end
def has_action?(current_user)
can?(current_user, :update_build, subject)
end
def action_icon
:play
end
def action_path
play_namespace_project_build_path(subject.project.namespace, subject.project, subject)
end
def action_method
:post
end
def self.matches?(build)
build.playable? && build.stops_environment?
end
end
end
end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment