ddr-models 2.1.0 → 2.1.1

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: 10c796f3f264346854c8dfb59cd616c556d47b55
4
- data.tar.gz: cda6c4af2064e37075f6efdb1e10acb6a423c4f2
3
+ metadata.gz: fbcdaa441af1221abeda5c6a468e74475cd6e7c8
4
+ data.tar.gz: da11574b2613a2a00df3adce76abcb4519b3c46b
5
5
  SHA512:
6
- metadata.gz: c0944a99559023c51b910234d4056ff5f20b8258c373fedcaa1ce40e5a942a863ba8a82fd70b0e489c4a037bef680cee03eca7059c142e82282b5c7f48a5607e
7
- data.tar.gz: 025975b6d1f520635dfbaf5c9b9d35d800cd031dd77d84125131a8d4caf060e15b10ba18f4684554a89ecf64ad4cb2362b70202838c3f02bbd27458663304296
6
+ metadata.gz: c35091749c6e1c34a76aef939b85db065bd672e626c69201e1c1a9acf034e7eadf9203db5864eb60e0fa3567e9733acab048c78445f803129dd5e4ddd0aacf3b
7
+ data.tar.gz: cbaf8bdb8847ff9c2b85fe81946817660de3a4267fcbf80d1afe4a18bf467245eed8815f9b8b46bba3edc0650fe32d925247cb2b538bd85020a400f7e849eed9
@@ -51,23 +51,23 @@ module Ddr
51
51
  end
52
52
 
53
53
  def generate_derivative!(derivative)
54
- Dir.mktmpdir do |tempdir|
55
- generator_source = create_source_file(tempdir)
56
- generator_output = File.new(File.join(tempdir, "output.out"), 'wb')
57
- results = derivative.generator.new(generator_source.path, generator_output.path, derivative.options).generate
58
- generator_source.close unless generator_source.closed?
59
- if results.status.success?
60
- generator_output = File.open(generator_output, 'rb')
61
- object.reload if object.persisted?
62
- object.add_file generator_output, derivative.datastream, mime_type: derivative.generator.output_mime_type
63
- object.save!
64
- else
65
- Rails.logger.error results.stderr
66
- raise Ddr::Models::DerivativeGenerationFailure,
67
- "Failure generating #{derivative.name} for #{object.pid}: #{results.stderr}"
68
- end
69
- generator_output.close unless generator_output.closed?
54
+ tempdir = FileUtils.mkdir(File.join(Dir.tmpdir, Dir::Tmpname.make_tmpname('',nil))).first
55
+ generator_source = create_source_file(tempdir)
56
+ generator_output = File.new(File.join(tempdir, "output.out"), 'wb')
57
+ results = derivative.generator.new(generator_source.path, generator_output.path, derivative.options).generate
58
+ generator_source.close unless generator_source.closed?
59
+ if results.status.success?
60
+ generator_output = File.open(generator_output, 'rb')
61
+ object.reload if object.persisted?
62
+ object.add_file generator_output, derivative.datastream, mime_type: derivative.generator.output_mime_type
63
+ object.save!
64
+ else
65
+ Rails.logger.error results.stderr
66
+ raise Ddr::Models::DerivativeGenerationFailure,
67
+ "Failure generating #{derivative.name} for #{object.pid}: #{results.stderr}"
70
68
  end
69
+ generator_output.close unless generator_output.closed?
70
+ FileUtils.remove_dir(tempdir)
71
71
  end
72
72
 
73
73
  def delete_derivative(derivative)
@@ -37,7 +37,6 @@ module Ddr
37
37
  autoload :ContentModelError, 'ddr/models/error'
38
38
  autoload :DerivativeGenerationFailure, 'ddr/models/error'
39
39
  autoload :Describable
40
- autoload :EffectiveLicense
41
40
  autoload :Error
42
41
  autoload :EventLoggable
43
42
  autoload :FileManagement
@@ -52,13 +51,19 @@ module Ddr
52
51
  autoload :HasStructMetadata
53
52
  autoload :HasThumbnail
54
53
  autoload :Indexing
55
- autoload :InheritedLicense
56
- autoload :License
57
54
  autoload :SolrDocument
58
55
  autoload :StructDiv
59
56
  autoload :Structure
60
57
  autoload :YearFacet
61
58
 
59
+ autoload_under "licenses" do
60
+ autoload :AdminPolicyLicense
61
+ autoload :EffectiveLicense
62
+ autoload :License
63
+ autoload :InheritedLicense
64
+ autoload :ParentLicense
65
+ end
66
+
62
67
  # Base directory of default external file store
63
68
  mattr_accessor :external_file_store
64
69
 
@@ -0,0 +1,11 @@
1
+ module Ddr::Models
2
+ class AdminPolicyLicense
3
+
4
+ def self.call(obj)
5
+ if obj.admin_policy_id && (obj.admin_policy_id != obj.id)
6
+ License.call obj.admin_policy
7
+ end
8
+ end
9
+
10
+ end
11
+ end
@@ -0,0 +1,9 @@
1
+ module Ddr::Models
2
+ class InheritedLicense
3
+
4
+ def self.call(obj)
5
+ ParentLicense.call(obj) || AdminPolicyLicense.call(obj)
6
+ end
7
+
8
+ end
9
+ end
@@ -0,0 +1,11 @@
1
+ module Ddr::Models
2
+ class ParentLicense
3
+
4
+ def self.call(obj)
5
+ if obj.respond_to?(:parent) && obj.parent
6
+ License.call(obj.parent)
7
+ end
8
+ end
9
+
10
+ end
11
+ end
@@ -94,6 +94,7 @@ module Ddr::Models
94
94
  uri = admin_policy_uri
95
95
  uri &&= ActiveFedora::Base.pid_from_uri(uri)
96
96
  end
97
+ alias_method :admin_policy_id, :admin_policy_pid
97
98
 
98
99
  def admin_policy
99
100
  if has_admin_policy?
@@ -1,5 +1,5 @@
1
1
  module Ddr
2
2
  module Models
3
- VERSION = "2.1.0"
3
+ VERSION = "2.1.1"
4
4
  end
5
5
  end
@@ -3,44 +3,58 @@ module Ddr::Models
3
3
 
4
4
  subject { described_class.call(obj) }
5
5
 
6
- let(:mock) { Struct.new(:license, :parent, :admin_policy, :pid) }
7
- let(:obj) { mock.new }
8
-
9
6
  let(:url) { "https://creativecommons.org/licenses/by-nc-nd/4.0/" }
10
7
 
11
8
  let(:license) { License.new(url: url) }
12
9
  before { allow(License).to receive(:find).with(url: url) { license } }
13
10
 
11
+ let(:obj) { double(pid: "test:1", id: "test:1", license: nil, parent: nil, admin_policy: nil, admin_policy_id: nil) }
12
+
14
13
  describe "when the object has a license" do
15
- before { obj.license = url }
14
+ before { allow(obj).to receive(:license) { url } }
16
15
  it { is_expected.to eq(license) }
17
16
  end
18
17
 
19
18
  describe "when the object does not have a license" do
20
- describe "when the object has a parent" do
21
- let(:parent) { mock.new }
19
+ describe "and the object has a parent" do
20
+ let(:parent) { double(pid: "test:2", license: nil) }
22
21
  before do
23
- parent.license = url
24
- obj.parent = parent
22
+ allow(obj).to receive(:parent) { parent }
23
+ end
24
+ describe "and the parent has a license" do
25
+ before do
26
+ allow(parent).to receive(:license) { url }
27
+ end
28
+ it { is_expected.to eq(license) }
29
+ end
30
+ describe "and the parent does not have a license" do
31
+ it { is_expected.to be_nil }
25
32
  end
26
- it { is_expected.to eq(license) }
27
33
  end
28
- describe "when the object does not have a parent" do
29
- describe "when the object has an admin policy" do
30
- describe "and the admin policy is a different object" do
31
- let(:admin_policy) { mock.new }
34
+ describe "and the object does not have a parent" do
35
+ describe "and the object has an admin policy" do
36
+ let(:admin_policy) { double(pid: "test:3", id: "test:3", license: nil) }
37
+ before { allow(obj).to receive(:admin_policy) { admin_policy } }
38
+ describe "and the admin policy has a different id from the object" do
32
39
  before do
33
- admin_policy.license = url
34
- obj.admin_policy = admin_policy
40
+ allow(obj).to receive(:admin_policy_id) { "test:3" }
41
+ end
42
+ describe "and the admin policy has a license" do
43
+ before do
44
+ allow(admin_policy).to receive(:license) { url }
45
+ end
46
+ it { is_expected.to eq(license) }
47
+ end
48
+ describe "and the admin policy does not have a license" do
49
+ it { is_expected.to be_nil }
35
50
  end
36
- it { is_expected.to eq(license) }
37
51
  end
38
- describe "and the admin policy is the object itself" do
39
- before { obj.admin_policy = obj }
52
+ describe "and the admin policy has the same id as the object" do
53
+ before { allow(obj).to receive(:admin_policy_id) { obj.id } }
40
54
  it { is_expected.to be_nil }
41
55
  end
42
56
  end
43
- describe "otherwise" do
57
+ describe "and the object does not have an admin policy" do
44
58
  it { is_expected.to be_nil }
45
59
  end
46
60
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ddr-models
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.1.1
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: 2015-09-29 00:00:00.000000000 Z
12
+ date: 2015-10-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -486,7 +486,6 @@ files:
486
486
  - lib/ddr/models/admin_set.rb
487
487
  - lib/ddr/models/base.rb
488
488
  - lib/ddr/models/describable.rb
489
- - lib/ddr/models/effective_license.rb
490
489
  - lib/ddr/models/engine.rb
491
490
  - lib/ddr/models/error.rb
492
491
  - lib/ddr/models/event_loggable.rb
@@ -502,8 +501,11 @@ files:
502
501
  - lib/ddr/models/has_struct_metadata.rb
503
502
  - lib/ddr/models/has_thumbnail.rb
504
503
  - lib/ddr/models/indexing.rb
505
- - lib/ddr/models/inherited_license.rb
506
- - lib/ddr/models/license.rb
504
+ - lib/ddr/models/licenses/admin_policy_license.rb
505
+ - lib/ddr/models/licenses/effective_license.rb
506
+ - lib/ddr/models/licenses/inherited_license.rb
507
+ - lib/ddr/models/licenses/license.rb
508
+ - lib/ddr/models/licenses/parent_license.rb
507
509
  - lib/ddr/models/solr_document.rb
508
510
  - lib/ddr/models/struct_div.rb
509
511
  - lib/ddr/models/structure.rb
@@ -1,13 +0,0 @@
1
- module Ddr::Models
2
- class InheritedLicense
3
-
4
- def self.call(obj)
5
- if obj.respond_to?(:parent) && obj.parent
6
- EffectiveLicense.call obj.parent
7
- elsif obj.admin_policy && (obj.admin_policy != obj)
8
- EffectiveLicense.call obj.admin_policy
9
- end
10
- end
11
-
12
- end
13
- end