sufia 3.4.0.rc1 → 3.4.0.rc2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/History.md +10 -3
- data/SUFIA_VERSION +1 -1
- data/UpgradeGuide.md +3 -0
- data/app/views/generic_files/_permission_form.html.erb +3 -3
- data/lib/sufia.rb +0 -2
- data/lib/sufia/version.rb +1 -1
- data/spec/models/generic_file/visibility_spec.rb +1 -1
- data/sufia-models/lib/sufia/models/generic_file.rb +6 -51
- data/sufia-models/lib/sufia/models/generic_file/metadata.rb +22 -0
- data/sufia-models/lib/sufia/models/generic_file/mime_types.rb +23 -0
- data/sufia-models/lib/sufia/models/generic_file/trophies.rb +15 -0
- data/sufia-models/lib/sufia/models/generic_file/versions.rb +16 -0
- data/sufia-models/lib/sufia/models/version.rb +1 -1
- data/sufia-models/sufia-models.gemspec +2 -2
- metadata +8 -8
- data/spec/models/access_right_spec.rb +0 -57
- data/sufia-models/app/models/concerns/sufia/models/access_right.rb +0 -79
- data/sufia-models/app/models/concerns/sufia/models/with_access_right.rb +0 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8b88dc1dec7671c314b32538775b0691c7c01bb5
|
4
|
+
data.tar.gz: feb60f9924a19dc05ac5e0c7e71f19c387eaadf8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c3601baf4d5fc2f28d2e027072dadf1d239a703ea1c60584c944d8d3e03c2e71142b8adb2d119c771715ff278062f52f344d4bd027f154d8fcda5eb2f435450
|
7
|
+
data.tar.gz: 58484082783d403699c326e44774ddfd6698718d9f0549ec2cd2adaad07c4161644a7590510a691c837d6b5d09b7285c3e23668fbcc6b92045d2ef0eb3f6befc
|
data/History.md
CHANGED
@@ -1,8 +1,15 @@
|
|
1
1
|
# History of Sufia releases
|
2
2
|
|
3
|
-
## 3.4.0.
|
4
|
-
*
|
5
|
-
*
|
3
|
+
## 3.4.0.rc2
|
4
|
+
* Moved trophies related methods to Trophies module [Justin Coyne]
|
5
|
+
* Move mime type related methods into MimeTypes module [Justin Coyne]
|
6
|
+
* Extract version methods into its own module [Justin Coyne]
|
7
|
+
* Extract metadata into its own module [Justin Coyne]
|
8
|
+
* Update to latest rc of hydra-head [Justin Coyne]
|
9
|
+
* AccessRight has moved into HydraHead [Justin Coyne]
|
10
|
+
* Remove cruft [ci skip] [Justin Coyne]
|
11
|
+
* Remove Visibility, which was moved into hydra-head [Justin Coyne]
|
12
|
+
* Fix deprecation warnings by switching to
|
6
13
|
Hydra::AccessControls::Permissions [Justin Coyne]
|
7
14
|
* 2013-09-27: Works with hydra 6.1.0.rc1 [Justin Coyne]
|
8
15
|
|
data/SUFIA_VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.4.0.
|
1
|
+
3.4.0.rc2
|
data/UpgradeGuide.md
ADDED
@@ -60,13 +60,13 @@
|
|
60
60
|
<h3>Visibility - <small>who should have the ability to read and download</small></h3>
|
61
61
|
<div class="controls">
|
62
62
|
<label class="radio">
|
63
|
-
<input type="radio" id="visibility_open" name="visibility" value="<%=
|
63
|
+
<input type="radio" id="visibility_open" name="visibility" value="<%=Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC %>" <% if !public_perm.blank? %> checked="true"<% end %>/> <span class="label label-success">Open Access</span> Visible to the world.
|
64
64
|
</label>
|
65
65
|
<label class="radio">
|
66
|
-
<input type="radio" id="visibility_psu" name="visibility" value="<%=
|
66
|
+
<input type="radio" id="visibility_psu" name="visibility" value="<%=Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED %>" <% if !registered_perm.blank? %> checked="true"<% end %> /><span class="label label-info"><%=t('sufia.institution_name') %></span> Visible to all <%=t('sufia.institution_name') %> users.
|
67
67
|
</label>
|
68
68
|
<label class="radio">
|
69
|
-
<input type="radio" id="visibility_restricted" name="visibility" value="<%=
|
69
|
+
<input type="radio" id="visibility_restricted" name="visibility" value="<%=Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE %>"<% if registered_perm.blank? and public_perm.blank?%> checked="true"<% end %> /> <span class="label label-important">Private</span> Visible to users/groups specified below, if any.
|
70
70
|
</label>
|
71
71
|
</div><!-- /.controls -->
|
72
72
|
</div><!-- /.control-group -->
|
data/lib/sufia.rb
CHANGED
data/lib/sufia/version.rb
CHANGED
@@ -13,7 +13,7 @@ describe Sufia::GenericFile do
|
|
13
13
|
|
14
14
|
it 'allows for overrides of visibility' do
|
15
15
|
expect{
|
16
|
-
MockParent.new(visibility:
|
16
|
+
MockParent.new(visibility: Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE)
|
17
17
|
}.to_not raise_error
|
18
18
|
end
|
19
19
|
end
|
@@ -6,6 +6,9 @@ module Sufia
|
|
6
6
|
autoload :Permissions, 'sufia/models/generic_file/permissions'
|
7
7
|
autoload :WebForm, 'sufia/models/generic_file/web_form'
|
8
8
|
autoload :AccessibleAttributes, 'sufia/models/generic_file/accessible_attributes'
|
9
|
+
autoload :Trophies, 'sufia/models/generic_file/trophies'
|
10
|
+
autoload :Metadata, 'sufia/models/generic_file/metadata'
|
11
|
+
autoload :Versions, 'sufia/models/generic_file/versions'
|
9
12
|
include Sufia::ModelMethods
|
10
13
|
include Sufia::Noid
|
11
14
|
include Sufia::GenericFile::MimeTypes
|
@@ -16,55 +19,18 @@ module Sufia
|
|
16
19
|
include Sufia::GenericFile::Permissions
|
17
20
|
include Sufia::GenericFile::WebForm
|
18
21
|
include Sufia::GenericFile::Derivatives
|
22
|
+
include Sufia::GenericFile::Trophies
|
23
|
+
include Sufia::GenericFile::Metadata
|
24
|
+
include Sufia::GenericFile::Versions
|
19
25
|
|
20
26
|
included do
|
21
|
-
has_metadata :name => "descMetadata", :type => GenericFileRdfDatastream
|
22
|
-
has_metadata :name => "properties", :type => PropertiesDatastream
|
23
|
-
has_file_datastream :name => "content", :type => FileContentDatastream
|
24
|
-
has_file_datastream :name => "thumbnail"
|
25
|
-
|
26
27
|
belongs_to :batch, :property => :is_part_of
|
27
28
|
|
28
|
-
delegate_to :properties, [:relative_path, :depositor, :import_url], multiple: false
|
29
|
-
delegate_to :descMetadata, [:date_uploaded, :date_modified], multiple: false
|
30
|
-
delegate_to :descMetadata, [:related_url, :based_near, :part_of, :creator,
|
31
|
-
:contributor, :title, :tag, :description, :rights,
|
32
|
-
:publisher, :date_created, :subject,
|
33
|
-
:resource_type, :identifier, :language], multiple: true
|
34
|
-
|
35
29
|
around_save :characterize_if_changed, :retry_warming
|
36
|
-
before_destroy :cleanup_trophies
|
37
30
|
|
38
31
|
attr_accessible *(ds_specs['descMetadata'][:type].fields + [:permissions])
|
39
32
|
end
|
40
33
|
|
41
|
-
|
42
|
-
def record_version_committer(user)
|
43
|
-
version = content.latest_version
|
44
|
-
# content datastream not (yet?) present
|
45
|
-
return if version.nil?
|
46
|
-
VersionCommitter.create(:obj_id => version.pid,
|
47
|
-
:datastream_id => version.dsid,
|
48
|
-
:version_id => version.versionID,
|
49
|
-
:committer_login => user.user_key)
|
50
|
-
end
|
51
|
-
|
52
|
-
def pdf?
|
53
|
-
self.class.pdf_mime_types.include? self.mime_type
|
54
|
-
end
|
55
|
-
|
56
|
-
def image?
|
57
|
-
self.class.image_mime_types.include? self.mime_type
|
58
|
-
end
|
59
|
-
|
60
|
-
def video?
|
61
|
-
self.class.video_mime_types.include? self.mime_type
|
62
|
-
end
|
63
|
-
|
64
|
-
def audio?
|
65
|
-
self.class.audio_mime_types.include? self.mime_type
|
66
|
-
end
|
67
|
-
|
68
34
|
def persistent_url
|
69
35
|
"#{Sufia.config.persistent_hostpath}#{noid}"
|
70
36
|
end
|
@@ -100,10 +66,6 @@ module Sufia
|
|
100
66
|
end
|
101
67
|
end
|
102
68
|
|
103
|
-
def cleanup_trophies
|
104
|
-
Trophy.destroy_all(generic_file_id: self.noid)
|
105
|
-
end
|
106
|
-
|
107
69
|
def related_files
|
108
70
|
relateds = begin
|
109
71
|
self.batch.generic_files
|
@@ -130,13 +92,6 @@ module Sufia
|
|
130
92
|
return solr_doc
|
131
93
|
end
|
132
94
|
|
133
|
-
def file_format
|
134
|
-
return nil if self.mime_type.blank? and self.format_label.blank?
|
135
|
-
return self.mime_type.split('/')[1]+ " ("+self.format_label.join(", ")+")" unless self.mime_type.blank? or self.format_label.blank?
|
136
|
-
return self.mime_type.split('/')[1] unless self.mime_type.blank?
|
137
|
-
return self.format_label
|
138
|
-
end
|
139
|
-
|
140
95
|
# Redefine this for more intuitive keys in Redis
|
141
96
|
def to_param
|
142
97
|
noid
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Sufia
|
2
|
+
module GenericFile
|
3
|
+
module Metadata
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
included do
|
7
|
+
has_metadata "descMetadata", type: GenericFileRdfDatastream
|
8
|
+
has_metadata "properties", type: PropertiesDatastream
|
9
|
+
has_file_datastream "content", type: FileContentDatastream
|
10
|
+
has_file_datastream "thumbnail"
|
11
|
+
|
12
|
+
|
13
|
+
delegate_to :properties, [:relative_path, :depositor, :import_url], multiple: false
|
14
|
+
delegate_to :descMetadata, [:date_uploaded, :date_modified], multiple: false
|
15
|
+
delegate_to :descMetadata, [:related_url, :based_near, :part_of, :creator,
|
16
|
+
:contributor, :title, :tag, :description, :rights,
|
17
|
+
:publisher, :date_created, :subject,
|
18
|
+
:resource_type, :identifier, :language], multiple: true
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -3,6 +3,29 @@ module Sufia
|
|
3
3
|
module MimeTypes
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
|
+
def pdf?
|
7
|
+
self.class.pdf_mime_types.include? self.mime_type
|
8
|
+
end
|
9
|
+
|
10
|
+
def image?
|
11
|
+
self.class.image_mime_types.include? self.mime_type
|
12
|
+
end
|
13
|
+
|
14
|
+
def video?
|
15
|
+
self.class.video_mime_types.include? self.mime_type
|
16
|
+
end
|
17
|
+
|
18
|
+
def audio?
|
19
|
+
self.class.audio_mime_types.include? self.mime_type
|
20
|
+
end
|
21
|
+
|
22
|
+
def file_format
|
23
|
+
return nil if self.mime_type.blank? and self.format_label.blank?
|
24
|
+
return self.mime_type.split('/')[1]+ " ("+self.format_label.join(", ")+")" unless self.mime_type.blank? or self.format_label.blank?
|
25
|
+
return self.mime_type.split('/')[1] unless self.mime_type.blank?
|
26
|
+
return self.format_label
|
27
|
+
end
|
28
|
+
|
6
29
|
module ClassMethods
|
7
30
|
def image_mime_types
|
8
31
|
['image/png','image/jpeg', 'image/jpg', 'image/jp2', 'image/bmp', 'image/gif']
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Sufia
|
2
|
+
module GenericFile
|
3
|
+
module Versions
|
4
|
+
def record_version_committer(user)
|
5
|
+
version = content.latest_version
|
6
|
+
# content datastream not (yet?) present
|
7
|
+
return if version.nil?
|
8
|
+
VersionCommitter.create(:obj_id => version.pid,
|
9
|
+
:datastream_id => version.dsid,
|
10
|
+
:version_id => version.versionID,
|
11
|
+
:committer_login => user.user_key)
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -30,10 +30,10 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.add_dependency 'rails', '>= 3.2.13', '< 5.0'
|
31
31
|
spec.add_dependency 'activeresource' # No longer a dependency of rails 4.0
|
32
32
|
|
33
|
-
# spec.add_dependency "hydra", "6.1.0.
|
33
|
+
# spec.add_dependency "hydra", "6.1.0.rc2"
|
34
34
|
# Since hydra 6.1 isn't out yet, we'll just build it so that it's compatible
|
35
35
|
# without an explicit dependency
|
36
|
-
spec.add_dependency "hydra-head", "~> 6.4.0.
|
36
|
+
spec.add_dependency "hydra-head", "~> 6.4.0.rc2"
|
37
37
|
spec.add_dependency 'active-fedora', "~> 6.6.0.rc1"
|
38
38
|
|
39
39
|
spec.add_dependency 'nest', '~> 1.1.1'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sufia
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.4.0.
|
4
|
+
version: 3.4.0.rc2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Coyne
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sufia-models
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 3.4.0.
|
19
|
+
version: 3.4.0.rc2
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 3.4.0.
|
26
|
+
version: 3.4.0.rc2
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: blacklight_advanced_search
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -162,6 +162,7 @@ files:
|
|
162
162
|
- Rakefile
|
163
163
|
- Releasing_sufia.md
|
164
164
|
- SUFIA_VERSION
|
165
|
+
- UpgradeGuide.md
|
165
166
|
- app/assets/images/blacklight/bg.png
|
166
167
|
- app/assets/images/blacklight/border.png
|
167
168
|
- app/assets/images/blacklight/bul_sq_gry.gif
|
@@ -576,7 +577,6 @@ files:
|
|
576
577
|
- spec/jobs/ingest_local_file_job_spec.rb
|
577
578
|
- spec/lib/sufia/id_service_spec.rb
|
578
579
|
- spec/lib/sufia/upload_complete_behavior_spec.rb
|
579
|
-
- spec/models/access_right_spec.rb
|
580
580
|
- spec/models/audit_job_spec.rb
|
581
581
|
- spec/models/batch_spec.rb
|
582
582
|
- spec/models/batch_update_job_spec.rb
|
@@ -614,8 +614,6 @@ files:
|
|
614
614
|
- sufia-models/Rakefile
|
615
615
|
- sufia-models/app/models/batch.rb
|
616
616
|
- sufia-models/app/models/checksum_audit_log.rb
|
617
|
-
- sufia-models/app/models/concerns/sufia/models/access_right.rb
|
618
|
-
- sufia-models/app/models/concerns/sufia/models/with_access_right.rb
|
619
617
|
- sufia-models/app/models/datastreams/batch_rdf_datastream.rb
|
620
618
|
- sufia-models/app/models/datastreams/file_content_datastream.rb
|
621
619
|
- sufia-models/app/models/datastreams/fits_datastream.rb
|
@@ -668,9 +666,12 @@ files:
|
|
668
666
|
- sufia-models/lib/sufia/models/generic_file/characterization.rb
|
669
667
|
- sufia-models/lib/sufia/models/generic_file/derivatives.rb
|
670
668
|
- sufia-models/lib/sufia/models/generic_file/export.rb
|
669
|
+
- sufia-models/lib/sufia/models/generic_file/metadata.rb
|
671
670
|
- sufia-models/lib/sufia/models/generic_file/mime_types.rb
|
672
671
|
- sufia-models/lib/sufia/models/generic_file/permissions.rb
|
673
672
|
- sufia-models/lib/sufia/models/generic_file/thumbnail.rb
|
673
|
+
- sufia-models/lib/sufia/models/generic_file/trophies.rb
|
674
|
+
- sufia-models/lib/sufia/models/generic_file/versions.rb
|
674
675
|
- sufia-models/lib/sufia/models/generic_file/web_form.rb
|
675
676
|
- sufia-models/lib/sufia/models/id_service.rb
|
676
677
|
- sufia-models/lib/sufia/models/jobs/active_fedora_pid_based_job.rb
|
@@ -831,7 +832,6 @@ test_files:
|
|
831
832
|
- spec/jobs/ingest_local_file_job_spec.rb
|
832
833
|
- spec/lib/sufia/id_service_spec.rb
|
833
834
|
- spec/lib/sufia/upload_complete_behavior_spec.rb
|
834
|
-
- spec/models/access_right_spec.rb
|
835
835
|
- spec/models/audit_job_spec.rb
|
836
836
|
- spec/models/batch_spec.rb
|
837
837
|
- spec/models/batch_update_job_spec.rb
|
@@ -1,57 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Sufia::Models::AccessRight do
|
4
|
-
[
|
5
|
-
[false, Sufia::Models::AccessRight::PERMISSION_TEXT_VALUE_PUBLIC, nil, nil, true, false, false, false],
|
6
|
-
[false, Sufia::Models::AccessRight::PERMISSION_TEXT_VALUE_AUTHENTICATED, nil, nil, true, false, false, false],
|
7
|
-
[false, nil, nil, nil, true, false, false, false],
|
8
|
-
[false, nil, nil, 2.days.from_now, false, false, false, true],
|
9
|
-
[false, nil, nil, 2.days.ago, false, false, false, true],
|
10
|
-
[false, nil, Sufia::Models::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC, nil, true, false, false, false],
|
11
|
-
[false, nil, Sufia::Models::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED, nil, false, true, false, false],
|
12
|
-
[false, nil, Sufia::Models::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE, nil, false, false, true, false],
|
13
|
-
[false, nil, Sufia::Models::AccessRight::VISIBILITY_TEXT_VALUE_EMBARGO, nil, false, false, false, true],
|
14
|
-
[true, Sufia::Models::AccessRight::PERMISSION_TEXT_VALUE_PUBLIC, nil, nil, true, false, false, false],
|
15
|
-
[true, Sufia::Models::AccessRight::PERMISSION_TEXT_VALUE_PUBLIC, nil, 2.days.from_now, false, false, false, true],
|
16
|
-
[true, Sufia::Models::AccessRight::PERMISSION_TEXT_VALUE_PUBLIC, nil, 2.days.ago, false, false, false, true],
|
17
|
-
[true, Sufia::Models::AccessRight::PERMISSION_TEXT_VALUE_AUTHENTICATED, nil, nil, false, true, false, false],
|
18
|
-
[true, nil, nil, nil, false, false, true, false],
|
19
|
-
[true, nil, Sufia::Models::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC, nil, true, false, false, false],
|
20
|
-
[true, nil, Sufia::Models::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED, nil, false, true, false, false],
|
21
|
-
[true, nil, Sufia::Models::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE, nil, false, false, true, false],
|
22
|
-
[true, nil, Sufia::Models::AccessRight::VISIBILITY_TEXT_VALUE_EMBARGO, nil, false, false, false, true],
|
23
|
-
].each do |given_persisted, givin_permission, given_visibility, given_embargo_release_date, expected_open_access, expected_authentication_only, expected_private, expected_open_access_with_embargo_release_date|
|
24
|
-
spec_text = <<-TEXT
|
25
|
-
|
26
|
-
GIVEN: {
|
27
|
-
persisted: #{given_persisted.inspect},
|
28
|
-
permission: #{givin_permission.inspect},
|
29
|
-
visibility: #{given_visibility.inspect},
|
30
|
-
embargo_release_date: #{given_embargo_release_date}
|
31
|
-
},
|
32
|
-
EXPECTED: {
|
33
|
-
open_access: #{expected_open_access.inspect},
|
34
|
-
restricted: #{expected_authentication_only.inspect},
|
35
|
-
private: #{expected_private.inspect},
|
36
|
-
open_access_with_embargo_release_date: #{expected_open_access_with_embargo_release_date}
|
37
|
-
},
|
38
|
-
TEXT
|
39
|
-
|
40
|
-
it spec_text do
|
41
|
-
permissions = [{access: :edit, name: givin_permission}]
|
42
|
-
permissionable = double(
|
43
|
-
'permissionable',
|
44
|
-
permissions: permissions,
|
45
|
-
visibility: given_visibility,
|
46
|
-
persisted?: given_persisted,
|
47
|
-
embargo_release_date: given_embargo_release_date
|
48
|
-
)
|
49
|
-
access_right = Sufia::Models::AccessRight.new(permissionable)
|
50
|
-
|
51
|
-
expect(access_right.open_access?).to eq(expected_open_access)
|
52
|
-
expect(access_right.authenticated_only?).to eq(expected_authentication_only)
|
53
|
-
expect(access_right.private?).to eq(expected_private)
|
54
|
-
expect(access_right.open_access_with_embargo_release_date?).to eq(expected_open_access_with_embargo_release_date)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
@@ -1,79 +0,0 @@
|
|
1
|
-
module Sufia
|
2
|
-
module Models
|
3
|
-
class AccessRight
|
4
|
-
PERMISSION_TEXT_VALUE_PUBLIC = 'public'.freeze
|
5
|
-
PERMISSION_TEXT_VALUE_AUTHENTICATED = 'registered'.freeze
|
6
|
-
VISIBILITY_TEXT_VALUE_PUBLIC = 'open'.freeze
|
7
|
-
VISIBILITY_TEXT_VALUE_EMBARGO = 'open_with_embargo_release_date'.freeze
|
8
|
-
VISIBILITY_TEXT_VALUE_AUTHENTICATED = 'psu'.freeze
|
9
|
-
VISIBILITY_TEXT_VALUE_PRIVATE = 'restricted'.freeze
|
10
|
-
|
11
|
-
# @param permissionable [#visibility, #permissions]
|
12
|
-
# @example
|
13
|
-
# file = GenericFile.find('sufia:1234')
|
14
|
-
# access = Sufia::AccessRight.new(file)
|
15
|
-
def initialize(permissionable)
|
16
|
-
@permissionable = permissionable
|
17
|
-
end
|
18
|
-
|
19
|
-
attr_reader :permissionable
|
20
|
-
delegate :persisted?, :permissions, :visibility, to: :permissionable
|
21
|
-
protected :persisted?, :permissions, :visibility
|
22
|
-
|
23
|
-
|
24
|
-
def open_access?
|
25
|
-
return true if has_visibility_text_for?(VISIBILITY_TEXT_VALUE_PUBLIC)
|
26
|
-
# We don't want to know if its under embargo, simply does it have a date.
|
27
|
-
# In this way, we can properly inform the label input
|
28
|
-
persisted_open_access_permission? && !permissionable.embargo_release_date.present?
|
29
|
-
end
|
30
|
-
|
31
|
-
def open_access_with_embargo_release_date?
|
32
|
-
return false unless permissionable_is_embargoable?
|
33
|
-
return true if has_visibility_text_for?(VISIBILITY_TEXT_VALUE_EMBARGO)
|
34
|
-
# We don't want to know if its under embargo, simply does it have a date.
|
35
|
-
# In this way, we can properly inform the label input
|
36
|
-
persisted_open_access_permission? && permissionable.embargo_release_date.present?
|
37
|
-
end
|
38
|
-
|
39
|
-
def authenticated_only?
|
40
|
-
return false if open_access?
|
41
|
-
has_permission_text_for?(PERMISSION_TEXT_VALUE_AUTHENTICATED) ||
|
42
|
-
has_visibility_text_for?(VISIBILITY_TEXT_VALUE_AUTHENTICATED)
|
43
|
-
end
|
44
|
-
|
45
|
-
def private?
|
46
|
-
return false if open_access?
|
47
|
-
return false if authenticated_only?
|
48
|
-
return false if open_access_with_embargo_release_date?
|
49
|
-
true
|
50
|
-
end
|
51
|
-
|
52
|
-
private
|
53
|
-
|
54
|
-
def persisted_open_access_permission?
|
55
|
-
if persisted?
|
56
|
-
has_permission_text_for?(PERMISSION_TEXT_VALUE_PUBLIC)
|
57
|
-
else
|
58
|
-
visibility.to_s == ''
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
def on_or_after_any_embargo_release_date?
|
63
|
-
return true unless permissionable.embargo_release_date
|
64
|
-
permissionable.embargo_release_date.to_date < Date.today
|
65
|
-
end
|
66
|
-
|
67
|
-
def permissionable_is_embargoable?
|
68
|
-
permissionable.respond_to?(:embargo_release_date)
|
69
|
-
end
|
70
|
-
|
71
|
-
def has_visibility_text_for?(text)
|
72
|
-
visibility == text
|
73
|
-
end
|
74
|
-
def has_permission_text_for?(text)
|
75
|
-
!!permissions.detect { |perm| perm[:name] == text }
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
module Sufia
|
2
|
-
module Models
|
3
|
-
module WithAccessRight
|
4
|
-
extend ActiveSupport::Concern
|
5
|
-
|
6
|
-
def under_embargo?
|
7
|
-
@under_embargo ||= rightsMetadata.under_embargo?
|
8
|
-
end
|
9
|
-
|
10
|
-
def open_access?
|
11
|
-
access_rights.open_access?
|
12
|
-
end
|
13
|
-
|
14
|
-
def open_access_with_embargo_release_date?
|
15
|
-
access_rights.open_access_with_embargo_release_date?
|
16
|
-
end
|
17
|
-
|
18
|
-
def authenticated_only_access?
|
19
|
-
access_rights.authenticated_only?
|
20
|
-
end
|
21
|
-
|
22
|
-
def private_access?
|
23
|
-
access_rights.private?
|
24
|
-
end
|
25
|
-
|
26
|
-
def access_rights
|
27
|
-
@access_rights ||= AccessRight.new(self)
|
28
|
-
end
|
29
|
-
protected :access_rights
|
30
|
-
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|