Sha256: d92305eaced41d63ac32daf95d134c3d950d5522f44acf45efa87e9c2123dd02

Contents?: true

Size: 1.84 KB

Versions: 34

Compression:

Stored size: 1.84 KB

Contents

module Hyrax
  module Actors
    # Ensures that the default AdminSet id is set if this form doesn't have
    # an admin_set_id provided. This should come before the
    # Hyrax::Actors::InitializeWorkflowActor, so that the correct
    # workflow can be kicked off.
    #
    # @note Creates AdminSet, Hyrax::PermissionTemplate, Sipity::Workflow (with activation)
    class DefaultAdminSetActor < Hyrax::Actors::AbstractActor
      # @param [Hyrax::Actors::Environment] env
      # @return [Boolean] true if create was successful
      def create(env)
        ensure_admin_set_attribute!(env)
        next_actor.create(env)
      end

      # @param [Hyrax::Actors::Environment] env
      # @return [Boolean] true if update was successful
      def update(env)
        ensure_admin_set_attribute!(env)
        next_actor.update(env)
      end

      private

        def ensure_admin_set_attribute!(env)
          if env.attributes[:admin_set_id].present?
            ensure_permission_template!(admin_set_id: env.attributes[:admin_set_id])
          elsif env.curation_concern.admin_set_id.present?
            env.attributes[:admin_set_id] = env.curation_concern.admin_set_id
            ensure_permission_template!(admin_set_id: env.attributes[:admin_set_id])
          else
            env.attributes[:admin_set_id] = default_admin_set_id
          end
        end

        def ensure_permission_template!(admin_set_id:)
          Hyrax::PermissionTemplate.find_by(source_id: admin_set_id) || create_permission_template!(source_id: admin_set_id)
        end

        def default_admin_set_id
          AdminSet.find_or_create_default_admin_set_id
        end

        # Creates a Hyrax::PermissionTemplate for the given AdminSet
        def create_permission_template!(source_id:)
          Hyrax::PermissionTemplate.create!(source_id: source_id)
        end
    end
  end
end

Version data entries

34 entries across 34 versions & 1 rubygems

Version Path
hyrax-2.9.6 app/actors/hyrax/actors/default_admin_set_actor.rb
hyrax-2.9.5 app/actors/hyrax/actors/default_admin_set_actor.rb
hyrax-2.9.4 app/actors/hyrax/actors/default_admin_set_actor.rb
hyrax-2.9.3 app/actors/hyrax/actors/default_admin_set_actor.rb
hyrax-2.9.2 app/actors/hyrax/actors/default_admin_set_actor.rb
hyrax-2.9.1 app/actors/hyrax/actors/default_admin_set_actor.rb
hyrax-2.9.0 app/actors/hyrax/actors/default_admin_set_actor.rb
hyrax-2.8.0 app/actors/hyrax/actors/default_admin_set_actor.rb
hyrax-2.7.2 app/actors/hyrax/actors/default_admin_set_actor.rb
hyrax-2.7.1 app/actors/hyrax/actors/default_admin_set_actor.rb
hyrax-2.7.0 app/actors/hyrax/actors/default_admin_set_actor.rb
hyrax-2.6.0 app/actors/hyrax/actors/default_admin_set_actor.rb
hyrax-3.0.0.pre.rc1 app/actors/hyrax/actors/default_admin_set_actor.rb
hyrax-3.0.0.pre.beta3 app/actors/hyrax/actors/default_admin_set_actor.rb
hyrax-2.5.1 app/actors/hyrax/actors/default_admin_set_actor.rb
hyrax-2.5.0 app/actors/hyrax/actors/default_admin_set_actor.rb
hyrax-3.0.0.pre.beta2 app/actors/hyrax/actors/default_admin_set_actor.rb
hyrax-2.4.1 app/actors/hyrax/actors/default_admin_set_actor.rb
hyrax-3.0.0.pre.beta1 app/actors/hyrax/actors/default_admin_set_actor.rb
hyrax-2.4.0 app/actors/hyrax/actors/default_admin_set_actor.rb