ddr-models 2.1.0 → 2.1.1

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: 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