app/models/concerns/hydra/access_controls/embargoable.rb in hydra-access-controls-7.2.0 vs app/models/concerns/hydra/access_controls/embargoable.rb in hydra-access-controls-7.2.1
- old
+ new
@@ -1,157 +1,162 @@
module Hydra
module AccessControls
module Embargoable
extend ActiveSupport::Concern
- include Hydra::AccessControls::WithAccessRight
included do
+ include Hydra::AccessControls::WithAccessRight
+ # We include EmbargoableMethods so that it can override the methods included above,
+ # and doesn't create a ActiveSupport::Concern::MultipleIncludedBlocks
+ include EmbargoableMethods
validates :embargo_release_date, :lease_expiration_date, :'hydra/future_date' => true
has_attributes :visibility_during_embargo, :visibility_after_embargo, :embargo_release_date,
:visibility_during_lease, :visibility_after_lease, :lease_expiration_date,
datastream: 'rightsMetadata', multiple: false
has_attributes :embargo_history, :lease_history, datastream: 'rightsMetadata', multiple:true
end
- def under_embargo?
- rightsMetadata.under_embargo?
- end
+ module EmbargoableMethods
+ def under_embargo?
+ rightsMetadata.under_embargo?
+ end
- def active_lease?
- rightsMetadata.active_lease?
- end
+ def active_lease?
+ rightsMetadata.active_lease?
+ end
- # If changing away from embargo or lease, this will deactivate the lease/embargo before proceeding.
- # The lease_visibility! and embargo_visibility! methods rely on this to deactivate the lease when applicable.
- def visibility=(value)
- # If changing from embargo or lease, deactivate the lease/embargo and wipe out the associated metadata before proceeding
- if !embargo_release_date.nil?
- deactivate_embargo! unless value == visibility_during_embargo
+ # If changing away from embargo or lease, this will deactivate the lease/embargo before proceeding.
+ # The lease_visibility! and embargo_visibility! methods rely on this to deactivate the lease when applicable.
+ def visibility=(value)
+ # If changing from embargo or lease, deactivate the lease/embargo and wipe out the associated metadata before proceeding
+ if !embargo_release_date.nil?
+ deactivate_embargo! unless value == visibility_during_embargo
+ end
+ if !lease_expiration_date.nil?
+ deactivate_lease! unless value == visibility_during_lease
+ end
+ super
end
- if !lease_expiration_date.nil?
- deactivate_lease! unless value == visibility_during_lease
+
+ def apply_embargo(release_date, visibility_during=nil, visibility_after=nil)
+ self.embargo_release_date = release_date
+ self.visibility_during_embargo = visibility_during unless visibility_during.nil?
+ self.visibility_after_embargo = visibility_after unless visibility_after.nil?
+ embargo_visibility!
end
- super
- end
- def apply_embargo(release_date, visibility_during=nil, visibility_after=nil)
- self.embargo_release_date = release_date
- self.visibility_during_embargo = visibility_during unless visibility_during.nil?
- self.visibility_after_embargo = visibility_after unless visibility_after.nil?
- embargo_visibility!
- end
+ def deactivate_embargo!
+ return unless embargo_release_date
+ embargo_state = under_embargo? ? "active" : "expired"
+ embargo_record = embargo_history_message(embargo_state, Date.today, embargo_release_date, visibility_during_embargo, visibility_after_embargo)
+ self.embargo_release_date = nil
+ self.visibility_during_embargo = nil
+ self.visibility_after_embargo = nil
+ self.embargo_history += [embargo_record]
+ end
- def deactivate_embargo!
- return unless embargo_release_date
- embargo_state = under_embargo? ? "active" : "expired"
- embargo_record = embargo_history_message(embargo_state, Date.today, embargo_release_date, visibility_during_embargo, visibility_after_embargo)
- self.embargo_release_date = nil
- self.visibility_during_embargo = nil
- self.visibility_after_embargo = nil
- self.embargo_history += [embargo_record]
- end
-
- def validate_embargo
- if embargo_release_date
- if under_embargo?
- expected_visibility = visibility_during_embargo
- failure_message = "An embargo is in effect for this object until #{embargo_release_date}. Until that time the "
+ def validate_embargo
+ if embargo_release_date
+ if under_embargo?
+ expected_visibility = visibility_during_embargo
+ failure_message = "An embargo is in effect for this object until #{embargo_release_date}. Until that time the "
+ else
+ expected_visibility = visibility_after_embargo
+ failure_message = "The embargo expired on #{embargo_release_date}. The "
+ end
+ if visibility == expected_visibility
+ return true
+ else
+ failure_message << "visibility should be #{expected_visibility} but it is currently #{visibility}. Call embargo_visibility! on this object to repair."
+ self.errors[:embargo] << failure_message
+ return false
+ end
else
- expected_visibility = visibility_after_embargo
- failure_message = "The embargo expired on #{embargo_release_date}. The "
- end
- if visibility == expected_visibility
return true
- else
- failure_message << "visibility should be #{expected_visibility} but it is currently #{visibility}. Call embargo_visibility! on this object to repair."
- self.errors[:embargo] << failure_message
- return false
end
- else
- return true
end
- end
- # Set the current visibility to match what is described in the embargo.
- def embargo_visibility!
- if embargo_release_date
- if under_embargo?
- self.visibility_during_embargo = visibility_during_embargo ? visibility_during_embargo : Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
- self.visibility_after_embargo = visibility_after_embargo ? visibility_after_embargo : Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED
- self.visibility = visibility_during_embargo
- else
- self.visibility = visibility_after_embargo ? visibility_after_embargo : Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED
+ # Set the current visibility to match what is described in the embargo.
+ def embargo_visibility!
+ if embargo_release_date
+ if under_embargo?
+ self.visibility_during_embargo = visibility_during_embargo ? visibility_during_embargo : Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
+ self.visibility_after_embargo = visibility_after_embargo ? visibility_after_embargo : Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED
+ self.visibility = visibility_during_embargo
+ else
+ self.visibility = visibility_after_embargo ? visibility_after_embargo : Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED
+ end
end
end
- end
- def validate_lease
- if lease_expiration_date
- if active_lease?
- expected_visibility = visibility_during_lease
- failure_message = "A lease is in effect for this object until #{lease_expiration_date}. Until that time the "
+ def validate_lease
+ if lease_expiration_date
+ if active_lease?
+ expected_visibility = visibility_during_lease
+ failure_message = "A lease is in effect for this object until #{lease_expiration_date}. Until that time the "
+ else
+ expected_visibility = visibility_after_lease
+ failure_message = "The lease expired on #{lease_expiration_date}. The "
+ end
+ if visibility == expected_visibility
+ return true
+ else
+ failure_message << "visibility should be #{expected_visibility} but it is currently #{visibility}. Call lease_visibility! on this object to repair."
+ self.errors[:lease] << failure_message
+ return false
+ end
else
- expected_visibility = visibility_after_lease
- failure_message = "The lease expired on #{lease_expiration_date}. The "
- end
- if visibility == expected_visibility
return true
- else
- failure_message << "visibility should be #{expected_visibility} but it is currently #{visibility}. Call lease_visibility! on this object to repair."
- self.errors[:lease] << failure_message
- return false
end
- else
- return true
end
- end
- def apply_lease(release_date, visibility_during=nil, visibility_after=nil)
- self.lease_expiration_date = release_date
- self.visibility_during_lease = visibility_during unless visibility_during.nil?
- self.visibility_after_lease = visibility_after unless visibility_after.nil?
- self.lease_visibility!
- end
+ def apply_lease(release_date, visibility_during=nil, visibility_after=nil)
+ self.lease_expiration_date = release_date
+ self.visibility_during_lease = visibility_during unless visibility_during.nil?
+ self.visibility_after_lease = visibility_after unless visibility_after.nil?
+ self.lease_visibility!
+ end
- def deactivate_lease!
- return unless lease_expiration_date
- lease_state = active_lease? ? "active" : "expired"
- lease_record = lease_history_message(lease_state, Date.today, lease_expiration_date, visibility_during_lease, visibility_after_lease)
- self.lease_expiration_date = nil
- self.visibility_during_lease = nil
- self.visibility_after_lease = nil
- self.lease_history += [lease_record]
- end
+ def deactivate_lease!
+ return unless lease_expiration_date
+ lease_state = active_lease? ? "active" : "expired"
+ lease_record = lease_history_message(lease_state, Date.today, lease_expiration_date, visibility_during_lease, visibility_after_lease)
+ self.lease_expiration_date = nil
+ self.visibility_during_lease = nil
+ self.visibility_after_lease = nil
+ self.lease_history += [lease_record]
+ end
- # Set the current visibility to match what is described in the lease.
- def lease_visibility!
- if lease_expiration_date
- if active_lease?
- self.visibility_during_lease = visibility_during_lease ? visibility_during_lease : Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED
- self.visibility_after_lease = visibility_after_lease ? visibility_after_lease : Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
- self.visibility = visibility_during_lease
- else
- self.visibility = visibility_after_lease ? visibility_after_lease : Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
+ # Set the current visibility to match what is described in the lease.
+ def lease_visibility!
+ if lease_expiration_date
+ if active_lease?
+ self.visibility_during_lease = visibility_during_lease ? visibility_during_lease : Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED
+ self.visibility_after_lease = visibility_after_lease ? visibility_after_lease : Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
+ self.visibility = visibility_during_lease
+ else
+ self.visibility = visibility_after_lease ? visibility_after_lease : Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
+ end
end
end
- end
- protected
+ protected
- # Create the log message used when deactivating an embargo
- # This method may be overriden in order to transform the values of the passed parameters.
- def embargo_history_message(state, deactivate_date, release_date, visibility_during, visibility_after)
- I18n.t 'hydra.embargo.history_message', state: state, deactivate_date: deactivate_date, release_date: release_date,
- visibility_during: visibility_during, visibility_after: visibility_after
- end
+ # Create the log message used when deactivating an embargo
+ # This method may be overriden in order to transform the values of the passed parameters.
+ def embargo_history_message(state, deactivate_date, release_date, visibility_during, visibility_after)
+ I18n.t 'hydra.embargo.history_message', state: state, deactivate_date: deactivate_date, release_date: release_date,
+ visibility_during: visibility_during, visibility_after: visibility_after
+ end
- # Create the log message used when deactivating a lease
- # This method may be overriden in order to transform the values of the passed parameters.
- def lease_history_message(state, deactivate_date, expiration_date, visibility_during, visibility_after)
- I18n.t 'hydra.lease.history_message', state: state, deactivate_date: deactivate_date, expiration_date: expiration_date,
- visibility_during: visibility_during, visibility_after: visibility_after
- end
+ # Create the log message used when deactivating a lease
+ # This method may be overriden in order to transform the values of the passed parameters.
+ def lease_history_message(state, deactivate_date, expiration_date, visibility_during, visibility_after)
+ I18n.t 'hydra.lease.history_message', state: state, deactivate_date: deactivate_date, expiration_date: expiration_date,
+ visibility_during: visibility_during, visibility_after: visibility_after
+ end
+ end
end
end
end