Sha256: fbd6e73171ef903f3f14dd7fb90721ea687a493e7c28cf5880f7c3148da31d56

Contents?: true

Size: 1.35 KB

Versions: 2

Compression:

Stored size: 1.35 KB

Contents

module Ddr
  module Models
    module Governable
      extend ActiveSupport::Concern

      included do
        belongs_to :admin_policy,
                   predicate: ActiveFedora::RDF::ProjectHydra.isGovernedBy,
                   class_name: "Collection"
      end

      def inherited_permissions
        admin_policy ? admin_policy.default_permissions : []
      end

      def inherited_rights
        admin_policy.datastreams[Ddr::Datastreams::DEFAULT_RIGHTS] if admin_policy
      end

      # Creates convenience methods:
      # inherited_discover_users, inherited_discover_groups,
      # inherited_read_users, inherited_read_groups,
      # inherited_edit_user, inherited_edit_groups
      ["discover", "read", "edit"].each do |access|
        ["user", "group"].each do |type|
          define_method("inherited_#{access}_#{type}s") do
            admin_policy ? admin_policy.send("default_#{access}_#{type}s") : []
          end
        end
      end

      def copy_admin_policy_from(other)
        # XXX In active-fedora 7.0 can do
        # self.admin_policy = other.admin_policy
        self.admin_policy_id = case
        when other.has_admin_policy?
          other.admin_policy_id
        when other.is_a?(Collection)
          other.pid
        end
        # self.admin_policy_id = other.admin_policy_id if other.has_admin_policy?
      end

    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ddr-models-3.0.0.alpha.2 lib/ddr/models/governable.rb
ddr-models-3.0.0.alpha.1 lib/ddr/models/governable.rb