Sha256: 45d6497f869ea49935b50d1d9a0baa20418bd090c9b75f5e73a3b3fcd6ec04cd

Contents?: true

Size: 1.27 KB

Versions: 10

Compression:

Stored size: 1.27 KB

Contents

module Hyrax
  class QuickClassificationQuery
    attr_reader :user

    # @param [User] user the current user
    # @param [Hash] options
    # @option options [#call] :concern_name_normalizer (ClassifyConcern.to_class) a proc that translates names to classes
    # @option options [Array<String>] :models the options to display, defaults to everything.
    def initialize(user, options = {})
      @user = user
      @concern_name_normalizer = options.fetch(:concern_name_normalizer, ClassifyConcern.method(:to_class))
      @models = options.fetch(:models, Hyrax.config.registered_curation_concern_types)
    end

    def each(&block)
      authorized_models.each(&block)
    end

    # @return true if the requested concerns is same as all avaliable concerns
    def all?
      models == Hyrax.config.registered_curation_concern_types
    end

    # @return [Array] a list of all the requested concerns that the user can create
    def authorized_models
      normalized_model_names.select { |klass| user.can?(:create, klass) }
    end

    private

      attr_reader :concern_name_normalizer, :models

      # Transform the list of requested model names into a list of class names
      def normalized_model_names
        models.map { |name| concern_name_normalizer.call(name) }
      end
  end
end

Version data entries

10 entries across 10 versions & 2 rubygems

Version Path
hyrax-1.1.1 app/services/hyrax/quick_classification_query.rb
hyrax-1.1.0 app/services/hyrax/quick_classification_query.rb
hyrax-1.0.5 app/services/hyrax/quick_classification_query.rb
hyrax-1.0.4 app/services/hyrax/quick_classification_query.rb
hyrax-1.0.3 app/services/hyrax/quick_classification_query.rb
hyrax-1.0.2 app/services/hyrax/quick_classification_query.rb
hyrax-1.0.1 app/services/hyrax/quick_classification_query.rb
hyrax-1.0.0.rc2 app/services/hyrax/quick_classification_query.rb
hyrax-1.0.0.rc1 app/services/hyrax/quick_classification_query.rb
test_hyrax-0.0.1.alpha app/services/hyrax/quick_classification_query.rb