curation_concerns 0.12.0.pre4 → 0.12.0.pre5

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: ad2b197734a59a28a4ab248eacd7c8b0e2ece654
4
- data.tar.gz: 46e47043c3c00bc9daac8efa8912113388525061
3
+ metadata.gz: 4cc5f2766beec4a47127cd43e76cd15789ea7edf
4
+ data.tar.gz: 0d1eccaf7b536f7a4c7d51d575f9828e4f2f7ad6
5
5
  SHA512:
6
- metadata.gz: 725c69274e3e5125825d8adeb1b83e9374d10efc3b35b51caef69d88fb4918e8955f24c074b36bc3a9803a70517dc49f131ab7290f1e8cce90e67d2154b3fb5d
7
- data.tar.gz: de35e7ef96cd2c794b35de216240e99997397020428a1082c70a675ae2ad41a062fc73b0c737463ef97da17b7965203a34da90232e739fb6289abea031b6134a
6
+ metadata.gz: 775fd8bd118db29f56b3a12b8aee3f36e02dcb108cefcd4da104413b042c0b38fd3983102cd55b49824b26acc0c2fdd3448909edcb734cb89018f8fccf0d7d12
7
+ data.tar.gz: 697fe8253127b5cfa3ab326458b944a44d09693af59710d629d1a65f59fa5ff49ae558fe5ef82848f18fc0fbc7221cdf37c60390e08f5b9c48dfd949c4e7cd4d
@@ -0,0 +1,27 @@
1
+ module CurationConcerns
2
+ class ActorStack
3
+ attr_reader :curation_concern, :user, :first_actor_class, :more_actors
4
+ def initialize(curation_concern, user, more_actors)
5
+ @curation_concern = curation_concern
6
+ @user = user
7
+ @more_actors = more_actors
8
+ @first_actor_class = @more_actors.shift || RootActor
9
+ end
10
+
11
+ def inner_stack
12
+ ActorStack.new(curation_concern, user, more_actors)
13
+ end
14
+
15
+ def actor
16
+ first_actor_class.new(curation_concern, user, inner_stack)
17
+ end
18
+
19
+ def create(attributes)
20
+ actor.create(attributes.with_indifferent_access)
21
+ end
22
+
23
+ def update(attributes)
24
+ actor.update(attributes.with_indifferent_access)
25
+ end
26
+ end
27
+ end
@@ -26,7 +26,7 @@ module CurationConcerns
26
26
  file_set.date_modified = now
27
27
  file_set.creator = [user.user_key]
28
28
 
29
- CurationConcern::ActorStack.new(file_set, user, [InterpretVisibilityActor]).create(file_set_params) if assign_visibility?(file_set_params)
29
+ ActorStack.new(file_set, user, [InterpretVisibilityActor]).create(file_set_params) if assign_visibility?(file_set_params)
30
30
  attach_file_to_work(work, file_set, file_set_params) if work
31
31
  yield(file_set) if block_given?
32
32
  end
@@ -66,9 +66,9 @@ module CurationConcerns
66
66
  end
67
67
 
68
68
  def update_metadata(attributes)
69
- stack = CurationConcern::ActorStack.new(file_set,
70
- user,
71
- [InterpretVisibilityActor, BaseActor])
69
+ stack = ActorStack.new(file_set,
70
+ user,
71
+ [InterpretVisibilityActor, BaseActor])
72
72
  if result = stack.update(attributes)
73
73
  CurationConcerns.config.callback.run(:after_update_metadata, file_set, user)
74
74
  end
@@ -22,7 +22,11 @@ module CurationConcerns
22
22
  end
23
23
 
24
24
  def admin_permissions
25
- can [:create, :discover, :show, :read, :edit, :update, :destroy], :all
25
+ alias_action :edit, to: :update
26
+ alias_action :show, to: :read
27
+ alias_action :discover, to: :read
28
+
29
+ can :manage, curation_concerns_models
26
30
  end
27
31
 
28
32
  def admin?
@@ -42,8 +46,13 @@ module CurationConcerns
42
46
  # to submit content
43
47
  def everyone_can_create_curation_concerns
44
48
  return unless registered_user?
45
- can :create, [::FileSet, ::Collection]
46
- can :create, [CurationConcerns.config.curation_concerns]
49
+ can :create, curation_concerns_models
47
50
  end
51
+
52
+ private
53
+
54
+ def curation_concerns_models
55
+ [::FileSet, ::Collection] + CurationConcerns.config.curation_concerns
56
+ end
48
57
  end
49
58
  end
@@ -1,6 +1,12 @@
1
1
  module CurationConcerns
2
2
  module FileSetBehavior
3
3
  extend ActiveSupport::Concern
4
+ # BasicMetadata needs to be included before Characterization since
5
+ # both of them declare properties with the same predicate (dc:creator
6
+ # and dc:language.) Loading BasicMetadata first allows Characterization
7
+ # to detect the duplicate (via the AlreadyThereStrategy) and prevents
8
+ # the warning.
9
+ include CurationConcerns::BasicMetadata
4
10
  include Hydra::Works::FileSetBehavior
5
11
  include Hydra::Works::VirusCheck
6
12
  include Hydra::Works::Characterization
@@ -9,7 +15,6 @@ module CurationConcerns
9
15
  include CurationConcerns::Noid
10
16
  include CurationConcerns::FileSet::Derivatives
11
17
  include CurationConcerns::Permissions
12
- include CurationConcerns::BasicMetadata
13
18
  include CurationConcerns::FileSet::FullTextIndexing
14
19
  include CurationConcerns::FileSet::Indexing
15
20
  include CurationConcerns::FileSet::BelongsToWorks
@@ -0,0 +1,24 @@
1
+ module CurationConcerns
2
+ class ActorFactory
3
+ def self.build(curation_concern, current_user)
4
+ ActorStack.new(curation_concern,
5
+ current_user,
6
+ stack_actors(curation_concern))
7
+ end
8
+
9
+ def self.stack_actors(curation_concern)
10
+ [AddToCollectionActor,
11
+ AssignRepresentativeActor,
12
+ AttachFilesActor,
13
+ ApplyOrderActor,
14
+ InterpretVisibilityActor,
15
+ model_actor(curation_concern),
16
+ AssignIdentifierActor]
17
+ end
18
+
19
+ def self.model_actor(curation_concern)
20
+ actor_identifier = curation_concern.class.to_s.split('::').last
21
+ "CurationConcerns::#{actor_identifier}Actor".constantize
22
+ end
23
+ end
24
+ end
@@ -1,46 +1,15 @@
1
1
  module CurationConcerns
2
- module CurationConcern
3
- # Returns the top-level actor on the stack
2
+ class CurationConcern
3
+ class_attribute :actor_factory
4
+ self.actor_factory = CurationConcerns::ActorFactory
5
+
6
+ # A consumer of this method can inject a different factory
7
+ # into this class in order to change the behavior of this method.
8
+ # @param [ActiveFedora::Base] curation_concern a work to be updated
9
+ # @param [User] current_user the depositor/updater of the work
10
+ # @return [#create, #update] an actor that can create and update the work
4
11
  def self.actor(curation_concern, current_user)
5
- ActorStack.new(curation_concern, current_user,
6
- [AddToCollectionActor,
7
- AssignRepresentativeActor,
8
- AttachFilesActor,
9
- ApplyOrderActor,
10
- InterpretVisibilityActor,
11
- model_actor(curation_concern),
12
- AssignIdentifierActor])
13
- end
14
-
15
- def self.model_actor(curation_concern)
16
- actor_identifier = curation_concern.class.to_s.split('::').last
17
- "CurationConcerns::#{actor_identifier}Actor".constantize
18
- end
19
-
20
- class ActorStack
21
- attr_reader :curation_concern, :user, :first_actor_class, :more_actors
22
- def initialize(curation_concern, user, more_actors)
23
- @curation_concern = curation_concern
24
- @user = user
25
- @more_actors = more_actors
26
- @first_actor_class = @more_actors.shift || RootActor
27
- end
28
-
29
- def inner_stack
30
- ActorStack.new(curation_concern, user, more_actors)
31
- end
32
-
33
- def actor
34
- first_actor_class.new(curation_concern, user, inner_stack)
35
- end
36
-
37
- def create(attributes)
38
- actor.create(attributes.with_indifferent_access)
39
- end
40
-
41
- def update(attributes)
42
- actor.update(attributes.with_indifferent_access)
43
- end
12
+ actor_factory.build(curation_concern, current_user)
44
13
  end
45
14
  end
46
15
  end
@@ -1,3 +1,3 @@
1
1
  module CurationConcerns
2
- VERSION = "0.12.0.pre4".freeze
2
+ VERSION = "0.12.0.pre5".freeze
3
3
  end
@@ -103,7 +103,7 @@
103
103
  http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4
104
104
  -->
105
105
  <fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType"
106
- geo="true" distErrPct="0.025" maxDistErr="0.000009" units="degrees" />
106
+ geo="true" distErrPct="0.025" maxDistErr="0.000009" distanceUnits="degrees" />
107
107
 
108
108
  <fieldType name="text" class="solr.TextField" omitNorms="false">
109
109
  <analyzer>
@@ -4,10 +4,10 @@ describe CurationConcerns::AddToCollectionActor do
4
4
  let(:curation_concern) { GenericWork.new }
5
5
  let(:attributes) { {} }
6
6
  subject do
7
- CurationConcerns::CurationConcern::ActorStack.new(curation_concern,
8
- user,
9
- [described_class,
10
- CurationConcerns::GenericWorkActor])
7
+ CurationConcerns::ActorStack.new(curation_concern,
8
+ user,
9
+ [described_class,
10
+ CurationConcerns::GenericWorkActor])
11
11
  end
12
12
  describe 'the next actor' do
13
13
  let(:root_actor) { double }
@@ -4,10 +4,10 @@ describe CurationConcerns::InterpretVisibilityActor do
4
4
  let(:curation_concern) { GenericWork.new }
5
5
  let(:attributes) { {} }
6
6
  subject do
7
- CurationConcerns::CurationConcern::ActorStack.new(curation_concern,
8
- user,
9
- [described_class,
10
- CurationConcerns::GenericWorkActor])
7
+ CurationConcerns::ActorStack.new(curation_concern,
8
+ user,
9
+ [described_class,
10
+ CurationConcerns::GenericWorkActor])
11
11
  end
12
12
  let(:date) { Date.today + 2 }
13
13
 
@@ -105,7 +105,7 @@ describe FileSet do
105
105
  expect(subject).to respond_to(:well_formed)
106
106
  expect(subject).to respond_to(:page_count)
107
107
  expect(subject).to respond_to(:file_title)
108
- expect(subject).to respond_to(:file_author)
108
+ expect(subject).to respond_to(:creator)
109
109
  end
110
110
 
111
111
  it 'redefines to_param to make redis keys more recognizable' do
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe CurationConcerns::CurationConcern do
4
+ let(:work) { GenericWork.new }
5
+ let(:user) { double }
6
+
7
+ describe ".actor" do
8
+ subject { described_class.actor(work, user) }
9
+ it { is_expected.to be_kind_of CurationConcerns::ActorStack }
10
+ end
11
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: curation_concerns
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.0.pre4
4
+ version: 0.12.0.pre5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Zumwalt
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-04-07 00:00:00.000000000 Z
13
+ date: 2016-04-13 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: hydra-head
@@ -615,6 +615,7 @@ files:
615
615
  - Rakefile
616
616
  - app/actors/concerns/curation_concerns/manages_embargoes_actor.rb
617
617
  - app/actors/curation_concerns/abstract_actor.rb
618
+ - app/actors/curation_concerns/actor_stack.rb
618
619
  - app/actors/curation_concerns/add_to_collection_actor.rb
619
620
  - app/actors/curation_concerns/apply_order_actor.rb
620
621
  - app/actors/curation_concerns/assign_identifier_actor.rb
@@ -787,6 +788,7 @@ files:
787
788
  - app/search_builders/curation_concerns/single_result.rb
788
789
  - app/search_builders/curation_concerns/single_use_link_search_builder.rb
789
790
  - app/search_builders/curation_concerns/work_search_builder.rb
791
+ - app/services/curation_concerns/actor_factory.rb
790
792
  - app/services/curation_concerns/curation_concern.rb
791
793
  - app/services/curation_concerns/derivative_path.rb
792
794
  - app/services/curation_concerns/embargo_service.rb
@@ -1152,6 +1154,7 @@ files:
1152
1154
  - spec/search_builders/curation_concerns/lease_search_builder_spec.rb
1153
1155
  - spec/search_builders/curation_concerns/search_builder_spec.rb
1154
1156
  - spec/search_builders/resource_types_service_spec.rb
1157
+ - spec/services/curation_concern_spec.rb
1155
1158
  - spec/services/derivative_path_spec.rb
1156
1159
  - spec/services/embargo_service_spec.rb
1157
1160
  - spec/services/file_set_audit_service_spec.rb
@@ -1229,7 +1232,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1229
1232
  version: 1.3.1
1230
1233
  requirements: []
1231
1234
  rubyforge_project:
1232
- rubygems_version: 2.4.5.1
1235
+ rubygems_version: 2.5.1
1233
1236
  signing_key:
1234
1237
  specification_version: 4
1235
1238
  summary: A Rails Engine that allows an application to CRUD CurationConcern objects
@@ -1352,6 +1355,7 @@ test_files:
1352
1355
  - spec/search_builders/curation_concerns/lease_search_builder_spec.rb
1353
1356
  - spec/search_builders/curation_concerns/search_builder_spec.rb
1354
1357
  - spec/search_builders/resource_types_service_spec.rb
1358
+ - spec/services/curation_concern_spec.rb
1355
1359
  - spec/services/derivative_path_spec.rb
1356
1360
  - spec/services/embargo_service_spec.rb
1357
1361
  - spec/services/file_set_audit_service_spec.rb