Class: Hyrax::Forms::WorkflowActionForm

Inherits:
Object
  • Object
show all
Extended by:
ActiveModel::Translation
Includes:
ActiveModel::Validations
Defined in:
app/forms/hyrax/forms/workflow_action_form.rb

Overview

Responsible for processing that the :current_ability (and associated current_user) has taken a Sipity::WorkflowAction on an object that has a Sipity::Entity.

The form enforces that the action taken is valid.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(current_ability:, work:, attributes: {}) ⇒ WorkflowActionForm

Returns a new instance of WorkflowActionForm.


20
21
22
23
24
25
26
# File 'app/forms/hyrax/forms/workflow_action_form.rb', line 20

def initialize(current_ability:, work:, attributes: {})
  @current_ability = current_ability
  @work = work
  @name = attributes.fetch(:name, false)
  @comment = attributes.fetch(:comment, nil)
  convert_to_sipity_objects!
end

Instance Attribute Details

#commentObject (readonly)

Returns the value of attribute comment


28
29
30
# File 'app/forms/hyrax/forms/workflow_action_form.rb', line 28

def comment
  @comment
end

#current_abilityObject (readonly)

Returns the value of attribute current_ability


28
29
30
# File 'app/forms/hyrax/forms/workflow_action_form.rb', line 28

def current_ability
  @current_ability
end

#nameObject (readonly)

Returns the value of attribute name


28
29
30
# File 'app/forms/hyrax/forms/workflow_action_form.rb', line 28

def name
  @name
end

#workObject (readonly)

Returns the value of attribute work


28
29
30
# File 'app/forms/hyrax/forms/workflow_action_form.rb', line 28

def work
  @work
end

Class Method Details

.workflow_action_for(name, scope:) ⇒ Object


55
56
57
# File 'app/forms/hyrax/forms/workflow_action_form.rb', line 55

def workflow_action_for(name, scope:)
  Sipity::WorkflowAction(name, scope) { nil }
end

Instance Method Details

#authorized_for_processingObject


41
42
43
44
45
46
47
48
49
50
# File 'app/forms/hyrax/forms/workflow_action_form.rb', line 41

def authorized_for_processing
  return false if name.blank? # name is the action which converts to sipity_workflow_action
  return true if Hyrax::Workflow::PermissionQuery.authorized_for_processing?(
    user: subject.user,
    entity: subject.entity,
    action: sipity_workflow_action
  )
  errors.add(:base, :unauthorized)
  false
end

#saveObject


30
31
32
33
34
35
36
# File 'app/forms/hyrax/forms/workflow_action_form.rb', line 30

def save
  return false unless valid?
  Workflow::WorkflowActionService.run(subject: subject,
                                      action: sipity_workflow_action,
                                      comment: comment)
  true
end