Sha256: 6c2829ccd682aa5026b672ec3ad0af1170685856d4169dc86e9ed0c990d44ec9

Contents?: true

Size: 1.38 KB

Versions: 27

Compression:

Stored size: 1.38 KB

Contents

module Ddr
  module Models
    module Governable
      extend ActiveSupport::Concern

      included do
        belongs_to :admin_policy, :property => :is_governed_by, :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 inherited_license
        admin_policy.default_license if admin_policy
      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

27 entries across 27 versions & 1 rubygems

Version Path
ddr-models-1.7.0 lib/ddr/models/governable.rb
ddr-models-1.6.0 lib/ddr/models/governable.rb
ddr-models-1.5.0 lib/ddr/models/governable.rb
ddr-models-1.4.0 lib/ddr/models/governable.rb
ddr-models-1.3.0 lib/ddr/models/governable.rb
ddr-models-1.2.1 lib/ddr/models/governable.rb
ddr-models-1.2.0 lib/ddr/models/governable.rb