sufia 3.3.0 → 3.4.0
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/Gemfile +0 -2
- data/History.md +20 -0
- data/README.md +9 -5
- data/Releasing_sufia.md +4 -1
- data/SUFIA_VERSION +1 -1
- data/UpgradeGuide.md +3 -0
- data/{lib → app/controllers/concerns}/sufia/dashboard_controller_behavior.rb +1 -15
- data/app/views/catalog/_facet_layout.html.erb +1 -1
- data/app/views/dashboard/_facet_layout.html.erb +1 -1
- data/app/views/dashboard/_index_partials/_list_files.html.erb +1 -17
- data/app/views/generic_files/_permission_form.html.erb +3 -3
- data/app/views/users/index.html.erb +3 -3
- data/lib/sufia/version.rb +1 -1
- data/lib/sufia.rb +1 -3
- data/spec/controllers/batch_edits_controller_spec.rb +2 -2
- data/spec/controllers/downloads_controller_spec.rb +4 -4
- data/spec/controllers/generic_files_controller_spec.rb +12 -24
- data/spec/controllers/single_use_links_viewer_controller_spec.rb +1 -1
- data/spec/features/single_use_links_spec.rb +1 -1
- data/spec/features/users_spec.rb +6 -0
- data/spec/fixtures/image.jpg +0 -0
- data/spec/fixtures/png_fits.xml +29 -0
- data/spec/models/file_content_datastream_spec.rb +3 -13
- data/spec/models/generic_file/visibility_spec.rb +2 -2
- data/spec/models/generic_file_spec.rb +6 -1
- data/spec/spec_helper.rb +10 -4
- data/sufia-models/app/models/batch.rb +2 -6
- data/sufia-models/lib/sufia/models/engine.rb +2 -1
- data/sufia-models/lib/sufia/models/generic_file/characterization.rb +4 -4
- 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/permissions.rb +9 -4
- 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/generic_file.rb +6 -52
- data/sufia-models/lib/sufia/models/noid.rb +1 -1
- data/sufia-models/lib/sufia/models/version.rb +1 -1
- data/sufia-models/lib/sufia/models.rb +0 -6
- data/sufia-models/sufia-models.gemspec +9 -5
- data/sufia.gemspec +1 -2
- data/tasks/release.rake +2 -0
- data/tasks/sufia-dev.rake +1 -1
- metadata +26 -47
- data/lib/generators/sufia/templates/migrations/acts_as_follower_migration.rb +0 -17
- data/lib/generators/sufia/templates/migrations/add_avatars_to_users.rb +0 -9
- data/lib/generators/sufia/templates/migrations/add_groups_to_users.rb +0 -11
- data/lib/generators/sufia/templates/migrations/add_ldap_attrs_to_user.rb +0 -27
- data/lib/generators/sufia/templates/migrations/add_social_to_users.rb +0 -13
- data/lib/generators/sufia/templates/migrations/create_checksum_audit_logs.rb +0 -20
- data/lib/generators/sufia/templates/migrations/create_local_authorities.rb +0 -50
- data/lib/generators/sufia/templates/migrations/create_single_use_links.rb +0 -12
- data/lib/generators/sufia/templates/migrations/create_trophies.rb +0 -10
- data/lib/generators/sufia/templates/migrations/create_version_committers.rb +0 -15
- 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
- data/sufia-models/lib/sufia/models/generic_file/visibility.rb +0 -65
- /data/{lib → app/controllers/concerns}/sufia/contact_form_controller_behavior.rb +0 -0
- /data/sufia-models/{lib/sufia/models → app/models/concerns/sufia}/user.rb +0 -0
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
class CreateVersionCommitters < ActiveRecord::Migration
|
|
2
|
-
def self.up
|
|
3
|
-
create_table :version_committers do |t|
|
|
4
|
-
t.string :obj_id
|
|
5
|
-
t.string :datastream_id
|
|
6
|
-
t.string :version_id
|
|
7
|
-
t.string :committer_login
|
|
8
|
-
t.timestamps
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def self.down
|
|
13
|
-
drop_table :version_committers
|
|
14
|
-
end
|
|
15
|
-
end
|
|
@@ -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
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
module Sufia
|
|
2
|
-
module GenericFile
|
|
3
|
-
module Visibility
|
|
4
|
-
extend ActiveSupport::Concern
|
|
5
|
-
extend Deprecation
|
|
6
|
-
|
|
7
|
-
def visibility=(value)
|
|
8
|
-
return if value.nil?
|
|
9
|
-
# only set explicit permissions
|
|
10
|
-
case value
|
|
11
|
-
when Sufia::Models::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
|
|
12
|
-
public_visibility!
|
|
13
|
-
when Sufia::Models::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED
|
|
14
|
-
registered_visibility!
|
|
15
|
-
when Sufia::Models::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
|
|
16
|
-
private_visibility!
|
|
17
|
-
else
|
|
18
|
-
raise ArgumentError, "Invalid visibility: #{value.inspect}"
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def visibility
|
|
23
|
-
if read_groups.include? Sufia::Models::AccessRight::PERMISSION_TEXT_VALUE_PUBLIC
|
|
24
|
-
Sufia::Models::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
|
|
25
|
-
elsif read_groups.include? Sufia::Models::AccessRight::PERMISSION_TEXT_VALUE_AUTHENTICATED
|
|
26
|
-
Sufia::Models::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED
|
|
27
|
-
else
|
|
28
|
-
Sufia::Models::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def set_visibility(visibility)
|
|
33
|
-
Deprecation.warn Visibility, "set_visibility is deprecated, use visibility= instead. set_visibility will be removed in sufia 3.0", caller
|
|
34
|
-
self.visibility= visibility
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def visibility_changed?
|
|
38
|
-
@visibility_will_change
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
private
|
|
42
|
-
def visibility_will_change!
|
|
43
|
-
@visibility_will_change = true
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def public_visibility!
|
|
47
|
-
visibility_will_change! unless visibility == Sufia::Models::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
|
|
48
|
-
self.datastreams["rightsMetadata"].permissions({:group=>Sufia::Models::AccessRight::PERMISSION_TEXT_VALUE_PUBLIC}, "read")
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def registered_visibility!
|
|
52
|
-
visibility_will_change! unless visibility == Sufia::Models::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED
|
|
53
|
-
self.datastreams["rightsMetadata"].permissions({:group=>Sufia::Models::AccessRight::PERMISSION_TEXT_VALUE_AUTHENTICATED}, "read")
|
|
54
|
-
self.datastreams["rightsMetadata"].permissions({:group=>Sufia::Models::AccessRight::PERMISSION_TEXT_VALUE_PUBLIC}, "none")
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
def private_visibility!
|
|
58
|
-
visibility_will_change! unless visibility == Sufia::Models::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
|
|
59
|
-
self.datastreams["rightsMetadata"].permissions({:group=>Sufia::Models::AccessRight::PERMISSION_TEXT_VALUE_AUTHENTICATED}, "none")
|
|
60
|
-
self.datastreams["rightsMetadata"].permissions({:group=>Sufia::Models::AccessRight::PERMISSION_TEXT_VALUE_PUBLIC}, "none")
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
end
|
|
File without changes
|
|
File without changes
|