sufia 7.3.0.rc2 → 7.3.0.rc3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: '009b9b30b853cbfba6072849c4ac71f9a0523b4d'
4
- data.tar.gz: 0cc820c3c594a6cfb415f072eda5f00f7f59af51
3
+ metadata.gz: bac8c45d5973e94def8f5a7d7d2241e6d8e492a6
4
+ data.tar.gz: ff143be07e8ca19044b9cade1910e1843cd80b78
5
5
  SHA512:
6
- metadata.gz: 7e745682238c01ef3eb98b1642ced091da5ea8e39ba4fc22a437efe835dedd02cdeedbd662abdb66c9b4f3c28318951d19bf7824347f9958b528066d213c180b
7
- data.tar.gz: 269da7a4d986f1f38963333ae3b3c8b541e20bcb3b9ad744fe57d622bcb21cf3f290f2ad1854e23504306418c759704ad66a9bf297a77fd5b8a437bbde727cf3
6
+ metadata.gz: ce1118d2b2269c1eee9ff03dc78bc32bc4790fb0847ec26c62729596956b56013cb2289efa7c9856238522bd3a4e14ea184e2895fd5e90da6a296646d5496031
7
+ data.tar.gz: 36f2c7e153ed19f9f1034bb9364849bcbd262d89d4b47b6a5bfaa98d142655901f2bd433318f2aea01093a7220154f8b4541efd1cad0f636849aa6a39441fd93
@@ -81,6 +81,7 @@ RSpec/ExampleLength:
81
81
  - 'spec/models/generic_work_spec.rb'
82
82
  - 'spec/models/featured_work_spec.rb'
83
83
  - 'spec/services/sufia/actor_factory_spec.rb'
84
+ - 'spec/services/sufia/admin_set_create_service_spec.rb'
84
85
  - 'spec/services/sufia/user_stat_importer_spec.rb'
85
86
  - 'spec/views/catalog/_index_list_default.html.erb_spec.rb'
86
87
  - 'spec/views/collections/_form.html.erb_spec.rb'
data/README.md CHANGED
@@ -68,8 +68,8 @@ After installing the Prerequisites:
68
68
 
69
69
  Sufia 7.x requires the following software to work:
70
70
 
71
- 1. [Solr](http://lucene.apache.org/solr/) version >= 5.x (tested up to 6.3.0)
72
- 1. [Fedora Commons](http://www.fedora-commons.org/) digital repository version >= 4.5.1 (tested up to 4.7.0)
71
+ 1. [Solr](http://lucene.apache.org/solr/) version >= 5.x (tested up to 6.4.1)
72
+ 1. [Fedora Commons](http://www.fedora-commons.org/) digital repository version >= 4.5.1 (tested up to 4.7.1)
73
73
  1. A SQL RDBMS (MySQL, PostgreSQL), though **note** that SQLite will be used by default if you're looking to get up and running quickly
74
74
  1. [Redis](http://redis.io/), a key-value store
75
75
  1. [ImageMagick](http://www.imagemagick.org/) with JPEG-2000 support
@@ -161,6 +161,16 @@ rake hydra:server
161
161
 
162
162
  And now you should be able to browse to [localhost:3000](http://localhost:3000/) and see the application. Note that this web server is purely for development purposes; you will want to use a more fully featured [web server](#web-server) for production-like environments.
163
163
 
164
+ ## Add Default Admin Set
165
+
166
+ After Fedora and Solr are running, create the default administrative set by running the following rake task:
167
+
168
+ ```
169
+ rake sufia:default_admin_set:create
170
+ ```
171
+
172
+ You will want to run this command the first time this code is deployed to a new environment as well.
173
+
164
174
  # Managing a Sufia-based app
165
175
 
166
176
  The [Sufia Management Guide](https://github.com/projecthydra/sufia/wiki/Sufia-Management-Guide) provides tips for how to manage, customize, and enhance your Sufia application, including guidance specific to:
@@ -1,6 +1,21 @@
1
1
  module Sufia
2
2
  # Creates AdminSets
3
3
  class AdminSetCreateService
4
+ DEFAULT_ID = 'admin_sets/default'.freeze
5
+
6
+ def self.create_default!
7
+ return if AdminSet.exists?(DEFAULT_ID)
8
+ admin_set = AdminSet.new(id: DEFAULT_ID, title: ['Default Admin Set'])
9
+ begin
10
+ new(admin_set, nil).create
11
+ rescue ActiveFedora::IllegalOperation
12
+ # It is possible that another thread created the AdminSet just before this method
13
+ # was called, so ActiveFedora will raise IllegalOperation. In this case we can safely
14
+ # ignore the error.
15
+ Rails.logger.error("AdminSet ID=#{DEFAULT_ID} may or may not have been created due to threading issues.")
16
+ end
17
+ end
18
+
4
19
  # @param admin_set [AdminSet] the admin set to operate on
5
20
  # @param creating_user [User] the user who created the admin set.
6
21
  def initialize(admin_set, creating_user)
@@ -15,8 +30,20 @@ module Sufia
15
30
  def create
16
31
  admin_set.read_groups = ['public']
17
32
  admin_set.edit_groups = ['admin']
18
- admin_set.creator = [creating_user.user_key]
19
- admin_set.save
33
+ admin_set.creator = [creating_user.user_key] if creating_user
34
+ admin_set.save.tap do |result|
35
+ create_permission_template if result
36
+ end
37
+ end
38
+
39
+ def access_grants_attributes
40
+ return [] unless creating_user
41
+ [{ agent_type: 'user', agent_id: creating_user.user_key, access: 'manage' }]
42
+ end
43
+
44
+ def create_permission_template
45
+ PermissionTemplate.create!(admin_set_id: admin_set.id,
46
+ access_grants_attributes: access_grants_attributes)
20
47
  end
21
48
  end
22
49
  end
@@ -1,3 +1,3 @@
1
1
  module Sufia
2
- VERSION = '7.3.0.rc2'.freeze
2
+ VERSION = '7.3.0.rc3'.freeze
3
3
  end
@@ -0,0 +1,8 @@
1
+ namespace :sufia do
2
+ namespace :default_admin_set do
3
+ desc "Create the default Admin Set"
4
+ task create: :environment do
5
+ Sufia::AdminSetCreateService.create_default!
6
+ end
7
+ end
8
+ end
@@ -5,8 +5,8 @@ namespace :sufia do
5
5
  MoveAllWorksToAdminSet.run(AdminSet.find(Sufia::DefaultAdminSetActor::DEFAULT_ID))
6
6
  end
7
7
 
8
- desc "Migrate data from 7.2.x to 7.3.0"
9
- task from_7_2_x_to_7_3_0_release: :environment do
8
+ desc "Migrate workflow data from 7.3.0.rc1"
9
+ task from_7_3_0rc1_release: :environment do
10
10
  logger = Logger.new(STDOUT)
11
11
  logger.level = Logger::DEBUG
12
12
  logger.info(%(Starting migration to Sufia 7.3.0 in preparation for Hyrax 1.0.0))
@@ -9,12 +9,16 @@ RSpec.describe Sufia::AdminSetCreateService do
9
9
  subject { service.create }
10
10
 
11
11
  context "when the admin_set is valid" do
12
- it "is successful" do
12
+ let(:permission_template) { Sufia::PermissionTemplate.find_by(admin_set_id: admin_set.id) }
13
+ let(:grant) { permission_template.access_grants.first }
14
+ it "creates an AdminSet, PermissionTemplate, and sets access" do
13
15
  expect do
14
16
  expect(subject).to be true
15
17
  end.to change { admin_set.persisted? }.from(false).to(true)
16
18
  expect(admin_set.read_groups).to eq ['public']
17
19
  expect(admin_set.edit_groups).to eq ['admin']
20
+ expect(grant.agent_id).to eq user.user_key
21
+ expect(grant.access).to eq 'manage'
18
22
  expect(admin_set.creator).to eq [user.user_key]
19
23
  end
20
24
  end
@@ -24,4 +28,17 @@ RSpec.describe Sufia::AdminSetCreateService do
24
28
  it { is_expected.to be false }
25
29
  end
26
30
  end
31
+
32
+ describe '.create_default!' do
33
+ let(:default_admin_set_id) { 'admin_sets/default' }
34
+ let(:permission_template) { Sufia::PermissionTemplate.find_by!(admin_set_id: default_admin_set_id) }
35
+ # It is important to test the side-effects as a default admin set is a fundamental assumption for Sufia >= 7.3
36
+ it 'creates AdminSet, PermissionTemplate' do
37
+ expect(AdminSet).not_to exist(default_admin_set_id)
38
+ described_class.create_default!
39
+ admin_set = AdminSet.find(default_admin_set_id)
40
+ expect(admin_set).to be_persisted
41
+ expect(permission_template).to be_persisted
42
+ end
43
+ end
27
44
  end
@@ -18,6 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.version = Sufia::VERSION
19
19
  spec.license = 'Apache2'
20
20
 
21
+ spec.add_dependency 'hydra-works', '~> 0.16'
21
22
  spec.add_dependency 'curation_concerns', '~> 1.7.5'
22
23
  spec.add_dependency 'hydra-head', '>= 10.4.0'
23
24
  spec.add_dependency 'hydra-batch-edit', '~> 2.0'
@@ -1,4 +1,4 @@
1
- gem 'sufia', '7.3.0.rc1'
1
+ gem 'sufia', '7.3.0.rc3'
2
2
 
3
3
  run 'bundle install'
4
4
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sufia
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.3.0.rc2
4
+ version: 7.3.0.rc3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Coyne
@@ -14,6 +14,20 @@ bindir: bin
14
14
  cert_chain: []
15
15
  date: 2017-03-02 00:00:00.000000000 Z
16
16
  dependencies:
17
+ - !ruby/object:Gem::Dependency
18
+ name: hydra-works
19
+ requirement: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - "~>"
22
+ - !ruby/object:Gem::Version
23
+ version: '0.16'
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ requirements:
28
+ - - "~>"
29
+ - !ruby/object:Gem::Version
30
+ version: '0.16'
17
31
  - !ruby/object:Gem::Dependency
18
32
  name: curation_concerns
19
33
  requirement: !ruby/object:Gem::Requirement
@@ -1340,6 +1354,7 @@ files:
1340
1354
  - lib/sufia/version.rb
1341
1355
  - lib/sufia/zotero.rb
1342
1356
  - lib/sufia/zotero/config.rb
1357
+ - lib/tasks/default_admin_set.rake
1343
1358
  - lib/tasks/migrate.rake
1344
1359
  - solr/config/_rest_managed.json
1345
1360
  - solr/config/admin-extra.html