curation_concerns 0.14.0.pre4 → 0.14.0
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/.rubocop.yml +0 -25
- data/README.md +2 -4
- data/app/actors/curation_concerns/base_actor.rb +1 -1
- data/app/forms/curation_concerns/forms/work_form.rb +1 -1
- data/app/models/concerns/curation_concerns/file_set/indexing.rb +4 -5
- data/app/models/concerns/curation_concerns/serializers.rb +2 -2
- data/app/models/concerns/curation_concerns/solr_document_behavior.rb +6 -6
- data/app/models/concerns/curation_concerns/work_behavior.rb +3 -6
- data/app/presenters/curation_concerns/file_set_presenter.rb +2 -2
- data/app/renderers/curation_concerns/attribute_renderer.rb +1 -1
- data/app/search_builders/curation_concerns/filter_by_type.rb +2 -2
- data/app/services/rights_service.rb +5 -3
- data/lib/curation_concerns/configuration.rb +1 -1
- data/lib/curation_concerns/version.rb +1 -1
- data/lib/generators/curation_concerns/templates/config/authorities/rights.yml +9 -0
- data/spec/models/curation_concerns/work_behavior_spec.rb +9 -1
- data/spec/models/file_set_spec.rb +18 -1
- data/spec/services/rights_service_spec.rb +19 -7
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7127b05e9a9109e92a2781d2e82010ebfc58bd40
|
4
|
+
data.tar.gz: b646ef71a42e4fcd0debd50953cd189cfcbcc7ee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 67ac875f8235ed5dfc2bbe3826c8fa4bd223e40d84051774f509432c65111514f4bf3eedbd9a60b87881dba9c331c0c2aeb51eb17800c8f6ed0c82cee8993541
|
7
|
+
data.tar.gz: dbc29e4c2628fec8e03c5f79adf694b115c951266bc6ed809e22c398a07b619e2f945f619dd46daffb6300e917ddc13b2e295ff3beeaaed8eedb6dfe21bd106c
|
data/.rubocop.yml
CHANGED
@@ -9,25 +9,13 @@ AllCops:
|
|
9
9
|
- 'script/**/*'
|
10
10
|
- 'vendor/**/*'
|
11
11
|
- '.internal_test_app/**/*'
|
12
|
-
- 'app/models/concerns/curation_concerns/file_set/export.rb'
|
13
12
|
|
14
13
|
Rails:
|
15
14
|
Enabled: true
|
16
15
|
|
17
|
-
Performance/RedundantBlockCall:
|
18
|
-
# We can remove this exclusion when this commit is released:
|
19
|
-
# https://github.com/bbatsov/rubocop/commit/7df382531db4f66cd9872a4f478bd486d6ce6712
|
20
|
-
Exclude:
|
21
|
-
- 'lib/curation_concerns/null_logger.rb'
|
22
|
-
|
23
16
|
Performance/RedundantMerge:
|
24
17
|
Enabled: false
|
25
18
|
|
26
|
-
Lint/AssignmentInCondition:
|
27
|
-
Exclude:
|
28
|
-
- 'app/services/curation_concerns/persist_derivatives.rb'
|
29
|
-
- 'app/actors/curation_concerns/file_set_actor.rb'
|
30
|
-
|
31
19
|
Metrics/LineLength:
|
32
20
|
Enabled: false
|
33
21
|
|
@@ -38,18 +26,11 @@ Metrics/CyclomaticComplexity:
|
|
38
26
|
Exclude:
|
39
27
|
- 'app/services/curation_concerns/file_set_audit_service.rb'
|
40
28
|
- 'app/controllers/concerns/curation_concerns/file_sets_controller_behavior.rb'
|
41
|
-
- 'app/helpers/curation_concerns/curation_concerns_helper_behavior.rb'
|
42
|
-
- 'app/helpers/curation_concerns/attribute_helper.rb'
|
43
|
-
- 'app/actors/curation_concerns/file_set_actor.rb'
|
44
|
-
- 'app/actors/curation_concerns/work_actor_behavior.rb'
|
45
29
|
|
46
30
|
Metrics/PerceivedComplexity:
|
47
31
|
Exclude:
|
48
32
|
- 'app/services/curation_concerns/file_set_audit_service.rb'
|
49
33
|
- 'app/controllers/concerns/curation_concerns/file_sets_controller_behavior.rb'
|
50
|
-
- 'app/helpers/curation_concerns/curation_concerns_helper_behavior.rb'
|
51
|
-
- 'app/helpers/curation_concerns/attribute_helper.rb'
|
52
|
-
- 'app/actors/curation_concerns/file_set_actor.rb'
|
53
34
|
|
54
35
|
Metrics/MethodLength:
|
55
36
|
Enabled: false
|
@@ -63,10 +44,7 @@ Metrics/ClassLength:
|
|
63
44
|
Metrics/ModuleLength:
|
64
45
|
Exclude:
|
65
46
|
- 'app/controllers/concerns/curation_concerns/curation_concern_controller.rb'
|
66
|
-
- 'app/controllers/concerns/curation_concerns/users_controller_behavior.rb'
|
67
|
-
- 'app/controllers/concerns/curation_concerns/catalog_controller.rb'
|
68
47
|
- 'app/controllers/concerns/curation_concerns/file_sets_controller_behavior.rb'
|
69
|
-
- 'app/helpers/curation_concerns/curation_concerns_helper_behavior.rb'
|
70
48
|
- 'app/models/concerns/curation_concerns/solr_document_behavior.rb'
|
71
49
|
- 'app/controllers/concerns/curation_concerns/collections_controller_behavior.rb'
|
72
50
|
|
@@ -129,9 +107,6 @@ Style/HashSyntax:
|
|
129
107
|
|
130
108
|
Style/PredicateName:
|
131
109
|
Exclude:
|
132
|
-
- 'app/helpers/curation_concerns/curation_concerns_helper_behavior.rb'
|
133
|
-
- 'app/controllers/concerns/curation_concerns/controller.rb'
|
134
|
-
- 'app/helpers/curation_concerns/collections_helper.rb'
|
135
110
|
- 'app/helpers/curation_concerns/collections_helper_behavior.rb'
|
136
111
|
|
137
112
|
Style/GlobalVars:
|
data/README.md
CHANGED
@@ -25,8 +25,6 @@ Curation Concerns requires the following software to work:
|
|
25
25
|
|
26
26
|
## Installation
|
27
27
|
|
28
|
-
Checkout the dependencies for [curation_concerns-models](https://github.com/projecthydra-labs/curation_concerns/tree/master/curation_concerns-models#dependencies), which is installed as part of curation_concerns.
|
29
|
-
|
30
28
|
Add this line to your application's Gemfile:
|
31
29
|
|
32
30
|
gem 'curation_concerns'
|
@@ -40,10 +38,10 @@ Then run the install generator. You will be prompted if you want to overwrite t
|
|
40
38
|
$ rails generate curation_concerns:install
|
41
39
|
$ rake db:migrate
|
42
40
|
|
43
|
-
### FITS 0.
|
41
|
+
### FITS 0.8.5
|
44
42
|
|
45
43
|
To install FITS:
|
46
|
-
* Go to http://projects.iq.harvard.edu/fits/downloads, download __fits-0.
|
44
|
+
* Go to http://projects.iq.harvard.edu/fits/downloads, download __fits-0.8.5.zip__, and unpack it somewhere on your machine. You can also install FITS on OSX with homebrew: `brew install fits` (you may also have to create a symlink from fits.sh -> fits in the next step).
|
47
45
|
* Mark fits.sh as executable (chmod a+x fits.sh)
|
48
46
|
* Run "fits.sh -h" from the command line and see a help message to ensure FITS is properly installed
|
49
47
|
* Give your app access to FITS by:
|
@@ -50,7 +50,7 @@ module CurationConcerns
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def apply_save_data_to_curation_concern(attributes)
|
53
|
-
attributes[:rights] = Array(attributes[:rights]) if attributes.key? :rights
|
53
|
+
attributes[:rights] = Array.wrap(attributes[:rights]) if attributes.key? :rights
|
54
54
|
remove_blank_attributes!(attributes)
|
55
55
|
curation_concern.attributes = attributes.symbolize_keys
|
56
56
|
curation_concern.date_modified = CurationConcerns::TimeService.time_in_utc
|
@@ -56,7 +56,7 @@ module CurationConcerns
|
|
56
56
|
# Overriden to cast 'rights' to an array
|
57
57
|
def sanitize_params(form_params)
|
58
58
|
super.tap do |params|
|
59
|
-
params['rights'] = Array(params['rights']) if params.key?('rights')
|
59
|
+
params['rights'] = Array.wrap(params['rights']) if params.key?('rights')
|
60
60
|
end
|
61
61
|
end
|
62
62
|
end
|
@@ -3,11 +3,10 @@ module CurationConcerns
|
|
3
3
|
module Indexing
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
end
|
6
|
+
included do
|
7
|
+
class_attribute :indexer
|
8
|
+
# the default indexing service
|
9
|
+
self.indexer = CurationConcerns::FileSetIndexer
|
11
10
|
end
|
12
11
|
end
|
13
12
|
end
|
@@ -37,7 +37,7 @@ module CurationConcerns
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def human_readable_type
|
40
|
-
Array(self[Solrizer.solr_name('human_readable_type', :stored_searchable)]).first
|
40
|
+
Array.wrap(self[Solrizer.solr_name('human_readable_type', :stored_searchable)]).first
|
41
41
|
end
|
42
42
|
|
43
43
|
def representative_id
|
@@ -58,24 +58,24 @@ module CurationConcerns
|
|
58
58
|
end
|
59
59
|
|
60
60
|
def depositor(default = '')
|
61
|
-
val = Array(self[Solrizer.solr_name('depositor')]).first
|
61
|
+
val = Array.wrap(self[Solrizer.solr_name('depositor')]).first
|
62
62
|
val.present? ? val : default
|
63
63
|
end
|
64
64
|
|
65
65
|
def title
|
66
|
-
Array(self[Solrizer.solr_name('title')]).first
|
66
|
+
Array.wrap(self[Solrizer.solr_name('title')]).first
|
67
67
|
end
|
68
68
|
|
69
69
|
def description
|
70
|
-
Array(self[Solrizer.solr_name('description')]).first
|
70
|
+
Array.wrap(self[Solrizer.solr_name('description')]).first
|
71
71
|
end
|
72
72
|
|
73
73
|
def label
|
74
|
-
Array(self[Solrizer.solr_name('label')]).first
|
74
|
+
Array.wrap(self[Solrizer.solr_name('label')]).first
|
75
75
|
end
|
76
76
|
|
77
77
|
def file_format
|
78
|
-
Array(self[Solrizer.solr_name('file_format')]).first
|
78
|
+
Array.wrap(self[Solrizer.solr_name('file_format')]).first
|
79
79
|
end
|
80
80
|
|
81
81
|
def creator
|
@@ -17,14 +17,11 @@ module CurationConcerns::WorkBehavior
|
|
17
17
|
|
18
18
|
included do
|
19
19
|
property :owner, predicate: RDF::URI.new('http://opaquenamespace.org/ns/hydra/owner'), multiple: false
|
20
|
-
class_attribute :human_readable_short_description
|
20
|
+
class_attribute :human_readable_short_description, :indexer
|
21
|
+
self.indexer = CurationConcerns::WorkIndexer
|
21
22
|
end
|
22
23
|
|
23
24
|
module ClassMethods
|
24
|
-
def indexer
|
25
|
-
CurationConcerns::WorkIndexer
|
26
|
-
end
|
27
|
-
|
28
25
|
# This governs which partial to draw when you render this type of object
|
29
26
|
def _to_partial_path #:nodoc:
|
30
27
|
@_to_partial_path ||= begin
|
@@ -37,7 +34,7 @@ module CurationConcerns::WorkBehavior
|
|
37
34
|
|
38
35
|
def to_s
|
39
36
|
if title.present?
|
40
|
-
Array(title).join(' | ')
|
37
|
+
Array.wrap(title).join(' | ')
|
41
38
|
else
|
42
39
|
'No Title'
|
43
40
|
end
|
@@ -25,11 +25,11 @@ module CurationConcerns
|
|
25
25
|
:depositor, :tags, :title_or_label, to: :solr_document
|
26
26
|
|
27
27
|
def page_title
|
28
|
-
Array(solr_document['label_tesim']).first
|
28
|
+
Array.wrap(solr_document['label_tesim']).first
|
29
29
|
end
|
30
30
|
|
31
31
|
def link_name
|
32
|
-
current_ability.can?(:read, id) ? Array(solr_document['label_tesim']).first : 'File'
|
32
|
+
current_ability.can?(:read, id) ? Array.wrap(solr_document['label_tesim']).first : 'File'
|
33
33
|
end
|
34
34
|
end
|
35
35
|
end
|
@@ -25,7 +25,7 @@ module CurationConcerns
|
|
25
25
|
return markup if !values.present? && !options[:include_empty]
|
26
26
|
markup << %(<tr><th>#{label}</th>\n<td><ul class='tabular'>)
|
27
27
|
attributes = microdata_object_attributes(field).merge(class: "attribute #{field}")
|
28
|
-
Array(values).each do |value|
|
28
|
+
Array.wrap(values).each do |value|
|
29
29
|
markup << "<li#{html_attributes(attributes)}>#{attribute_value_to_html(value.to_s)}</li>"
|
30
30
|
end
|
31
31
|
markup << %(</ul></td></tr>)
|
@@ -22,14 +22,14 @@ module CurationConcerns
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def work_clauses
|
25
|
-
return [] if blacklight_params.key?(:f) && Array(blacklight_params[:f][:generic_type_sim]).include?('Collection')
|
25
|
+
return [] if blacklight_params.key?(:f) && Array.wrap(blacklight_params[:f][:generic_type_sim]).include?('Collection')
|
26
26
|
work_types.map do |klass|
|
27
27
|
ActiveFedora::SolrQueryBuilder.construct_query_for_rel(has_model: klass.to_class_uri)
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
31
|
def collection_clauses
|
32
|
-
return [] if blacklight_params.key?(:f) && Array(blacklight_params[:f][:generic_type_sim]).include?('Work')
|
32
|
+
return [] if blacklight_params.key?(:f) && Array.wrap(blacklight_params[:f][:generic_type_sim]).include?('Work')
|
33
33
|
[ActiveFedora::SolrQueryBuilder.construct_query_for_rel(has_model: ::Collection.to_class_uri)]
|
34
34
|
end
|
35
35
|
end
|
@@ -3,12 +3,14 @@ module RightsService
|
|
3
3
|
self.authority = Qa::Authorities::Local.subauthority_for('rights')
|
4
4
|
|
5
5
|
def self.select_options
|
6
|
-
|
7
|
-
[element[:label], element[:id]]
|
8
|
-
end
|
6
|
+
active_elements.map { |e| [e[:label], e[:id]] }
|
9
7
|
end
|
10
8
|
|
11
9
|
def self.label(id)
|
12
10
|
authority.find(id).fetch('term')
|
13
11
|
end
|
12
|
+
|
13
|
+
def self.active_elements
|
14
|
+
authority.all.select { |e| authority.find(e[:id])[:active] }
|
15
|
+
end
|
14
16
|
end
|
@@ -142,7 +142,7 @@ module CurationConcerns
|
|
142
142
|
# Registers the given curation concern model in the configuration
|
143
143
|
# @param [Array<Symbol>,Symbol] curation_concern_types
|
144
144
|
def register_curation_concern(*curation_concern_types)
|
145
|
-
Array(curation_concern_types).flatten.compact.each do |cc_type|
|
145
|
+
Array.wrap(curation_concern_types).flatten.compact.each do |cc_type|
|
146
146
|
unless @registered_concerns.include?(cc_type)
|
147
147
|
@registered_concerns << cc_type
|
148
148
|
end
|
@@ -1,19 +1,28 @@
|
|
1
1
|
terms:
|
2
2
|
- id: http://creativecommons.org/licenses/by/3.0/us/
|
3
3
|
term: Attribution 3.0 United States
|
4
|
+
active: true
|
4
5
|
- id: http://creativecommons.org/licenses/by-sa/3.0/us/
|
5
6
|
term: Attribution-ShareAlike 3.0 United States
|
7
|
+
active: true
|
6
8
|
- id: http://creativecommons.org/licenses/by-nc/3.0/us/
|
7
9
|
term: Attribution-NonCommercial 3.0 United States
|
10
|
+
active: true
|
8
11
|
- id: http://creativecommons.org/licenses/by-nd/3.0/us/
|
9
12
|
term: Attribution-NoDerivs 3.0 United States
|
13
|
+
active: true
|
10
14
|
- id: http://creativecommons.org/licenses/by-nc-nd/3.0/us/
|
11
15
|
term: Attribution-NonCommercial-NoDerivs 3.0 United States
|
16
|
+
active: true
|
12
17
|
- id: http://creativecommons.org/licenses/by-nc-sa/3.0/us/
|
13
18
|
term: Attribution-NonCommercial-ShareAlike 3.0 United States
|
19
|
+
active: true
|
14
20
|
- id: http://creativecommons.org/publicdomain/mark/1.0/
|
15
21
|
term: Public Domain Mark 1.0
|
22
|
+
active: true
|
16
23
|
- id: http://creativecommons.org/publicdomain/zero/1.0/
|
17
24
|
term: CC0 1.0 Universal
|
25
|
+
active: true
|
18
26
|
- id: http://www.europeana.eu/portal/rights/rr-r.html
|
19
27
|
term: All rights reserved
|
28
|
+
active: true
|
@@ -12,7 +12,7 @@ describe CurationConcerns::WorkBehavior do
|
|
12
12
|
|
13
13
|
subject { EssentialWork.new }
|
14
14
|
|
15
|
-
it '
|
15
|
+
it 'mixes together all the goodness' do
|
16
16
|
[::CurationConcerns::WithFileSets, ::CurationConcerns::HumanReadableType, CurationConcerns::Noid, CurationConcerns::Serializers, Hydra::WithDepositor, Hydra::AccessControls::Embargoable, Solrizer::Common].each do |mixin|
|
17
17
|
expect(subject.class.ancestors).to include(mixin)
|
18
18
|
end
|
@@ -38,4 +38,12 @@ describe CurationConcerns::WorkBehavior do
|
|
38
38
|
expect(subject.to_solr.keys).to include(:id)
|
39
39
|
expect(subject.to_solr.keys).to include('has_model_ssim')
|
40
40
|
end
|
41
|
+
|
42
|
+
describe 'indexer' do
|
43
|
+
let(:klass) { Class.new }
|
44
|
+
it 'is settable' do
|
45
|
+
EssentialWork.indexer = klass
|
46
|
+
expect(subject.indexer).to eq klass
|
47
|
+
end
|
48
|
+
end
|
41
49
|
end
|
@@ -27,7 +27,7 @@ describe FileSet do
|
|
27
27
|
context 'when it is initialized' do
|
28
28
|
it 'has empty arrays for all the properties' do
|
29
29
|
subject.attributes.each do |_k, v|
|
30
|
-
expect(Array(v)).to eq([])
|
30
|
+
expect(Array.wrap(v)).to eq([])
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
@@ -148,6 +148,23 @@ describe FileSet do
|
|
148
148
|
describe '#indexer' do
|
149
149
|
subject { described_class.indexer }
|
150
150
|
it { is_expected.to eq CurationConcerns::FileSetIndexer }
|
151
|
+
|
152
|
+
describe "setting" do
|
153
|
+
before do
|
154
|
+
class AltFile < ActiveFedora::Base
|
155
|
+
include CurationConcerns::FileSetBehavior
|
156
|
+
end
|
157
|
+
end
|
158
|
+
after do
|
159
|
+
Object.send(:remove_const, :AltFile)
|
160
|
+
end
|
161
|
+
let(:klass) { Class.new }
|
162
|
+
subject { AltFile.new }
|
163
|
+
it 'is settable' do
|
164
|
+
AltFile.indexer = klass
|
165
|
+
expect(subject.indexer).to eq klass
|
166
|
+
end
|
167
|
+
end
|
151
168
|
end
|
152
169
|
|
153
170
|
it 'supports multi-valued fields in solr' do
|
@@ -1,17 +1,29 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe RightsService do
|
4
|
-
|
5
|
-
|
4
|
+
before do
|
5
|
+
# Configure QA to use fixtures
|
6
|
+
qa_fixtures = { local_path: File.expand_path('../../fixtures/authorities', __FILE__) }
|
7
|
+
stub_const("Qa::Authorities::LocalSubauthority::AUTHORITIES_CONFIG", qa_fixtures)
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "#select_options" do
|
11
|
+
it "returns active terms" do
|
12
|
+
expect(described_class.select_options).to include(["First Active Term", "demo_id_01"], ["Second Active Term", "demo_id_02"])
|
13
|
+
end
|
6
14
|
|
7
|
-
it "
|
8
|
-
expect(
|
15
|
+
it "does not return inactive terms" do
|
16
|
+
expect(described_class.select_options).not_to include(["Third is an Inactive Term", "demo_id_03"], ["Fourth is an Inactive Term", "demo_id_04"])
|
9
17
|
end
|
10
18
|
end
|
11
19
|
|
12
|
-
describe "label" do
|
13
|
-
|
20
|
+
describe "#label" do
|
21
|
+
it "resolves for ids of active terms" do
|
22
|
+
expect(described_class.label('demo_id_01')).to eq("First Active Term")
|
23
|
+
end
|
14
24
|
|
15
|
-
it
|
25
|
+
it "resolves for ids of inactive terms" do
|
26
|
+
expect(described_class.label('demo_id_03')).to eq("Third is an Inactive Term")
|
27
|
+
end
|
16
28
|
end
|
17
29
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: curation_concerns
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.14.0
|
4
|
+
version: 0.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Zumwalt
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-05-
|
13
|
+
date: 2016-05-10 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: hydra-head
|
@@ -1211,9 +1211,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
1211
1211
|
version: '0'
|
1212
1212
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
1213
1213
|
requirements:
|
1214
|
-
- - "
|
1214
|
+
- - ">="
|
1215
1215
|
- !ruby/object:Gem::Version
|
1216
|
-
version:
|
1216
|
+
version: '0'
|
1217
1217
|
requirements: []
|
1218
1218
|
rubyforge_project:
|
1219
1219
|
rubygems_version: 2.5.1
|