ddr-models 2.1.0.rc1 → 2.1.0.rc2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|