Class: Sufia::PermissionTemplate
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Sufia::PermissionTemplate
- Defined in:
- app/models/sufia/permission_template.rb
Constant Summary collapse
- RELEASE_TEXT_VALUE_FIXED =
Valid Release Period values
'fixed'.freeze
- RELEASE_TEXT_VALUE_NO_DELAY =
'now'.freeze
- RELEASE_TEXT_VALUE_BEFORE_DATE =
Valid Release Varies sub-options
'before'.freeze
- RELEASE_TEXT_VALUE_EMBARGO =
'embargo'.freeze
- RELEASE_TEXT_VALUE_6_MONTHS =
'6mos'.freeze
- RELEASE_TEXT_VALUE_1_YEAR =
'1yr'.freeze
- RELEASE_TEXT_VALUE_2_YEARS =
'2yrs'.freeze
- RELEASE_TEXT_VALUE_3_YEARS =
'3yrs'.freeze
- RELEASE_EMBARGO_PERIODS =
Key/value pair of valid embargo periods. Values are number of months embargoed.
{ RELEASE_TEXT_VALUE_6_MONTHS => 6, RELEASE_TEXT_VALUE_1_YEAR => 12, RELEASE_TEXT_VALUE_2_YEARS => 24, RELEASE_TEXT_VALUE_3_YEARS => 36 }.freeze
Instance Method Summary collapse
-
#release_before_date? ⇒ Boolean
Does this permission template require a date (or embargo) that all works are released before NOTE: date will be in release_date.
-
#release_date ⇒ Object
Override release_date getter to return a dynamically calculated date of release based one release requirements.
-
#release_fixed_date? ⇒ Boolean
Does this permission template require a specific date of release for all works NOTE: date will be in release_date.
-
#release_max_embargo? ⇒ Boolean
Is there a maximum embargo period specified by this permission template NOTE: latest embargo date returned by release_date, maximum embargo period will be in release_period.
-
#release_no_delay? ⇒ Boolean
Does this permission template require no release delays (i.e. no embargoes allowed).
-
#valid_release_date?(date) ⇒ Boolean
Determines whether a given release date is valid based on this template’s requirements.
-
#valid_visibility?(value) ⇒ Boolean
Determines whether a given visibility setting is valid based on this template’s requirements.
Instance Method Details
#release_before_date? ⇒ Boolean
Does this permission template require a date (or embargo) that all works are released before NOTE: date will be in release_date
39 40 41 42 |
# File 'app/models/sufia/permission_template.rb', line 39 def release_before_date? # All PermissionTemplate embargoes are dynamically determined release before dates release_period == RELEASE_TEXT_VALUE_BEFORE_DATE || end |
#release_date ⇒ Object
Override release_date getter to return a dynamically calculated date of release based one release requirements. Returns embargo date when release_max_embargo?==true. Returns today’s date when release_no_delay?==true.
54 55 56 57 58 59 60 61 62 63 |
# File 'app/models/sufia/permission_template.rb', line 54 def release_date # If no release delays allowed, return today's date as release date return Time.zone.today if release_no_delay? # If this isn't an embargo, just return release_date from database return self[:release_date] unless # Otherwise (if an embargo), return latest embargo date by adding specified months to today's date Time.zone.today + RELEASE_EMBARGO_PERIODS.fetch(release_period).months end |
#release_fixed_date? ⇒ Boolean
Does this permission template require a specific date of release for all works NOTE: date will be in release_date
28 29 30 |
# File 'app/models/sufia/permission_template.rb', line 28 def release_fixed_date? release_period == RELEASE_TEXT_VALUE_FIXED end |
#release_max_embargo? ⇒ Boolean
Is there a maximum embargo period specified by this permission template NOTE: latest embargo date returned by release_date, maximum embargo period will be in release_period
46 47 48 49 |
# File 'app/models/sufia/permission_template.rb', line 46 def # Is it a release period in one of our valid embargo periods? RELEASE_EMBARGO_PERIODS.key?(release_period) end |
#release_no_delay? ⇒ Boolean
Does this permission template require no release delays (i.e. no embargoes allowed)
33 34 35 |
# File 'app/models/sufia/permission_template.rb', line 33 def release_no_delay? release_period == RELEASE_TEXT_VALUE_NO_DELAY end |
#valid_release_date?(date) ⇒ Boolean
Determines whether a given release date is valid based on this template’s requirements
67 68 69 70 |
# File 'app/models/sufia/permission_template.rb', line 67 def valid_release_date?(date) # Validate date against all release date requirements check_no_delay_requirements(date) && check_before_date_requirements(date) && check_fixed_date_requirements(date) end |
#valid_visibility?(value) ⇒ Boolean
Determines whether a given visibility setting is valid based on this template’s requirements
74 75 76 77 78 79 80 |
# File 'app/models/sufia/permission_template.rb', line 74 def valid_visibility?(value) # If template doesn't specify a visiblity (i.e. is "varies"), then any visibility is valid return true unless visibility.present? # Validate that passed in value matches visibility requirement exactly visibility == value end |