ddr-models 2.1.0.rc1 → 2.1.0.rc2
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 +4 -4
- data/ddr-models.gemspec +1 -1
- data/lib/ddr/datastreams/administrative_metadata_datastream.rb +3 -0
- data/lib/ddr/index/fields.rb +7 -0
- data/lib/ddr/managers/technical_metadata_manager.rb +0 -1
- data/lib/ddr/models.rb +6 -0
- data/lib/ddr/models/admin_set.rb +17 -0
- data/lib/ddr/models/finding_aid.rb +30 -0
- data/lib/ddr/models/has_admin_metadata.rb +7 -0
- data/lib/ddr/models/indexing.rb +1 -0
- data/lib/ddr/models/license.rb +9 -26
- data/lib/ddr/models/solr_document.rb +7 -0
- data/lib/ddr/models/version.rb +1 -1
- data/lib/ddr/vocab/asset.rb +3 -0
- data/spec/models/admin_set_spec.rb +25 -0
- data/spec/models/effective_license_spec.rb +3 -2
- data/spec/models/finding_aid_spec.rb +39 -0
- data/spec/models/license_spec.rb +24 -0
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60a46f8934fb0e5f4ffdf51e407c3a06f55ef8c7
|
4
|
+
data.tar.gz: 6f55b69df1b4a3339ebbe852df239efeda75c905
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6a3dc6282c61f4eeaa20a960a83ad28f4063938173820e914363af58b477c40f6d7a5ca8c3e0ddd6811d74f7de084ce363e5c94abee94c60edbced1211f6df74
|
7
|
+
data.tar.gz: bd639d6c6ca73ce6e760c7917c6c29878de3a06dd4e134e4e5bd346a112530412cab2db1174c2b15afb6ef360b555a364098dbd7986dc9739eb0aa0c28a945a7
|
data/ddr-models.gemspec
CHANGED
@@ -30,7 +30,7 @@ Gem::Specification.new do |s|
|
|
30
30
|
s.add_dependency "rdf-vocab", "~> 0.8"
|
31
31
|
s.add_dependency "net-ldap", "~> 0.11"
|
32
32
|
s.add_dependency "cancancan", "~> 1.12"
|
33
|
-
s.add_dependency "ddr-aux-client", "~> 1.1"
|
33
|
+
s.add_dependency "ddr-aux-client", "~> 1.2", ">= 1.2.1"
|
34
34
|
s.add_dependency "ddr-antivirus", "2.0.0"
|
35
35
|
|
36
36
|
s.add_development_dependency "bundler", "~> 1.7"
|
data/lib/ddr/index/fields.rb
CHANGED
@@ -7,6 +7,12 @@ module Ddr::Index
|
|
7
7
|
const_get(name.to_s.upcase, false)
|
8
8
|
end
|
9
9
|
|
10
|
+
def self.techmd
|
11
|
+
constants(false)
|
12
|
+
.select { |c| c =~ /\ATECHMD_/ }
|
13
|
+
.map { |c| const_get(c) }
|
14
|
+
end
|
15
|
+
|
10
16
|
ID = UniqueKeyField.instance
|
11
17
|
PID = UniqueKeyField.instance
|
12
18
|
|
@@ -26,6 +32,7 @@ module Ddr::Index
|
|
26
32
|
DEPOSITOR = Field.new :depositor, :stored_sortable
|
27
33
|
DISPLAY_FORMAT = Field.new :display_format, :stored_sortable
|
28
34
|
DOI = Field.new :doi, :symbol
|
35
|
+
EAD_ID = Field.new :ead_id, :stored_sortable
|
29
36
|
EXTRACTED_TEXT = Field.new :extracted_text, :searchable, type: :text
|
30
37
|
HAS_MODEL = Field.new :has_model, :symbol
|
31
38
|
IDENTIFIER_ALL = Field.new :identifier_all, :symbol
|
data/lib/ddr/models.rb
CHANGED
@@ -31,6 +31,7 @@ module Ddr
|
|
31
31
|
extend ActiveSupport::Autoload
|
32
32
|
|
33
33
|
autoload :AccessControllable
|
34
|
+
autoload :AdminSet
|
34
35
|
autoload :Base
|
35
36
|
autoload :ChecksumInvalid, 'ddr/models/error'
|
36
37
|
autoload :ContentModelError, 'ddr/models/error'
|
@@ -40,6 +41,7 @@ module Ddr
|
|
40
41
|
autoload :Error
|
41
42
|
autoload :EventLoggable
|
42
43
|
autoload :FileManagement
|
44
|
+
autoload :FindingAid
|
43
45
|
autoload :FixityCheckable
|
44
46
|
autoload :Governable
|
45
47
|
autoload :HasAdminMetadata
|
@@ -87,6 +89,10 @@ module Ddr
|
|
87
89
|
alias :characterize_files? :characterize_files
|
88
90
|
end
|
89
91
|
|
92
|
+
mattr_accessor :ead_xml_base_url do
|
93
|
+
"http://library.duke.edu/rubenstein/findingaids/"
|
94
|
+
end
|
95
|
+
|
90
96
|
# Yields an object with module configuration accessors
|
91
97
|
def self.configure
|
92
98
|
yield self
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Ddr::Models
|
2
|
+
class FindingAid
|
3
|
+
|
4
|
+
attr_reader :ead_id
|
5
|
+
|
6
|
+
def initialize(ead_id)
|
7
|
+
@ead_id = ead_id
|
8
|
+
end
|
9
|
+
|
10
|
+
def url
|
11
|
+
@url ||= doc.css("eadid").attr("url").text
|
12
|
+
end
|
13
|
+
|
14
|
+
def title
|
15
|
+
@title ||= doc.css("titleproper").children.first.text.strip
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
# @raise [OpenURI::HTTPError] if 404, etc.
|
21
|
+
def doc
|
22
|
+
@doc ||= Nokogiri::XML(open(ead_xml_url))
|
23
|
+
end
|
24
|
+
|
25
|
+
def ead_xml_url
|
26
|
+
Ddr::Models.ead_xml_base_url + ead_id + ".xml"
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
@@ -19,6 +19,7 @@ module Ddr::Models
|
|
19
19
|
:permanent_url,
|
20
20
|
:research_help_contact,
|
21
21
|
:workflow_state,
|
22
|
+
:ead_id,
|
22
23
|
datastream: "adminMetadata",
|
23
24
|
multiple: false
|
24
25
|
|
@@ -74,6 +75,12 @@ module Ddr::Models
|
|
74
75
|
InheritedLicense.call(self)
|
75
76
|
end
|
76
77
|
|
78
|
+
def finding_aid
|
79
|
+
if ead_id
|
80
|
+
FindingAid.new(ead_id)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
77
84
|
private
|
78
85
|
|
79
86
|
def update_permanent_id_on_destroy
|
data/lib/ddr/models/indexing.rb
CHANGED
data/lib/ddr/models/license.rb
CHANGED
@@ -1,37 +1,20 @@
|
|
1
|
-
require "ostruct"
|
2
1
|
require "ddr_aux/client"
|
3
2
|
|
4
3
|
module Ddr::Models
|
5
|
-
class License <
|
4
|
+
class License < DdrAux::Client::License
|
6
5
|
|
7
|
-
|
8
|
-
def get(url)
|
9
|
-
new DdrAux::Client.find_license(url: url)
|
10
|
-
end
|
11
|
-
|
12
|
-
def all
|
13
|
-
DdrAux::Client.licenses.map { |l| new(l) }
|
14
|
-
end
|
6
|
+
attr_accessor :pid
|
15
7
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
end
|
8
|
+
def self.call(obj)
|
9
|
+
if obj.license
|
10
|
+
license = find(url: obj.license)
|
11
|
+
license.pid = obj.pid
|
12
|
+
license
|
22
13
|
end
|
23
14
|
end
|
24
15
|
|
25
|
-
def
|
26
|
-
|
27
|
-
end
|
28
|
-
|
29
|
-
def to_json
|
30
|
-
to_h.to_json
|
31
|
-
end
|
32
|
-
|
33
|
-
def ==(other)
|
34
|
-
other.is_a?(self.class) && other.__getobj__ == __getobj__
|
16
|
+
def to_s
|
17
|
+
title
|
35
18
|
end
|
36
19
|
|
37
20
|
end
|
@@ -209,6 +209,13 @@ module Ddr::Models
|
|
209
209
|
struct_map_docs(type).map { |doc| doc.multires_image_file_path }.compact
|
210
210
|
end
|
211
211
|
|
212
|
+
# DRY HasAdminMetadata
|
213
|
+
def finding_aid
|
214
|
+
if ead_id
|
215
|
+
FindingAid.new(ead_id)
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
212
219
|
private
|
213
220
|
|
214
221
|
def targets_query
|
data/lib/ddr/models/version.rb
CHANGED
data/lib/ddr/vocab/asset.rb
CHANGED
@@ -0,0 +1,25 @@
|
|
1
|
+
module Ddr::Models
|
2
|
+
RSpec.describe AdminSet do
|
3
|
+
|
4
|
+
describe ".call" do
|
5
|
+
subject { described_class.call(obj) }
|
6
|
+
|
7
|
+
describe "when the object has an admin set" do
|
8
|
+
let(:obj) { double(admin_set: "dvs") }
|
9
|
+
before do
|
10
|
+
allow(described_class).to receive(:find).with(code: "dvs") do
|
11
|
+
described_class.new("id"=>1, "code"=>"dvs", "title"=>"Data and Visualization Services", "created_at"=>"2015-09-15T16:15:58.514Z", "updated_at"=>"2015-09-15T16:15:58.514Z")
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
its(:to_s) { is_expected.to eq("Data and Visualization Services") }
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "when the object does not have an admin set" do
|
19
|
+
let(:obj) { double(admin_set: nil) }
|
20
|
+
it { is_expected.to be_nil }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
@@ -7,10 +7,11 @@ module Ddr::Models
|
|
7
7
|
let(:obj) { mock.new }
|
8
8
|
|
9
9
|
let(:url) { "https://creativecommons.org/licenses/by-nc-nd/4.0/" }
|
10
|
+
|
10
11
|
let(:license) { License.new(url: url) }
|
11
|
-
before { allow(License).to receive(:
|
12
|
+
before { allow(License).to receive(:find).with(url: url) { license } }
|
12
13
|
|
13
|
-
describe "when the object has a
|
14
|
+
describe "when the object has a license" do
|
14
15
|
before { obj.license = url }
|
15
16
|
it { is_expected.to eq(license) }
|
16
17
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Ddr::Models
|
2
|
+
RSpec.describe FindingAid do
|
3
|
+
|
4
|
+
subject { described_class.new("ead") }
|
5
|
+
|
6
|
+
let(:ead_xml) do
|
7
|
+
<<-EOS
|
8
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
9
|
+
<ead xmlns="urn:isbn:1-931666-22-9"
|
10
|
+
xmlns:xlink="http://www.w3.org/1999/xlink"
|
11
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
12
|
+
xsi:schemaLocation="urn:isbn:1-931666-22-9 http://www.loc.gov/ead/ead.xsd">
|
13
|
+
<eadheader countryencoding="iso3166-1"
|
14
|
+
dateencoding="iso8601"
|
15
|
+
findaidstatus="published"
|
16
|
+
langencoding="iso639-2b"
|
17
|
+
repositoryencoding="iso15511">
|
18
|
+
<eadid url="http://example.com/ead/">ead</eadid>
|
19
|
+
<filedesc>
|
20
|
+
<titlestmt>
|
21
|
+
<titleproper>Guide to the Perplexed
|
22
|
+
<num>00001</num>
|
23
|
+
</titleproper>
|
24
|
+
</titlestmt>
|
25
|
+
</filedesc>
|
26
|
+
</eadheader>
|
27
|
+
</ead>
|
28
|
+
EOS
|
29
|
+
end
|
30
|
+
|
31
|
+
before do
|
32
|
+
allow(subject).to receive(:doc) { Nokogiri::XML(ead_xml) }
|
33
|
+
end
|
34
|
+
|
35
|
+
its(:title) { is_expected.to eq("Guide to the Perplexed") }
|
36
|
+
its(:url) { is_expected.to eq("http://example.com/ead/") }
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Ddr::Models
|
2
|
+
RSpec.describe License do
|
3
|
+
|
4
|
+
describe ".call" do
|
5
|
+
subject { described_class.call(obj) }
|
6
|
+
|
7
|
+
describe "when the object has a license URL" do
|
8
|
+
let(:url) { "http://example.com" }
|
9
|
+
let(:obj) { double(pid: "test:1", license: url) }
|
10
|
+
before do
|
11
|
+
allow(described_class).to receive(:find).with(url: url) { described_class.new(url: url, title: "A License") }
|
12
|
+
end
|
13
|
+
its(:pid) { is_expected.to eq("test:1") }
|
14
|
+
its(:to_s) { is_expected.to eq("A License") }
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "when the object does not have a license" do
|
18
|
+
let(:obj) { double(pid: "test:1", license: nil) }
|
19
|
+
it { is_expected.to be_nil }
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
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.0.rc2
|
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-
|
12
|
+
date: 2015-09-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -191,14 +191,20 @@ dependencies:
|
|
191
191
|
requirements:
|
192
192
|
- - "~>"
|
193
193
|
- !ruby/object:Gem::Version
|
194
|
-
version: '1.
|
194
|
+
version: '1.2'
|
195
|
+
- - ">="
|
196
|
+
- !ruby/object:Gem::Version
|
197
|
+
version: 1.2.1
|
195
198
|
type: :runtime
|
196
199
|
prerelease: false
|
197
200
|
version_requirements: !ruby/object:Gem::Requirement
|
198
201
|
requirements:
|
199
202
|
- - "~>"
|
200
203
|
- !ruby/object:Gem::Version
|
201
|
-
version: '1.
|
204
|
+
version: '1.2'
|
205
|
+
- - ">="
|
206
|
+
- !ruby/object:Gem::Version
|
207
|
+
version: 1.2.1
|
202
208
|
- !ruby/object:Gem::Dependency
|
203
209
|
name: ddr-antivirus
|
204
210
|
requirement: !ruby/object:Gem::Requirement
|
@@ -477,6 +483,7 @@ files:
|
|
477
483
|
- lib/ddr/metadata/premis_event.rb
|
478
484
|
- lib/ddr/models.rb
|
479
485
|
- lib/ddr/models/access_controllable.rb
|
486
|
+
- lib/ddr/models/admin_set.rb
|
480
487
|
- lib/ddr/models/base.rb
|
481
488
|
- lib/ddr/models/describable.rb
|
482
489
|
- lib/ddr/models/effective_license.rb
|
@@ -484,6 +491,7 @@ files:
|
|
484
491
|
- lib/ddr/models/error.rb
|
485
492
|
- lib/ddr/models/event_loggable.rb
|
486
493
|
- lib/ddr/models/file_management.rb
|
494
|
+
- lib/ddr/models/finding_aid.rb
|
487
495
|
- lib/ddr/models/fixity_checkable.rb
|
488
496
|
- lib/ddr/models/governable.rb
|
489
497
|
- lib/ddr/models/has_admin_metadata.rb
|
@@ -614,6 +622,7 @@ files:
|
|
614
622
|
- spec/managers/technical_metadata_manager_spec.rb
|
615
623
|
- spec/models/active_fedora_base_spec.rb
|
616
624
|
- spec/models/active_fedora_datastream_spec.rb
|
625
|
+
- spec/models/admin_set_spec.rb
|
617
626
|
- spec/models/attachment_spec.rb
|
618
627
|
- spec/models/collection_spec.rb
|
619
628
|
- spec/models/component_spec.rb
|
@@ -621,11 +630,13 @@ files:
|
|
621
630
|
- spec/models/effective_license_spec.rb
|
622
631
|
- spec/models/events_spec.rb
|
623
632
|
- spec/models/file_management_spec.rb
|
633
|
+
- spec/models/finding_aid_spec.rb
|
624
634
|
- spec/models/has_admin_metadata_spec.rb
|
625
635
|
- spec/models/has_children_spec.rb
|
626
636
|
- spec/models/has_struct_metadata_spec.rb
|
627
637
|
- spec/models/indexing_spec.rb
|
628
638
|
- spec/models/item_spec.rb
|
639
|
+
- spec/models/license_spec.rb
|
629
640
|
- spec/models/solr_document_spec.rb
|
630
641
|
- spec/models/struct_div_spec.rb
|
631
642
|
- spec/models/structure_spec.rb
|
@@ -775,6 +786,7 @@ test_files:
|
|
775
786
|
- spec/managers/technical_metadata_manager_spec.rb
|
776
787
|
- spec/models/active_fedora_base_spec.rb
|
777
788
|
- spec/models/active_fedora_datastream_spec.rb
|
789
|
+
- spec/models/admin_set_spec.rb
|
778
790
|
- spec/models/attachment_spec.rb
|
779
791
|
- spec/models/collection_spec.rb
|
780
792
|
- spec/models/component_spec.rb
|
@@ -782,11 +794,13 @@ test_files:
|
|
782
794
|
- spec/models/effective_license_spec.rb
|
783
795
|
- spec/models/events_spec.rb
|
784
796
|
- spec/models/file_management_spec.rb
|
797
|
+
- spec/models/finding_aid_spec.rb
|
785
798
|
- spec/models/has_admin_metadata_spec.rb
|
786
799
|
- spec/models/has_children_spec.rb
|
787
800
|
- spec/models/has_struct_metadata_spec.rb
|
788
801
|
- spec/models/indexing_spec.rb
|
789
802
|
- spec/models/item_spec.rb
|
803
|
+
- spec/models/license_spec.rb
|
790
804
|
- spec/models/solr_document_spec.rb
|
791
805
|
- spec/models/struct_div_spec.rb
|
792
806
|
- spec/models/structure_spec.rb
|