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.

Parameters:

  • current_ability (::Ability)
  • work (ActiveFedora::Base, Valkyrie::Resource)
  • attributes (Hash{Symbol => String}) (defaults to: {})


24
25
26
27
28
29
30
# File 'app/forms/hyrax/forms/workflow_action_form.rb', line 24

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.



32
33
34
# File 'app/forms/hyrax/forms/workflow_action_form.rb', line 32

def comment
  @comment
end

#current_abilityObject (readonly)

Returns the value of attribute current_ability.



32
33
34
# File 'app/forms/hyrax/forms/workflow_action_form.rb', line 32

def current_ability
  @current_ability
end

#nameObject (readonly)

Returns the value of attribute name.



32
33
34
# File 'app/forms/hyrax/forms/workflow_action_form.rb', line 32

def name
  @name
end

#workObject (readonly)

Returns the value of attribute work.



32
33
34
# File 'app/forms/hyrax/forms/workflow_action_form.rb', line 32

def work
  @work
end

Class Method Details

.workflow_action_for(name, scope:) ⇒ Object



59
60
61
# File 'app/forms/hyrax/forms/workflow_action_form.rb', line 59

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

Instance Method Details

#authorized_for_processingObject



45
46
47
48
49
50
51
52
53
54
# File 'app/forms/hyrax/forms/workflow_action_form.rb', line 45

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



34
35
36
37
38
39
40
# File 'app/forms/hyrax/forms/workflow_action_form.rb', line 34

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