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) if admin_policy = other.admin_policy self.admin_policy = admin_policy logger.debug "Copied admin policy from #{other.model_and_id} to #{model_and_id}" end end end end end