curation_concerns-models 0.11.0 → 0.12.0.pre1

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: e881c65ab239adc59699d04c163a19ad8da5c37c
4
- data.tar.gz: 503dfb42fb4c7c3b917f26918c589e062a5196e6
3
+ metadata.gz: 0dec0847b3aa12c5c48e251ea115b6e82412af96
4
+ data.tar.gz: 2691544f9ef15ac45d29d1dee7623fe42d8b1dcf
5
5
  SHA512:
6
- metadata.gz: c1782ddd4011836926d9ba37cfe8e6bb65560887f9548103621605e86cd9c78875a3b35f57cdd95f255154565ddf80c0a83fe6a82116153d661db7cf595f2e29
7
- data.tar.gz: e524b746fe47631184e947d2d119f60312940f4d90876d67c22b76e13144d4e8bdb7def9395961c600b1ae97a6fb8ce571f5a4dd238cea6cf873414f9784f1ca
6
+ metadata.gz: ba78b4f524e0e67269c5464761da644868bbc0189a667548abfd3684f57b1e114b642a73af249eaae983dede84f22b1ab7efcaa6859e4894bc7461d1c166705b
7
+ data.tar.gz: 9b42e31b848ff7b56a0ab75a46d650b3d27871008f2898215907bc3bc61f4a0db7ab696a914e3a1d8b14fcdff4122bf44cb067a459999c8e0b21dde5939e8dcf
@@ -19,73 +19,10 @@ module CurationConcerns
19
19
  #
20
20
  module ManagesEmbargoesActor
21
21
  extend ActiveSupport::Concern
22
+ extend Deprecation
22
23
 
23
- # Interprets embargo & lease visibility if necessary
24
- # returns false if there are any errors
25
- def interpret_visibility(attributes = self.attributes)
26
- should_continue = interpret_embargo_visibility(attributes) && interpret_lease_visibility(attributes)
27
- if attributes[:visibility]
28
- curation_concern.visibility = attributes[:visibility]
29
- end
30
- should_continue
31
- end
32
-
33
- # If user has set visibility to embargo, interprets the relevant information and applies it
34
- # Returns false if there are any errors and sets an error on the curation_concern
35
- def interpret_embargo_visibility(attributes = self.attributes)
36
- if attributes[:visibility] == Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_EMBARGO
37
- if !attributes[:embargo_release_date]
38
- curation_concern.errors.add(:visibility, 'When setting visibility to "embargo" you must also specify embargo release date.')
39
- should_continue = false
40
- else
41
- attributes.delete(:visibility)
42
- curation_concern.apply_embargo(attributes[:embargo_release_date], attributes.delete(:visibility_during_embargo),
43
- attributes.delete(:visibility_after_embargo))
44
- if curation_concern.embargo
45
- curation_concern.embargo.save # See https://github.com/projecthydra/hydra-head/issues/226
46
- end
47
- should_continue = true
48
- end
49
- else
50
- should_continue = true
51
- # clear embargo_release_date if it isn't being used. Otherwise it sets the embargo_date
52
- # even though they didn't select embargo on the form.
53
- attributes.delete(:embargo_release_date)
54
- end
55
-
56
- attributes.delete(:visibility_during_embargo)
57
- attributes.delete(:visibility_after_embargo)
58
-
59
- should_continue
60
- end
61
-
62
- # If user has set visibility to lease, interprets the relevant information and applies it
63
- # Returns false if there are any errors and sets an error on the curation_concern
64
- def interpret_lease_visibility(attributes = self.attributes)
65
- if attributes[:visibility] == Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_LEASE
66
- if !attributes[:lease_expiration_date]
67
- curation_concern.errors.add(:visibility, 'When setting visibility to "lease" you must also specify lease expiration date.')
68
- should_continue = false
69
- else
70
- curation_concern.apply_lease(attributes[:lease_expiration_date], attributes.delete(:visibility_during_lease),
71
- attributes.delete(:visibility_after_lease))
72
- if curation_concern.lease
73
- curation_concern.lease.save # See https://github.com/projecthydra/hydra-head/issues/226
74
- end
75
- attributes.delete(:visibility)
76
- should_continue = true
77
- end
78
- else
79
- # clear lease_expiration_date if it isn't being used. Otherwise it sets the lease_expiration
80
- # even though they didn't select lease on the form.
81
- attributes.delete(:lease_expiration_date)
82
- should_continue = true
83
- end
84
-
85
- attributes.delete(:visibility_during_lease)
86
- attributes.delete(:visibility_after_lease)
87
-
88
- should_continue
24
+ included do
25
+ Deprecation.warn(ManagesEmbargoesActor, "ManagesEmbargoesActor is deprecated and will be removed in CurationConcerns 1.0")
89
26
  end
90
27
  end
91
28
  end
@@ -0,0 +1,28 @@
1
+ module CurationConcerns
2
+ # The CurationConcern Abstract actor responds to two primary actions:
3
+ # * #create
4
+ # * #update
5
+ #
6
+ # and the following attributes
7
+ #
8
+ # * next_actor
9
+ # * curation_concern
10
+ # * user
11
+ #
12
+ # it must instantiate the next actor in the chain and instantiate it.
13
+ # it should respond to curation_concern, user and attributes.
14
+ # it ha to next_actor
15
+ class AbstractActor
16
+ attr_reader :next_actor
17
+
18
+ def initialize(_curation_concern, _user, next_actor)
19
+ @next_actor = next_actor
20
+ end
21
+
22
+ delegate :curation_concern, :user, to: :next_actor
23
+
24
+ delegate :create, to: :next_actor
25
+
26
+ delegate :update, to: :next_actor
27
+ end
28
+ end
@@ -0,0 +1,38 @@
1
+ module CurationConcerns
2
+ class AddToCollectionActor < AbstractActor
3
+ def create(attributes)
4
+ collection_ids = attributes.delete(:collection_ids)
5
+ next_actor.create(attributes) && add_to_collections(collection_ids)
6
+ end
7
+
8
+ def update(attributes)
9
+ collection_ids = attributes.delete(:collection_ids)
10
+ add_to_collections(collection_ids) && next_actor.update(attributes)
11
+ end
12
+
13
+ private
14
+
15
+ # The default behavior of active_fedora's aggregates association,
16
+ # when assigning the id accessor (e.g. collection_ids = ['foo:1']) is to add
17
+ # to new collections, but not remove from old collections.
18
+ # This method ensures it's removed from the old collections.
19
+ def add_to_collections(new_collection_ids)
20
+ return true unless new_collection_ids
21
+ # remove from old collections
22
+ # TODO: Implement in_collection_ids https://github.com/projecthydra-labs/hydra-pcdm/issues/157
23
+ (curation_concern.in_collections.map(&:id) - new_collection_ids).each do |old_id|
24
+ collection = Collection.find(old_id)
25
+ collection.members.delete(curation_concern)
26
+ collection.save
27
+ end
28
+
29
+ # add to new
30
+ new_collection_ids.each do |coll_id|
31
+ collection = Collection.find(coll_id)
32
+ collection.members << curation_concern
33
+ collection.save
34
+ end
35
+ true
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,24 @@
1
+ module CurationConcerns
2
+ class ApplyOrderActor < AbstractActor
3
+ def update(attributes)
4
+ ordered_member_ids = attributes.delete(:ordered_member_ids)
5
+ apply_order(ordered_member_ids) && next_actor.update(attributes)
6
+ end
7
+
8
+ private
9
+
10
+ def apply_order(new_order)
11
+ return true unless new_order
12
+ curation_concern.ordered_member_proxies.each_with_index do |proxy, index|
13
+ unless new_order[index]
14
+ proxy.prev.next = curation_concern.ordered_member_proxies.last.next
15
+ break
16
+ end
17
+ proxy.proxy_for = ActiveFedora::Base.id_to_uri(new_order[index])
18
+ proxy.target = nil
19
+ end
20
+ curation_concern.list_source.order_will_change!
21
+ true
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,7 @@
1
+ module CurationConcerns
2
+ class AssignIdentifierActor < AbstractActor
3
+ def create(attributes)
4
+ curation_concern.assign_id && next_actor.create(attributes)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,18 @@
1
+ module CurationConcerns
2
+ class AssignRepresentativeActor < AbstractActor
3
+ def create(attributes)
4
+ next_actor.create(attributes) && assign_representative
5
+ end
6
+
7
+ private
8
+
9
+ def assign_representative
10
+ unless curation_concern.representative_id
11
+ # TODO: Possible optimization here. Does this cause a fetch of ordered_members if they're already loaded?
12
+ representative = nil # curation_concern.ordered_members.association.reader.first.target
13
+ curation_concern.representative = representative if representative
14
+ end
15
+ curation_concern.save
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,39 @@
1
+ module CurationConcerns
2
+ class AttachFilesActor < AbstractActor
3
+ def create(attributes)
4
+ files = [attributes.delete(:files)].flatten.compact
5
+ attach_files(files, visibility_attributes(attributes)) &&
6
+ next_actor.create(attributes)
7
+ end
8
+
9
+ def update(attributes)
10
+ files = [attributes.delete(:files)].flatten.compact
11
+ next_actor.update(attributes) &&
12
+ attach_files(files, visibility_attributes(attributes))
13
+ end
14
+
15
+ private
16
+
17
+ def attach_files(files, visibility_attr)
18
+ files.all? do |file|
19
+ attach_file(file, visibility_attr)
20
+ end
21
+ end
22
+
23
+ def attach_file(file, visibility_attr)
24
+ file_set = ::FileSet.new
25
+ file_set_actor = CurationConcerns::FileSetActor.new(file_set, user)
26
+ file_set_actor.create_metadata(curation_concern, visibility_attr)
27
+ file_set_actor.create_content(file)
28
+ end
29
+
30
+ # The attributes used for visibility - used to send as initial params to
31
+ # created FileSets.
32
+ def visibility_attributes(attributes)
33
+ attributes.slice(:visibility, :visibility_during_lease,
34
+ :visibility_after_lease, :lease_expiration_date,
35
+ :embargo_release_date, :visibility_during_embargo,
36
+ :visibility_after_embargo)
37
+ end
38
+ end
39
+ end
@@ -1,34 +1,23 @@
1
-
2
1
  module CurationConcerns
3
- # The CurationConcern base actor should respond to three primary actions:
2
+ # The CurationConcern base actor responds to two primary actions:
4
3
  # * #create
5
4
  # * #update
6
- # * #delete
7
- class BaseActor
8
- attr_reader :curation_concern, :user, :attributes, :cloud_resources
9
- def initialize(curation_concern, user, input_attributes)
10
- @curation_concern = curation_concern
11
- @user = user
12
- @attributes = input_attributes.dup.with_indifferent_access
13
- @visibility = attributes[:visibility]
14
- @cloud_resources = attributes.delete(:cloud_resources.to_s)
15
- end
5
+ # it must instantiate the next actor in the chain and instantiate it.
6
+ # it should respond to curation_concern, user and attributes.
7
+ class BaseActor < AbstractActor
8
+ attr_reader :cloud_resources
16
9
 
17
- attr_reader :visibility
18
- protected :visibility
19
-
20
- delegate :visibility_changed?, to: :curation_concern
21
-
22
- def create
10
+ def create(attributes)
11
+ @cloud_resources = attributes.delete(:cloud_resources.to_s)
23
12
  apply_creation_data_to_curation_concern
24
- apply_save_data_to_curation_concern
25
- save
13
+ apply_save_data_to_curation_concern(attributes)
14
+ next_actor.create(attributes) && save
26
15
  end
27
16
 
28
- def update
17
+ def update(attributes)
29
18
  apply_update_data_to_curation_concern
30
- apply_save_data_to_curation_concern
31
- save
19
+ apply_save_data_to_curation_concern(attributes)
20
+ next_actor.update(attributes) && save
32
21
  end
33
22
 
34
23
  protected
@@ -55,9 +44,9 @@ module CurationConcerns
55
44
  curation_concern.save
56
45
  end
57
46
 
58
- def apply_save_data_to_curation_concern
47
+ def apply_save_data_to_curation_concern(attributes)
59
48
  attributes[:rights] = Array(attributes[:rights]) if attributes.key? :rights
60
- remove_blank_attributes!
49
+ remove_blank_attributes!(attributes)
61
50
  curation_concern.attributes = attributes.symbolize_keys
62
51
  curation_concern.date_modified = CurationConcerns::TimeService.time_in_utc
63
52
  end
@@ -68,14 +57,14 @@ module CurationConcerns
68
57
  # remove_blank_attributes!
69
58
  # self.attributes
70
59
  # => { 'title' => ['first', 'second'] }
71
- def remove_blank_attributes!
72
- multivalued_form_attributes.each_with_object(attributes) do |(k, v), h|
60
+ def remove_blank_attributes!(attributes)
61
+ multivalued_form_attributes(attributes).each_with_object(attributes) do |(k, v), h|
73
62
  h[k] = v.instance_of?(Array) ? v.select(&:present?) : v
74
63
  end
75
64
  end
76
65
 
77
66
  # Return the hash of attributes that are multivalued and not uploaded files
78
- def multivalued_form_attributes
67
+ def multivalued_form_attributes(attributes)
79
68
  attributes.select { |_, v| v.respond_to?(:select) && !v.respond_to?(:read) }
80
69
  end
81
70
  end
@@ -1,15 +1,11 @@
1
1
  module CurationConcerns
2
2
  # Actions are decoupled from controller logic so that they may be called from a controller or a background job.
3
3
  class FileSetActor
4
- include CurationConcerns::ManagesEmbargoesActor
5
4
  include CurationConcerns::Lockable
6
5
 
7
- attr_reader :file_set, :user, :attributes, :curation_concern
6
+ attr_reader :file_set, :user, :attributes
8
7
 
9
8
  def initialize(file_set, user)
10
- # we're setting attributes and curation_concern to bridge the difference
11
- # between CurationConcerns::FileSetActor and ManagesEmbargoesActor
12
- @curation_concern = file_set
13
9
  @file_set = file_set
14
10
  @user = user
15
11
  end
@@ -30,7 +26,7 @@ module CurationConcerns
30
26
  file_set.date_modified = now
31
27
  file_set.creator = [user.user_key]
32
28
 
33
- interpret_visibility file_set_params if assign_visibility?(file_set_params)
29
+ CurationConcern::ActorStack.new(file_set, user, [InterpretVisibilityActor]).create(file_set_params) if assign_visibility?(file_set_params)
34
30
  attach_file_to_work(work, file_set, file_set_params) if work
35
31
  yield(file_set) if block_given?
36
32
  end
@@ -70,13 +66,13 @@ module CurationConcerns
70
66
  end
71
67
 
72
68
  def update_metadata(attributes)
73
- update_visibility(attributes)
74
- # attributes.delete(:visibility) # Applying this attribute is handled by update_visibility
75
- file_set.attributes = attributes
76
- file_set.date_modified = CurationConcerns::TimeService.time_in_utc
77
- save do
69
+ stack = CurationConcern::ActorStack.new(file_set,
70
+ user,
71
+ [InterpretVisibilityActor, BaseActor])
72
+ if result = stack.update(attributes)
78
73
  CurationConcerns.config.callback.run(:after_update_metadata, file_set, user)
79
74
  end
75
+ result
80
76
  end
81
77
 
82
78
  def destroy
@@ -128,11 +124,6 @@ module CurationConcerns
128
124
  !((file_set_params || {}).keys & %w(visibility embargo_release_date lease_expiration_date)).empty?
129
125
  end
130
126
 
131
- # This method can be overridden in case there is a custom approach for visibility (e.g. embargo)
132
- def update_visibility(attributes)
133
- interpret_visibility(attributes) # relies on CurationConcerns::ManagesEmbargoesActor to interpret and apply visibility
134
- end
135
-
136
127
  # copy visibility from source_concern to destination_concern
137
128
  def copy_visibility(source_concern, destination_concern)
138
129
  destination_concern.visibility = source_concern.visibility
@@ -0,0 +1,123 @@
1
+ module CurationConcerns
2
+ class InterpretVisibilityActor < AbstractActor
3
+ class Intention
4
+ def initialize(attributes)
5
+ @attributes = attributes
6
+ end
7
+
8
+ # returns a copy of attributes with the necessary params removed
9
+ # If the lease or embargo is valid, or if they selected something besides lease
10
+ # or embargo, remove all the params.
11
+ def sanitize_params
12
+ if valid_lease?
13
+ @attributes.except(:visibility,
14
+ :embargo_release_date,
15
+ :visibility_during_embargo,
16
+ :visibility_after_embargo)
17
+ elsif valid_embargo?
18
+ @attributes.except(:visibility,
19
+ :lease_expiration_date,
20
+ :visibility_during_lease,
21
+ :visibility_after_lease)
22
+ elsif !wants_lease? && !wants_embargo?
23
+ @attributes.except(:lease_expiration_date,
24
+ :visibility_during_lease,
25
+ :visibility_after_lease,
26
+ :embargo_release_date,
27
+ :visibility_during_embargo,
28
+ :visibility_after_embargo)
29
+ else
30
+ @attributes
31
+ end
32
+ end
33
+
34
+ def wants_lease?
35
+ visibility == Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_LEASE
36
+ end
37
+
38
+ def wants_embargo?
39
+ visibility == Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_EMBARGO
40
+ end
41
+
42
+ def valid_lease?
43
+ wants_lease? && @attributes[:lease_expiration_date].present?
44
+ end
45
+
46
+ def valid_embargo?
47
+ wants_embargo? && @attributes[:embargo_release_date].present?
48
+ end
49
+
50
+ def lease_params
51
+ [:lease_expiration_date,
52
+ :visibility_during_lease,
53
+ :visibility_after_lease].map { |key| @attributes[key] }
54
+ end
55
+
56
+ def embargo_params
57
+ [:embargo_release_date,
58
+ :visibility_during_embargo,
59
+ :visibility_after_embargo].map { |key| @attributes[key] }
60
+ end
61
+
62
+ private
63
+
64
+ def visibility
65
+ @attributes[:visibility]
66
+ end
67
+ end
68
+
69
+ def create(attributes)
70
+ @intention = Intention.new(attributes)
71
+ attributes = @intention.sanitize_params
72
+ validate && apply_visibility(attributes) && next_actor.create(attributes)
73
+ end
74
+
75
+ def update(attributes)
76
+ @intention = Intention.new(attributes)
77
+ attributes = @intention.sanitize_params
78
+ validate && apply_visibility(attributes) && next_actor.update(attributes)
79
+ end
80
+
81
+ private
82
+
83
+ def validate
84
+ validate_lease && validate_embargo
85
+ end
86
+
87
+ def apply_visibility(attributes)
88
+ result = apply_lease && apply_embargo
89
+ if attributes[:visibility]
90
+ curation_concern.visibility = attributes[:visibility]
91
+ end
92
+ result
93
+ end
94
+
95
+ def validate_lease
96
+ return true unless @intention.wants_lease? && !@intention.valid_lease?
97
+ curation_concern.errors.add(:visibility, 'When setting visibility to "lease" you must also specify lease expiration date.')
98
+ false
99
+ end
100
+
101
+ def validate_embargo
102
+ return true unless @intention.wants_embargo? && !@intention.valid_embargo?
103
+ curation_concern.errors.add(:visibility, 'When setting visibility to "embargo" you must also specify embargo release date.')
104
+ false
105
+ end
106
+
107
+ # If they want a lease, we can assume it's valid
108
+ def apply_lease
109
+ return true unless @intention.wants_lease?
110
+ curation_concern.apply_lease(*@intention.lease_params)
111
+ return unless curation_concern.lease
112
+ curation_concern.lease.save # see https://github.com/projecthydra/hydra-head/issues/226
113
+ end
114
+
115
+ # If they want an embargo, we can assume it's valid
116
+ def apply_embargo
117
+ return true unless @intention.wants_embargo?
118
+ curation_concern.apply_embargo(*@intention.embargo_params)
119
+ return unless curation_concern.embargo
120
+ curation_concern.embargo.save # see https://github.com/projecthydra/hydra-head/issues/226
121
+ end
122
+ end
123
+ end
@@ -0,0 +1,17 @@
1
+ module CurationConcerns
2
+ class RootActor
3
+ attr_reader :curation_concern, :user, :cloud_resources
4
+ def initialize(curation_concern, user, _more_actors)
5
+ @curation_concern = curation_concern
6
+ @user = user
7
+ end
8
+
9
+ def create(_)
10
+ true
11
+ end
12
+
13
+ def update(_)
14
+ true
15
+ end
16
+ end
17
+ end
@@ -1,99 +1,8 @@
1
1
  module CurationConcerns::WorkActorBehavior
2
- include CurationConcerns::ManagesEmbargoesActor
3
- attr_accessor :raw_attributes
2
+ extend ActiveSupport::Concern
3
+ extend Deprecation
4
4
 
5
- def create
6
- # set the @files ivar then remove the files attribute so it isn't set by default.
7
- files && attributes.delete(:files)
8
- self.raw_attributes = attributes.dup
9
- # Files must be attached before saving in order to persist their relationship to the work
10
- assign_pid && interpret_visibility && attach_files && super && assign_representative
5
+ included do
6
+ Deprecation.warn(CurationConcerns::WorkActorBehavior, "CurationConcerns::WorkActorBehavior is deprecated and will be removed in CurationConcerns 1.0")
11
7
  end
12
-
13
- def update
14
- add_to_collections(attributes.delete(:collection_ids)) &&
15
- interpret_visibility && apply_order(attributes.delete(:ordered_member_ids)) && super && attach_files
16
- end
17
-
18
- delegate :visibility_changed?, to: :curation_concern
19
-
20
- protected
21
-
22
- # Is this here to ensure that the curation_concern has a pid set before any of the other methods are executed?
23
- def assign_pid
24
- curation_concern.send(:assign_id)
25
- end
26
-
27
- def files
28
- return @files if defined?(@files)
29
- @files = [attributes[:files]].flatten.compact
30
- end
31
-
32
- def attach_files
33
- files.all? do |file|
34
- attach_file(file)
35
- end
36
- end
37
-
38
- def apply_order(new_order)
39
- return true unless new_order
40
- curation_concern.ordered_member_proxies.each_with_index do |proxy, index|
41
- unless new_order[index]
42
- proxy.prev.next = curation_concern.ordered_member_proxies.last.next
43
- break
44
- end
45
- proxy.proxy_for = ActiveFedora::Base.id_to_uri(new_order[index])
46
- proxy.target = nil
47
- end
48
- curation_concern.list_source.order_will_change!
49
- true
50
- end
51
-
52
- # The default behavior of active_fedora's aggregates association,
53
- # when assigning the id accessor (e.g. collection_ids = ['foo:1']) is to add
54
- # to new collections, but not remove from old collections.
55
- # This method ensures it's removed from the old collections.
56
- def add_to_collections(new_collection_ids)
57
- return true unless new_collection_ids
58
- # remove from old collections
59
- # TODO: Implement in_collection_ids https://github.com/projecthydra-labs/hydra-pcdm/issues/157
60
- (curation_concern.in_collections.map(&:id) - new_collection_ids).each do |old_id|
61
- collection = Collection.find(old_id)
62
- collection.members.delete(curation_concern)
63
- collection.save
64
- end
65
-
66
- # add to new
67
- new_collection_ids.each do |coll_id|
68
- collection = Collection.find(coll_id)
69
- collection.members << curation_concern
70
- collection.save
71
- end
72
- true
73
- end
74
-
75
- def assign_representative
76
- @file_sets ||= []
77
- unless curation_concern.representative_id
78
- curation_concern.representative = @file_sets.first unless @file_sets.empty?
79
- end
80
- curation_concern.save
81
- end
82
-
83
- private
84
-
85
- def attach_file(file)
86
- file_set = ::FileSet.new
87
- file_set_actor = CurationConcerns::FileSetActor.new(file_set, user)
88
- file_set_actor.create_metadata(curation_concern, visibility_attributes)
89
- file_set_actor.create_content(file)
90
- @file_sets ||= []
91
- @file_sets << file_set # This is so that other methods like assign_representative can access the file_sets without reloading them from fedora
92
- end
93
-
94
- # The attributes used for visibility - used to send as initial params to
95
- # created FileSets.
96
- def visibility_attributes
97
- raw_attributes.slice(:visibility, :visibility_during_lease, :visibility_after_lease, :lease_expiration_date, :embargo_release_date, :visibility_during_embargo, :visibility_after_embargo)
98
- end
99
8
  end
@@ -1,5 +1,5 @@
1
1
  module CurationConcerns
2
2
  module Models
3
- VERSION = "0.11.0".freeze
3
+ VERSION = "0.12.0.pre1".freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: curation_concerns-models
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 0.12.0.pre1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Coyne
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-31 00:00:00.000000000 Z
11
+ date: 2016-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_attr
@@ -198,11 +198,19 @@ files:
198
198
  - README.md
199
199
  - Rakefile
200
200
  - app/actors/concerns/curation_concerns/manages_embargoes_actor.rb
201
+ - app/actors/curation_concerns/abstract_actor.rb
202
+ - app/actors/curation_concerns/add_to_collection_actor.rb
203
+ - app/actors/curation_concerns/apply_order_actor.rb
204
+ - app/actors/curation_concerns/assign_identifier_actor.rb
205
+ - app/actors/curation_concerns/assign_representative_actor.rb
206
+ - app/actors/curation_concerns/attach_files_actor.rb
201
207
  - app/actors/curation_concerns/base_actor.rb
202
208
  - app/actors/curation_concerns/embargo_actor.rb
203
209
  - app/actors/curation_concerns/file_actor.rb
204
210
  - app/actors/curation_concerns/file_set_actor.rb
211
+ - app/actors/curation_concerns/interpret_visibility_actor.rb
205
212
  - app/actors/curation_concerns/lease_actor.rb
213
+ - app/actors/curation_concerns/root_actor.rb
206
214
  - app/actors/curation_concerns/work_actor_behavior.rb
207
215
  - app/indexers/curation_concerns/collection_indexer.rb
208
216
  - app/indexers/curation_concerns/file_set_indexer.rb
@@ -297,9 +305,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
297
305
  version: '0'
298
306
  required_rubygems_version: !ruby/object:Gem::Requirement
299
307
  requirements:
300
- - - ">="
308
+ - - ">"
301
309
  - !ruby/object:Gem::Version
302
- version: '0'
310
+ version: 1.3.1
303
311
  requirements: []
304
312
  rubyforge_project:
305
313
  rubygems_version: 2.5.1