sufia 3.4.0.rc1 → 3.4.0.rc2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|