Sha256: 21eaea24661f535fdf47400c6a8c5d7643fd48b93e6cc56a3e44749435d98dae
Contents?: true
Size: 1.85 KB
Versions: 1
Compression:
Stored size: 1.85 KB
Contents
require "resque" module Ddr module Models module HasAdminMetadata extend ActiveSupport::Concern included do has_metadata "adminMetadata", type: Ddr::Datastreams::AdministrativeMetadataDatastream, versionable: true, control_group: "M" has_attributes :admin_set, :display_format, :local_id, :permanent_id, :permanent_url, :workflow_state, datastream: "adminMetadata", multiple: false delegate :publish, :publish!, :unpublish, :unpublish!, :published?, to: :workflow after_create :assign_permanent_id!, if: "Ddr::Models.auto_assign_permanent_ids" around_destroy :update_permanent_id_on_destroy, if: "permanent_id.present?" end def permanent_id_manager @permanent_id_manager ||= Ddr::Managers::PermanentIdManager.new(self) end def roles Ddr::Auth::Roles::PropertyRoleSet.new(adminMetadata.access_role) end def workflow @workflow ||= Ddr::Managers::WorkflowManager.new(self) end def assign_permanent_id! permanent_id_manager.assign_later end def grant_roles_to_creator(creator) roles.grant type: Ddr::Auth::Roles::EDITOR, agent: creator, scope: Ddr::Auth::Roles::RESOURCE_SCOPE end def copy_resource_roles_from(other) roles.grant *(other.roles.in_resource_scope) end def effective_permissions(agents) Ddr::Auth::EffectivePermissions.call(self, agents) end private def update_permanent_id_on_destroy @permanent_id = permanent_id yield Resque.enqueue(Ddr::Jobs::PermanentId::MakeUnavailable, @permanent_id, "deleted") end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ddr-models-2.0.0.pre.4 | lib/ddr/models/has_admin_metadata.rb |