ddr-batch 1.0.2 → 1.1.0.rc1
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2c090fcbdee8f9e2e6861a5b5a79cb0766ae420c
|
4
|
+
data.tar.gz: f441540385d72a68ca2ab832f519481c3a77a58b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4b4a3c317a19cd1a03fa30c679c0a847c9c6f918e55a52248ac5eb31f9f3320e7e6b9b055cebc0ac82e28b6cc48eec66a7d031a35eb6bc7dd14e772374ed0c48
|
7
|
+
data.tar.gz: 5956b006e1ac730ebbbb1d8a3d9904d6fe6a9d46ea5994e279f5aa7e3f552d90e0a2fd5d79e35972b8b5ea43f084df0a4ee82b4e446c91e7e016bc273bc937fe
|
@@ -8,6 +8,7 @@ module Ddr::Batch
|
|
8
8
|
has_many :batch_object_attributes, -> { order "id ASC" }, inverse_of: :batch_object, dependent: :destroy
|
9
9
|
has_many :batch_object_datastreams, inverse_of: :batch_object, dependent: :destroy
|
10
10
|
has_many :batch_object_relationships, inverse_of: :batch_object, dependent: :destroy
|
11
|
+
has_many :batch_object_roles, inverse_of: :batch_object, dependent: :destroy
|
11
12
|
|
12
13
|
VERIFICATION_PASS = "PASS"
|
13
14
|
VERIFICATION_FAIL = "FAIL"
|
@@ -172,6 +173,11 @@ module Ddr::Batch
|
|
172
173
|
verifications["#{r.name} relationship is correct"] = verify_relationship(repo_object, r)
|
173
174
|
end
|
174
175
|
end
|
176
|
+
unless batch_object_roles.empty?
|
177
|
+
batch_object_roles.each do |r|
|
178
|
+
verifications["#{r.role_scope} #{r.role_type} #{r.agent} role is correct"] = verify_role(repo_object, r)
|
179
|
+
end
|
180
|
+
end
|
175
181
|
result = Ddr::Actions::FixityCheck.execute repo_object
|
176
182
|
verifications["Fixity check"] = result.success ? VERIFICATION_PASS : VERIFICATION_FAIL
|
177
183
|
end
|
@@ -228,6 +234,11 @@ module Ddr::Batch
|
|
228
234
|
end
|
229
235
|
end
|
230
236
|
|
237
|
+
def verify_role(repo_object, role)
|
238
|
+
role_hash = { "role_type"=>[ role.role_type ], "agent"=>[ role.agent ], "scope"=>[ role.role_scope ] }
|
239
|
+
repo_object.roles.role_set.map(&:to_h).include?(role_hash) ? VERIFICATION_PASS : VERIFICATION_FAIL
|
240
|
+
end
|
241
|
+
|
231
242
|
def add_attribute(repo_object, attribute)
|
232
243
|
repo_object.datastreams[attribute.datastream].add_value(attribute.name, attribute.value)
|
233
244
|
return repo_object
|
@@ -245,6 +256,11 @@ module Ddr::Batch
|
|
245
256
|
return repo_object
|
246
257
|
end
|
247
258
|
|
259
|
+
def add_role(repo_object, role)
|
260
|
+
repo_object.roles.grant(scope: role.role_scope, type: role.role_type, agent: role.agent)
|
261
|
+
return repo_object
|
262
|
+
end
|
263
|
+
|
248
264
|
def populate_datastream(repo_object, datastream)
|
249
265
|
case datastream[:payload_type]
|
250
266
|
when BatchObjectDatastream::PAYLOAD_TYPE_BYTES
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Ddr::Batch
|
2
|
+
|
3
|
+
class BatchObjectRole < ActiveRecord::Base
|
4
|
+
belongs_to :batch_object, :inverse_of => :batch_object_roles
|
5
|
+
|
6
|
+
OPERATION_ADD = "ADD".freeze # Add the principal and role to the object in the indicated scope
|
7
|
+
OPERATIONS = [ OPERATION_ADD ].freeze
|
8
|
+
|
9
|
+
validates :operation, inclusion: { in: OPERATIONS }
|
10
|
+
validate :valid_role, if: :operation_requires_valid_role?
|
11
|
+
validate :policy_role_scope_only_for_collections, if: "role_scope == Ddr::Auth::Roles::POLICY_SCOPE"
|
12
|
+
|
13
|
+
def operation_requires_valid_role?
|
14
|
+
[ OPERATION_ADD ].include? operation
|
15
|
+
end
|
16
|
+
|
17
|
+
def valid_role
|
18
|
+
Ddr::Auth::Roles::Role.build(type: role_type, agent: agent, scope: role_scope).valid?
|
19
|
+
end
|
20
|
+
|
21
|
+
def policy_role_scope_only_for_collections
|
22
|
+
errors.add(:role_scope, "policy role scope is valid only for Collections") unless batch_object.model == "Collection"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -88,6 +88,7 @@ module Ddr::Batch
|
|
88
88
|
batch_object_attributes.each { |a| repo_object = add_attribute(repo_object, a) }
|
89
89
|
batch_object_datastreams.each { |d| repo_object = populate_datastream(repo_object, d) }
|
90
90
|
batch_object_relationships.each { |r| repo_object = add_relationship(repo_object, r) }
|
91
|
+
batch_object_roles.each { |r| repo_object = add_role(repo_object, r) }
|
91
92
|
repo_object.save
|
92
93
|
rescue Exception => e1
|
93
94
|
logger.fatal("Error in creating repository object #{repo_object.pid} for #{identifier} : #{e1}")
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class CreateBatchObjectRoles < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
unless table_exists?(:batch_object_roles)
|
4
|
+
create_table :batch_object_roles do |t|
|
5
|
+
t.integer "batch_object_id"
|
6
|
+
t.string "operation"
|
7
|
+
t.string "agent"
|
8
|
+
t.string "role_type"
|
9
|
+
t.string "role_scope"
|
10
|
+
t.datetime "created_at"
|
11
|
+
t.datetime "updated_at"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/ddr/batch/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ddr-batch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.1.0.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jim Coble
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-10-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -183,6 +183,7 @@ files:
|
|
183
183
|
- app/models/ddr/batch/batch_object_attribute.rb
|
184
184
|
- app/models/ddr/batch/batch_object_datastream.rb
|
185
185
|
- app/models/ddr/batch/batch_object_relationship.rb
|
186
|
+
- app/models/ddr/batch/batch_object_role.rb
|
186
187
|
- app/models/ddr/batch/ingest_batch_object.rb
|
187
188
|
- app/models/ddr/batch/update_batch_object.rb
|
188
189
|
- app/scripts/ddr/batch/batch_processor.rb
|
@@ -195,6 +196,7 @@ files:
|
|
195
196
|
- db/migrate/20150828202118_create_batch_object_attributes.rb
|
196
197
|
- db/migrate/20150828202200_create_batch_object_datastreams.rb
|
197
198
|
- db/migrate/20150828202240_create_batch_object_relationships.rb
|
199
|
+
- db/migrate/20160816164010_create_batch_object_roles.rb
|
198
200
|
- lib/ddr-batch.rb
|
199
201
|
- lib/ddr/batch.rb
|
200
202
|
- lib/ddr/batch/batch_user.rb
|
@@ -216,12 +218,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
216
218
|
version: '0'
|
217
219
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
218
220
|
requirements:
|
219
|
-
- - "
|
221
|
+
- - ">"
|
220
222
|
- !ruby/object:Gem::Version
|
221
|
-
version:
|
223
|
+
version: 1.3.1
|
222
224
|
requirements: []
|
223
225
|
rubyforge_project:
|
224
|
-
rubygems_version: 2.
|
226
|
+
rubygems_version: 2.4.3
|
225
227
|
signing_key:
|
226
228
|
specification_version: 4
|
227
229
|
summary: Batch processing for Duke Digital Repository
|