hydra-head 3.1.0.pre1 → 3.1.0.pre2
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.
- data/Gemfile.lock +22 -22
- data/RELEASE_NOTES.textile +8 -0
- data/app/controllers/assets_controller.rb +6 -5
- data/hydra-head.gemspec +1 -1
- data/lib/generators/hydra/head_generator.rb +3 -1
- data/lib/generators/hydra/templates/config/initializers/blacklight_config.rb +7 -0
- data/lib/generators/hydra/templates/solr_conf/conf/schema.xml +7 -1
- data/lib/generators/hydra/templates/solr_conf/conf/solrconfig.xml +117 -55
- data/lib/hydra-head/version.rb +1 -1
- data/lib/hydra/access_controls_enforcement.rb +47 -5
- data/lib/railties/hydra-fixtures.rake +1 -1
- data/solr_conf/conf/schema.xml +2 -0
- data/solr_conf/conf/solrconfig.xml +116 -29
- data/test_support/features/absent_model_search_result.feature +2 -8
- data/test_support/spec/controllers/catalog_controller_spec.rb +6 -3
- data/test_support/spec/helpers/access_controls_enforcement_spec.rb +77 -0
- data/test_support/spec/models/hydra_rights_metadata_spec.rb +2 -1
- data/vendor/cache/{active-fedora-3.1.0.rc1.gem → active-fedora-3.1.1.gem} +0 -0
- data/vendor/cache/curb-0.7.16.gem +0 -0
- data/vendor/cache/factory_girl-2.1.2.gem +0 -0
- data/vendor/cache/ffi-1.0.9.gem +0 -0
- data/vendor/cache/gherkin-2.5.2.gem +0 -0
- data/vendor/cache/jettywrapper-1.0.2.gem +0 -0
- data/vendor/cache/polyglot-0.3.3.gem +0 -0
- data/vendor/cache/rdoc-3.10.gem +0 -0
- data/vendor/cache/rspec-2.6.0.gem +0 -0
- data/vendor/cache/rspec-core-2.6.4.gem +0 -0
- data/vendor/cache/rspec-expectations-2.6.0.gem +0 -0
- data/vendor/cache/rspec-mocks-2.6.0.gem +0 -0
- data/vendor/cache/rspec-rails-2.6.1.gem +0 -0
- data/vendor/cache/rubydora-0.2.3.gem +0 -0
- data/vendor/cache/stomp-1.1.10.gem +0 -0
- metadata +22 -23
- data/vendor/cache/curb-0.7.15.gem +0 -0
- data/vendor/cache/factory_girl-2.2.0.gem +0 -0
- data/vendor/cache/ffi-1.0.10.gem +0 -0
- data/vendor/cache/gherkin-2.5.4.gem +0 -0
- data/vendor/cache/jettywrapper-1.0.1.gem +0 -0
- data/vendor/cache/polyglot-0.3.2.gem +0 -0
- data/vendor/cache/rdoc-3.11.gem +0 -0
- data/vendor/cache/rspec-2.7.0.gem +0 -0
- data/vendor/cache/rspec-core-2.7.1.gem +0 -0
- data/vendor/cache/rspec-expectations-2.7.0.gem +0 -0
- data/vendor/cache/rspec-mocks-2.7.0.gem +0 -0
- data/vendor/cache/rspec-rails-2.7.0.gem +0 -0
- data/vendor/cache/rubydora-0.1.9.gem +0 -0
- data/vendor/cache/stomp-1.1.9.gem +0 -0
data/Gemfile.lock
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
hydra-head (3.
|
|
4
|
+
hydra-head (3.1.0.pre2)
|
|
5
5
|
RedCloth (= 4.2.3)
|
|
6
|
-
active-fedora (~> 3.1.
|
|
6
|
+
active-fedora (~> 3.1.1)
|
|
7
7
|
blacklight (= 3.0.0)
|
|
8
8
|
block_helpers
|
|
9
9
|
builder
|
|
@@ -55,7 +55,7 @@ GEM
|
|
|
55
55
|
rack-mount (~> 0.6.14)
|
|
56
56
|
rack-test (~> 0.5.7)
|
|
57
57
|
tzinfo (~> 0.3.23)
|
|
58
|
-
active-fedora (3.1.
|
|
58
|
+
active-fedora (3.1.1)
|
|
59
59
|
activeresource (~> 3.0.0)
|
|
60
60
|
activesupport (~> 3.0.0)
|
|
61
61
|
equivalent-xml
|
|
@@ -67,7 +67,7 @@ GEM
|
|
|
67
67
|
om (>= 1.4.3)
|
|
68
68
|
rdf
|
|
69
69
|
rdf-rdfxml
|
|
70
|
-
rubydora (
|
|
70
|
+
rubydora (= 0.2.3)
|
|
71
71
|
solr-ruby (>= 0.0.6)
|
|
72
72
|
solrizer (> 1.0.0)
|
|
73
73
|
xml-simple (>= 1.0.12)
|
|
@@ -120,7 +120,7 @@ GEM
|
|
|
120
120
|
capybara (>= 1.1.1)
|
|
121
121
|
cucumber (>= 1.1.0)
|
|
122
122
|
nokogiri (>= 1.5.0)
|
|
123
|
-
curb (0.7.
|
|
123
|
+
curb (0.7.16)
|
|
124
124
|
daemons (1.1.4)
|
|
125
125
|
database_cleaner (0.6.7)
|
|
126
126
|
diff-lcs (1.1.3)
|
|
@@ -129,11 +129,11 @@ GEM
|
|
|
129
129
|
erubis (2.6.6)
|
|
130
130
|
abstract (>= 1.0.0)
|
|
131
131
|
facets (2.8.4)
|
|
132
|
-
factory_girl (2.2
|
|
132
|
+
factory_girl (2.1.2)
|
|
133
133
|
activesupport
|
|
134
134
|
fastercsv (1.5.4)
|
|
135
|
-
ffi (1.0.
|
|
136
|
-
gherkin (2.5.
|
|
135
|
+
ffi (1.0.9)
|
|
136
|
+
gherkin (2.5.2)
|
|
137
137
|
json (>= 1.4.6)
|
|
138
138
|
gyoku (0.4.4)
|
|
139
139
|
builder (>= 2.1.2)
|
|
@@ -144,7 +144,7 @@ GEM
|
|
|
144
144
|
httpi (0.9.5)
|
|
145
145
|
rack
|
|
146
146
|
i18n (0.5.0)
|
|
147
|
-
jettywrapper (1.0.
|
|
147
|
+
jettywrapper (1.0.2)
|
|
148
148
|
activesupport (>= 3.0.0)
|
|
149
149
|
childprocess
|
|
150
150
|
i18n
|
|
@@ -178,7 +178,7 @@ GEM
|
|
|
178
178
|
om (1.4.3)
|
|
179
179
|
mediashelf-loggable
|
|
180
180
|
nokogiri (>= 1.4.2)
|
|
181
|
-
polyglot (0.3.
|
|
181
|
+
polyglot (0.3.3)
|
|
182
182
|
rack (1.2.4)
|
|
183
183
|
rack-mount (0.6.14)
|
|
184
184
|
rack (>= 1.0.0)
|
|
@@ -205,7 +205,7 @@ GEM
|
|
|
205
205
|
rdf-rdfxml (0.3.5)
|
|
206
206
|
nokogiri (>= 1.4.4)
|
|
207
207
|
rdf (>= 0.3.4)
|
|
208
|
-
rdoc (3.
|
|
208
|
+
rdoc (3.10)
|
|
209
209
|
json (~> 1.4)
|
|
210
210
|
rest-client (1.6.7)
|
|
211
211
|
mime-types (>= 1.16)
|
|
@@ -213,25 +213,25 @@ GEM
|
|
|
213
213
|
builder (>= 2.1.2)
|
|
214
214
|
rsolr-ext (1.0.3)
|
|
215
215
|
rsolr (>= 1.0.2)
|
|
216
|
-
rspec (2.
|
|
217
|
-
rspec-core (~> 2.
|
|
218
|
-
rspec-expectations (~> 2.
|
|
219
|
-
rspec-mocks (~> 2.
|
|
220
|
-
rspec-core (2.
|
|
221
|
-
rspec-expectations (2.
|
|
216
|
+
rspec (2.6.0)
|
|
217
|
+
rspec-core (~> 2.6.0)
|
|
218
|
+
rspec-expectations (~> 2.6.0)
|
|
219
|
+
rspec-mocks (~> 2.6.0)
|
|
220
|
+
rspec-core (2.6.4)
|
|
221
|
+
rspec-expectations (2.6.0)
|
|
222
222
|
diff-lcs (~> 1.1.2)
|
|
223
|
-
rspec-mocks (2.
|
|
224
|
-
rspec-rails (2.
|
|
223
|
+
rspec-mocks (2.6.0)
|
|
224
|
+
rspec-rails (2.6.1)
|
|
225
225
|
actionpack (~> 3.0)
|
|
226
226
|
activesupport (~> 3.0)
|
|
227
227
|
railties (~> 3.0)
|
|
228
|
-
rspec (~> 2.
|
|
228
|
+
rspec (~> 2.6.0)
|
|
229
229
|
ruby-debug (0.10.4)
|
|
230
230
|
columnize (>= 0.1)
|
|
231
231
|
ruby-debug-base (~> 0.10.4.0)
|
|
232
232
|
ruby-debug-base (0.10.4)
|
|
233
233
|
linecache (>= 0.3)
|
|
234
|
-
rubydora (0.
|
|
234
|
+
rubydora (0.2.3)
|
|
235
235
|
activemodel
|
|
236
236
|
activesupport
|
|
237
237
|
fastercsv
|
|
@@ -269,7 +269,7 @@ GEM
|
|
|
269
269
|
rsolr
|
|
270
270
|
solr-ruby (>= 0.0.6)
|
|
271
271
|
solrizer (>= 1.0.0)
|
|
272
|
-
stomp (1.1.
|
|
272
|
+
stomp (1.1.10)
|
|
273
273
|
term-ansicolor (1.0.7)
|
|
274
274
|
thor (0.14.6)
|
|
275
275
|
treetop (1.4.10)
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
h2. 3.0.0
|
|
2
|
+
|
|
3
|
+
If you have been testing out the Release Candidates, you need to add this line to your CatalogController:
|
|
4
|
+
|
|
5
|
+
<pre>
|
|
6
|
+
# This filters out objects that you want to exclude from search results. By default, it filters out FileAssets
|
|
7
|
+
CatalogController.solr_search_params_logic << :exclude_unwanted_models
|
|
8
|
+
</pre>
|
|
@@ -12,6 +12,7 @@ class AssetsController < ApplicationController
|
|
|
12
12
|
helper :hydra
|
|
13
13
|
|
|
14
14
|
before_filter :search_session, :history_session
|
|
15
|
+
before_filter :load_document, :only => :update # allows other filters to operate on the document before the update method is called
|
|
15
16
|
before_filter :require_solr
|
|
16
17
|
|
|
17
18
|
# need to include this after the :require_solr/fedora before filters because of the before filter that the workflow provides.
|
|
@@ -54,8 +55,6 @@ class AssetsController < ApplicationController
|
|
|
54
55
|
# @example Sets the 1st and 2nd "medium" values on the descMetadata datastream in the _PID_ document, overwriting any existing values.
|
|
55
56
|
# put :update, :id=>"_PID_", "asset"=>{"descMetadata"=>{"medium"=>{"0"=>"Paper Document", "1"=>"Image"}}
|
|
56
57
|
def update
|
|
57
|
-
@document = load_document_from_params
|
|
58
|
-
|
|
59
58
|
logger.debug("attributes submitted: #{@sanitized_params.inspect}")
|
|
60
59
|
|
|
61
60
|
@response = update_document(@document, @sanitized_params)
|
|
@@ -114,10 +113,12 @@ class AssetsController < ApplicationController
|
|
|
114
113
|
# This is a method to simply remove the item from SOLR but keep the object in fedora.
|
|
115
114
|
alias_method :withdraw, :destroy
|
|
116
115
|
|
|
117
|
-
#def withdraw
|
|
118
|
-
#
|
|
119
|
-
#end
|
|
120
116
|
protected
|
|
117
|
+
|
|
118
|
+
def load_document
|
|
119
|
+
@document = load_document_from_params
|
|
120
|
+
end
|
|
121
|
+
|
|
121
122
|
|
|
122
123
|
def mods_assets_update_validation
|
|
123
124
|
desc_metadata = params[:asset][:descMetadata]
|
data/hydra-head.gemspec
CHANGED
|
@@ -14,7 +14,7 @@ Gem::Specification.new do |s|
|
|
|
14
14
|
|
|
15
15
|
s.add_dependency "rails", '~> 3.0.10'
|
|
16
16
|
s.add_dependency "blacklight", '3.0.0'
|
|
17
|
-
s.add_dependency "active-fedora", '~>3.1.
|
|
17
|
+
s.add_dependency "active-fedora", '~>3.1.1'
|
|
18
18
|
s.add_dependency 'builder'
|
|
19
19
|
s.add_dependency 'columnize'
|
|
20
20
|
s.add_dependency 'crack'
|
|
@@ -119,7 +119,9 @@ EOF
|
|
|
119
119
|
"\n before_filter :enforce_access_controls" +
|
|
120
120
|
"\n before_filter :enforce_viewing_context_for_show_requests, :only=>:show" +
|
|
121
121
|
"\n # This applies appropriate access controls to all solr queries" +
|
|
122
|
-
"\n CatalogController.solr_search_params_logic << :add_access_controls_to_solr_params"
|
|
122
|
+
"\n CatalogController.solr_search_params_logic << :add_access_controls_to_solr_params" +
|
|
123
|
+
"\n # This filters out objects that you want to exclude from search results, like FileAssets" +
|
|
124
|
+
"\n CatalogController.solr_search_params_logic << :exclude_unwanted_models"
|
|
123
125
|
end
|
|
124
126
|
else
|
|
125
127
|
puts " \e[31mFailure\e[0m Could not find #{model_name.underscore}.rb. To add Hydra behaviors to your Blacklight::Catalog Controllers, you must include the Hydra::Controller module in the Controller class definition. See the Hydra::Controller section in the Hydra API Docs for more info."
|
|
@@ -42,6 +42,13 @@ Blacklight.configure(:shared) do |config|
|
|
|
42
42
|
# TODO: Reorganize facet data structures supplied in config to make simpler
|
|
43
43
|
# for human reading/writing, kind of like search_fields. Eg,
|
|
44
44
|
# config[:facet] << {:field_name => "format", :label => "Format", :limit => 10}
|
|
45
|
+
#
|
|
46
|
+
# Hydra uses active_fedora_model_s by default for displaying Format because that field is automatically
|
|
47
|
+
# populated by active-fedora from your RELS-EXT. You can change this to anything you want to use though.
|
|
48
|
+
# for example, the sample Hydra::ModsAsset Datastream Class adds object_type_facet = "Article" in its to_solr method.\
|
|
49
|
+
# You could use that as the format field instead of active_fedora_model_s to have a more nicer value displayed.
|
|
50
|
+
#
|
|
51
|
+
#
|
|
45
52
|
config[:facet] = {
|
|
46
53
|
:field_names => (facet_fields = [
|
|
47
54
|
"object_type_facet",
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8" ?>
|
|
2
|
+
<!--
|
|
3
|
+
IMPORTANT
|
|
4
|
+
This copy of the solr schema is only used in the context of testing hydra-head. If you want to make changes available to individual hydra heads, you must apply them to the template in lib/generators/hydra/templates/solr_config
|
|
5
|
+
-->
|
|
2
6
|
<schema name="Hydra" version="1.1">
|
|
3
7
|
<!-- For complete comments from the Solr project example schema.xml:
|
|
4
8
|
http://svn.apache.org/viewvc/lucene/dev/trunk/solr/example/solr/conf/schema.xml?view=markup
|
|
@@ -91,7 +95,7 @@
|
|
|
91
95
|
<field name="format" type="string" indexed="true" stored="true"/>
|
|
92
96
|
<!-- pub_date is assumed by Blacklight's default configuration, so we must define it here to avoid errors -->
|
|
93
97
|
<field name="pub_date" type="string" indexed="true" stored="true" multiValued="true"/>
|
|
94
|
-
|
|
98
|
+
|
|
95
99
|
<dynamicField name="*_i" type="sint" indexed="true" stored="true"/>
|
|
96
100
|
<dynamicField name="*_s" type="string" indexed="true" stored="true" multiValued="true"/>
|
|
97
101
|
<dynamicField name="*_l" type="slong" indexed="true" stored="true"/>
|
|
@@ -114,5 +118,7 @@
|
|
|
114
118
|
<defaultSearchField>text</defaultSearchField>
|
|
115
119
|
<solrQueryParser defaultOperator="AND" />
|
|
116
120
|
<copyField source="*_facet" dest="text" />
|
|
121
|
+
<copyField source="*_t" dest="text" />
|
|
122
|
+
<copyField source="*_s" dest="text" />
|
|
117
123
|
|
|
118
124
|
</schema>
|
|
@@ -82,51 +82,121 @@
|
|
|
82
82
|
</lst>
|
|
83
83
|
</requestHandler>
|
|
84
84
|
|
|
85
|
-
<!--
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
85
|
+
<!-- Searching ("All Fields") -->
|
|
86
|
+
<requestHandler name="search" class="solr.SearchHandler" default="true">
|
|
87
|
+
<lst name="defaults">
|
|
88
|
+
<str name="defType">dismax</str>
|
|
89
|
+
<str name="echoParams">explicit</str>
|
|
90
|
+
<str name="q.alt">*:*</str>
|
|
91
|
+
<str name="mm">2<-1 5<-2 6<90%</str>
|
|
92
|
+
<!-- this qf and pf are used by default, if not otherwise specified by
|
|
93
|
+
client. The default blacklight_config will use these for the
|
|
94
|
+
"keywords" search. See the author_qf/author_pf, title_qf, etc
|
|
95
|
+
below, which the default blacklight_config will specify for
|
|
96
|
+
those searches. You may also be interested in:
|
|
97
|
+
http://wiki.apache.org/solr/LocalParams
|
|
98
|
+
-->
|
|
99
|
+
<str name="qf">
|
|
100
|
+
id
|
|
101
|
+
title_t^25000
|
|
102
|
+
text
|
|
103
|
+
active_fedora_model_s
|
|
104
|
+
object_type_facet
|
|
105
|
+
</str>
|
|
106
|
+
<str name="pf">
|
|
107
|
+
id
|
|
108
|
+
title_t^250000
|
|
109
|
+
text^10
|
|
110
|
+
active_fedora_model_s
|
|
111
|
+
object_type_facet
|
|
112
|
+
</str>
|
|
113
|
+
<str name="author_qf">
|
|
114
|
+
author_unstem_search^200
|
|
115
|
+
author_addl_unstem_search^50
|
|
116
|
+
author_t^20
|
|
117
|
+
author_addl_t
|
|
118
|
+
</str>
|
|
119
|
+
<str name="author_pf">
|
|
120
|
+
author_unstem_search^2000
|
|
121
|
+
author_addl_unstem_search^500
|
|
122
|
+
author_t^200
|
|
123
|
+
author_addl_t^10
|
|
124
|
+
</str>
|
|
125
|
+
<str name="title_qf">
|
|
126
|
+
title_unstem_search^50000
|
|
127
|
+
subtitle_unstem_search^25000
|
|
128
|
+
title_addl_unstem_search^10000
|
|
129
|
+
title_t^5000
|
|
130
|
+
subtitle_t^2500
|
|
131
|
+
title_addl_t^100
|
|
132
|
+
title_added_entry_unstem_search^50
|
|
133
|
+
title_added_entry_t^10
|
|
134
|
+
title_series_unstem_search^5
|
|
135
|
+
title_series_t
|
|
136
|
+
</str>
|
|
137
|
+
<str name="title_pf">
|
|
138
|
+
title_unstem_search^500000
|
|
139
|
+
subtitle_unstem_search^250000
|
|
140
|
+
title_addl_unstem_search^100000
|
|
141
|
+
title_t^50000
|
|
142
|
+
subtitle_t^25000
|
|
143
|
+
title_addl_t^1000
|
|
144
|
+
title_added_entry_unstem_search^500
|
|
145
|
+
title_added_entry_t^100
|
|
146
|
+
title_series_t^50
|
|
147
|
+
title_series_unstem_search^10
|
|
148
|
+
</str>
|
|
149
|
+
<str name="subject_qf">
|
|
150
|
+
subject_topic_unstem_search^200
|
|
151
|
+
subject_unstem_search^125
|
|
152
|
+
subject_topic_facet^100
|
|
153
|
+
subject_t^50
|
|
154
|
+
subject_addl_unstem_search^10
|
|
155
|
+
subject_addl_t
|
|
156
|
+
</str>
|
|
157
|
+
<str name="subject_pf">
|
|
158
|
+
subject_topic_unstem_search^2000
|
|
159
|
+
subject_unstem_search^1250
|
|
160
|
+
subject_t^1000
|
|
161
|
+
subject_topic_facet^500
|
|
162
|
+
subject_addl_unstem_search^100
|
|
163
|
+
subject_addl_t^10
|
|
164
|
+
</str>
|
|
90
165
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
object_type_facet, department_facet, peer_reviewed_facet
|
|
126
|
-
</str>
|
|
127
|
-
</lst>
|
|
128
|
-
</requestHandler>
|
|
129
|
-
|
|
166
|
+
|
|
167
|
+
<int name="ps">3</int>
|
|
168
|
+
<float name="tie">0.01</float>
|
|
169
|
+
|
|
170
|
+
<!-- NOT using marc_display because it is large and will slow things down for search results -->
|
|
171
|
+
<str name="fl">
|
|
172
|
+
*,score
|
|
173
|
+
</str>
|
|
174
|
+
|
|
175
|
+
<str name="facet">true</str>
|
|
176
|
+
<str name="facet.mincount">1</str>
|
|
177
|
+
<str name="facet.limit">10</str>
|
|
178
|
+
<str name="facet.field">format</str>
|
|
179
|
+
<str name="facet.field">lc_1letter_facet</str>
|
|
180
|
+
<str name="facet.field">lc_alpha_facet</str>
|
|
181
|
+
<str name="facet.field">lc_b4cutter_facet</str>
|
|
182
|
+
<str name="facet.field">language_facet</str>
|
|
183
|
+
<str name="facet.field">pub_date</str>
|
|
184
|
+
<str name="facet.field">subject_era_facet</str>
|
|
185
|
+
<str name="facet.field">subject_geo_facet</str>
|
|
186
|
+
<str name="facet.field">subject_topic_facet</str>
|
|
187
|
+
|
|
188
|
+
<str name="spellcheck">true</str>
|
|
189
|
+
<str name="spellcheck.dictionary">default</str>
|
|
190
|
+
<str name="spellcheck.onlyMorePopular">true</str>
|
|
191
|
+
<str name="spellcheck.extendedResults">true</str>
|
|
192
|
+
<str name="spellcheck.collate">false</str>
|
|
193
|
+
<str name="spellcheck.count">5</str>
|
|
194
|
+
</lst>
|
|
195
|
+
<arr name="last-components">
|
|
196
|
+
<str>spellcheck</str>
|
|
197
|
+
</arr>
|
|
198
|
+
</requestHandler>
|
|
199
|
+
|
|
130
200
|
<requestHandler name="public_search" class="solr.SearchHandler" >
|
|
131
201
|
<lst name="defaults">
|
|
132
202
|
<!-- Making defType lucene to exclude file assets -->
|
|
@@ -137,6 +207,8 @@
|
|
|
137
207
|
<!-- dismax params -->
|
|
138
208
|
<str name="mm"> 2<-1 5<-2 6<90% </str>
|
|
139
209
|
<str name="q.alt">*:*</str>
|
|
210
|
+
<str name="qf">id^0.8 id_t^0.8 format text^0.3 journal_issn_t</str>
|
|
211
|
+
<str name="pf">id^0.9 id_t^0.9 text^0.5 journal_issn_t</str>
|
|
140
212
|
<str name="qf_dismax">id^0.8 id_t^0.8 format text^0.3</str>
|
|
141
213
|
<str name="pf_dismax">id^0.9 id_t^0.9 text^0.5</str>
|
|
142
214
|
<int name="ps">100</int>
|
|
@@ -146,17 +218,7 @@
|
|
|
146
218
|
<str name="facet.mincount">1</str>
|
|
147
219
|
<str name="echoParams">explicit</str>
|
|
148
220
|
<str name="fl">
|
|
149
|
-
|
|
150
|
-
person_0_role_t,person_1_role_t,person_2_role_t,person_3_role_t,person_4_role_t,person_5_role_t,person_6_role_t,person_7_role_t,person_8_role_t,person_9_role_t,
|
|
151
|
-
person_0_first_name_t,person_1_first_name_t,person_2_first_name_t,person_3_first_name_t,person_4_first_name_t,person_5_first_name_t,person_6_first_name_t,person_7_first_name_t,person_8_first_name_t,person_9_first_name_t,
|
|
152
|
-
person_0_last_name_t,person_1_last_name_t,person_2_last_name_t,person_3_last_name_t,person_4_last_name_t,person_5_last_name_t,person_6_last_name_t,person_7_last_name_t,person_8_last_name_t,person_9_last_name_t,depositor_t,
|
|
153
|
-
|
|
154
|
-
journal_title_info_t, journal_title_info_main_title_t, journal_issue_publication_date_t, journal_issue_pages_start_t, journal_issue_pages_end_t, journal_issue_volume_t, journal_issue_start_page_t, journal_issue_end_page_t, abstract_t,
|
|
155
|
-
person_0_institution_t,person_1_institution_t,person_2_institution_t,person_3_institution_t,person_4_institution_t,person_5_institution_t,person_institution_role_t,
|
|
156
|
-
person_7_institution_t,person_8_institution_t,person_9_institution_t,
|
|
157
|
-
mods_gps_t, mods_region_t, mods_site_t, mods_ecosystem_t,
|
|
158
|
-
mods_timespan_start_t, mods_timespan_end_t, description_t, mods_title_info_t,mods_0_title_info_0_main_title_t, embargo_release_date_dt, note_t,
|
|
159
|
-
object_type_facet, department_facet, peer_reviewed_facet
|
|
221
|
+
*,score
|
|
160
222
|
</str>
|
|
161
223
|
</lst>
|
|
162
224
|
</requestHandler>
|
data/lib/hydra-head/version.rb
CHANGED
|
@@ -172,13 +172,46 @@ module Hydra::AccessControlsEnforcement
|
|
|
172
172
|
# @param solr_parameters the current solr parameters
|
|
173
173
|
# @param user_parameters the current user-subitted parameters
|
|
174
174
|
def apply_gated_discovery(solr_parameters, user_parameters)
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
175
|
+
solr_parameters[:fq] ||= []
|
|
176
|
+
# Grant access to public content
|
|
177
|
+
permission_types = ["edit","discover","read"]
|
|
178
|
+
user_access_filters = []
|
|
179
|
+
|
|
180
|
+
permission_types.each do |type|
|
|
181
|
+
user_access_filters << "#{type}_access_group_t:public"
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
# Grant access based on user id & role
|
|
185
|
+
unless current_user.nil?
|
|
186
|
+
# for roles
|
|
187
|
+
RoleMapper.roles(current_user.login).each_with_index do |role, i|
|
|
188
|
+
permission_types.each do |type|
|
|
189
|
+
user_access_filters << "#{type}_access_group_t:#{role}"
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
# for individual person access
|
|
193
|
+
permission_types.each do |type|
|
|
194
|
+
user_access_filters << "#{type}_access_person_t:#{current_user.login}"
|
|
195
|
+
end
|
|
196
|
+
if current_user.is_being_superuser?(session)
|
|
197
|
+
permission_types.each do |type|
|
|
198
|
+
user_access_filters << "#{type}_access_person_t:[* TO *]"
|
|
199
|
+
end
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
# Enforcing Embargo at Query time has been disabled.
|
|
203
|
+
# If you want to do this, set up your own solr_search_params before_filter that injects the appropriate :fq constraints for a field that expresses your objects' embargo status.
|
|
204
|
+
#
|
|
205
|
+
# include docs in results if the embargo date is NOT in the future OR if the current user is depositor
|
|
206
|
+
# embargo_query = "(NOT embargo_release_date_dt:[NOW TO *]) OR depositor_t:#{current_user.login}"
|
|
207
|
+
# embargo_query = "(NOT embargo_release_date_dt:[NOW TO *]) OR (embargo_release_date_dt:[NOW TO *] AND depositor_t:#{current_user.login}) AND NOT (NOT depositor_t:#{current_user.login} AND embargo_release_date_dt:[NOW TO *])"
|
|
208
|
+
# solr_parameters[:fq] << embargo_query
|
|
209
|
+
end
|
|
210
|
+
solr_parameters[:fq] << user_access_filters.join(" OR ")
|
|
211
|
+
logger.debug("Solr parameters: #{ solr_parameters.inspect }")
|
|
180
212
|
end
|
|
181
213
|
|
|
214
|
+
|
|
182
215
|
# proxy for {enforce_index_permissions}
|
|
183
216
|
def enforce_search_permissions
|
|
184
217
|
enforce_index_permissions
|
|
@@ -188,10 +221,19 @@ module Hydra::AccessControlsEnforcement
|
|
|
188
221
|
def enforce_read_permissions
|
|
189
222
|
enforce_show_permissions
|
|
190
223
|
end
|
|
224
|
+
|
|
225
|
+
# This filters out objects that you want to exclude from search results. By default it only excludes FileAssets
|
|
226
|
+
# @param solr_parameters the current solr parameters
|
|
227
|
+
# @param user_parameters the current user-subitted parameters
|
|
228
|
+
def exclude_unwanted_models(solr_parameters, user_parameters)
|
|
229
|
+
solr_parameters[:fq] ||= []
|
|
230
|
+
solr_parameters[:fq] << "-has_model_s:\"info:fedora/afmodel:FileAsset\""
|
|
231
|
+
end
|
|
191
232
|
|
|
192
233
|
# Build the lucene query that performs gated discovery based on Hydra rightsMetadata information in Solr
|
|
193
234
|
# @param [String] user_query the user's original query request that will be wrapped in access controls
|
|
194
235
|
def build_lucene_query(user_query)
|
|
236
|
+
logger.warn("DEPRECATED: build_lucene_query has been deprecated. Recommended convention is to use blacklight's dismax search requestHandler (not lucene) and filter queries with :fq solr parameters. See Hydra::AccessControlsEnforcement#apply_gated_discovery and Hydra::AccessControlsEnforcement#exclude_unwanted_models")
|
|
195
237
|
q = ""
|
|
196
238
|
# start query of with user supplied query term
|
|
197
239
|
q << "_query_:\"{!dismax qf=$qf_dismax pf=$pf_dismax}#{user_query}\" AND " if user_query
|
|
@@ -25,7 +25,7 @@ namespace :hydra do
|
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
desc "Delete the object identified by pid. Example: rake hydra:delete pid=demo:12"
|
|
28
|
-
task :delete => :
|
|
28
|
+
task :delete => :environment do
|
|
29
29
|
# If a destination url has been provided, attampt to export from the fedora repository there.
|
|
30
30
|
if ENV["destination"]
|
|
31
31
|
Fedora::Repository.register(ENV["destination"])
|
data/solr_conf/conf/schema.xml
CHANGED
|
@@ -118,5 +118,7 @@ This copy of the solr schema is only used in the context of testing hydra-head.
|
|
|
118
118
|
<defaultSearchField>text</defaultSearchField>
|
|
119
119
|
<solrQueryParser defaultOperator="AND" />
|
|
120
120
|
<copyField source="*_facet" dest="text" />
|
|
121
|
+
<copyField source="*_t" dest="text" />
|
|
122
|
+
<copyField source="*_s" dest="text" />
|
|
121
123
|
|
|
122
124
|
</schema>
|
|
@@ -82,36 +82,121 @@
|
|
|
82
82
|
</lst>
|
|
83
83
|
</requestHandler>
|
|
84
84
|
|
|
85
|
-
<!--
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
85
|
+
<!-- Searching ("All Fields") -->
|
|
86
|
+
<requestHandler name="search" class="solr.SearchHandler" default="true">
|
|
87
|
+
<lst name="defaults">
|
|
88
|
+
<str name="defType">dismax</str>
|
|
89
|
+
<str name="echoParams">explicit</str>
|
|
90
|
+
<str name="q.alt">*:*</str>
|
|
91
|
+
<str name="mm">2<-1 5<-2 6<90%</str>
|
|
92
|
+
<!-- this qf and pf are used by default, if not otherwise specified by
|
|
93
|
+
client. The default blacklight_config will use these for the
|
|
94
|
+
"keywords" search. See the author_qf/author_pf, title_qf, etc
|
|
95
|
+
below, which the default blacklight_config will specify for
|
|
96
|
+
those searches. You may also be interested in:
|
|
97
|
+
http://wiki.apache.org/solr/LocalParams
|
|
98
|
+
-->
|
|
99
|
+
<str name="qf">
|
|
100
|
+
id
|
|
101
|
+
title_t^25000
|
|
102
|
+
text
|
|
103
|
+
active_fedora_model_s
|
|
104
|
+
object_type_facet
|
|
105
|
+
</str>
|
|
106
|
+
<str name="pf">
|
|
107
|
+
id
|
|
108
|
+
title_t^250000
|
|
109
|
+
text^10
|
|
110
|
+
active_fedora_model_s
|
|
111
|
+
object_type_facet
|
|
112
|
+
</str>
|
|
113
|
+
<str name="author_qf">
|
|
114
|
+
author_unstem_search^200
|
|
115
|
+
author_addl_unstem_search^50
|
|
116
|
+
author_t^20
|
|
117
|
+
author_addl_t
|
|
118
|
+
</str>
|
|
119
|
+
<str name="author_pf">
|
|
120
|
+
author_unstem_search^2000
|
|
121
|
+
author_addl_unstem_search^500
|
|
122
|
+
author_t^200
|
|
123
|
+
author_addl_t^10
|
|
124
|
+
</str>
|
|
125
|
+
<str name="title_qf">
|
|
126
|
+
title_unstem_search^50000
|
|
127
|
+
subtitle_unstem_search^25000
|
|
128
|
+
title_addl_unstem_search^10000
|
|
129
|
+
title_t^5000
|
|
130
|
+
subtitle_t^2500
|
|
131
|
+
title_addl_t^100
|
|
132
|
+
title_added_entry_unstem_search^50
|
|
133
|
+
title_added_entry_t^10
|
|
134
|
+
title_series_unstem_search^5
|
|
135
|
+
title_series_t
|
|
136
|
+
</str>
|
|
137
|
+
<str name="title_pf">
|
|
138
|
+
title_unstem_search^500000
|
|
139
|
+
subtitle_unstem_search^250000
|
|
140
|
+
title_addl_unstem_search^100000
|
|
141
|
+
title_t^50000
|
|
142
|
+
subtitle_t^25000
|
|
143
|
+
title_addl_t^1000
|
|
144
|
+
title_added_entry_unstem_search^500
|
|
145
|
+
title_added_entry_t^100
|
|
146
|
+
title_series_t^50
|
|
147
|
+
title_series_unstem_search^10
|
|
148
|
+
</str>
|
|
149
|
+
<str name="subject_qf">
|
|
150
|
+
subject_topic_unstem_search^200
|
|
151
|
+
subject_unstem_search^125
|
|
152
|
+
subject_topic_facet^100
|
|
153
|
+
subject_t^50
|
|
154
|
+
subject_addl_unstem_search^10
|
|
155
|
+
subject_addl_t
|
|
156
|
+
</str>
|
|
157
|
+
<str name="subject_pf">
|
|
158
|
+
subject_topic_unstem_search^2000
|
|
159
|
+
subject_unstem_search^1250
|
|
160
|
+
subject_t^1000
|
|
161
|
+
subject_topic_facet^500
|
|
162
|
+
subject_addl_unstem_search^100
|
|
163
|
+
subject_addl_t^10
|
|
164
|
+
</str>
|
|
90
165
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
166
|
+
|
|
167
|
+
<int name="ps">3</int>
|
|
168
|
+
<float name="tie">0.01</float>
|
|
169
|
+
|
|
170
|
+
<!-- NOT using marc_display because it is large and will slow things down for search results -->
|
|
171
|
+
<str name="fl">
|
|
172
|
+
*,score
|
|
173
|
+
</str>
|
|
174
|
+
|
|
175
|
+
<str name="facet">true</str>
|
|
176
|
+
<str name="facet.mincount">1</str>
|
|
177
|
+
<str name="facet.limit">10</str>
|
|
178
|
+
<str name="facet.field">format</str>
|
|
179
|
+
<str name="facet.field">lc_1letter_facet</str>
|
|
180
|
+
<str name="facet.field">lc_alpha_facet</str>
|
|
181
|
+
<str name="facet.field">lc_b4cutter_facet</str>
|
|
182
|
+
<str name="facet.field">language_facet</str>
|
|
183
|
+
<str name="facet.field">pub_date</str>
|
|
184
|
+
<str name="facet.field">subject_era_facet</str>
|
|
185
|
+
<str name="facet.field">subject_geo_facet</str>
|
|
186
|
+
<str name="facet.field">subject_topic_facet</str>
|
|
187
|
+
|
|
188
|
+
<str name="spellcheck">true</str>
|
|
189
|
+
<str name="spellcheck.dictionary">default</str>
|
|
190
|
+
<str name="spellcheck.onlyMorePopular">true</str>
|
|
191
|
+
<str name="spellcheck.extendedResults">true</str>
|
|
192
|
+
<str name="spellcheck.collate">false</str>
|
|
193
|
+
<str name="spellcheck.count">5</str>
|
|
194
|
+
</lst>
|
|
195
|
+
<arr name="last-components">
|
|
196
|
+
<str>spellcheck</str>
|
|
197
|
+
</arr>
|
|
198
|
+
</requestHandler>
|
|
199
|
+
|
|
115
200
|
<requestHandler name="public_search" class="solr.SearchHandler" >
|
|
116
201
|
<lst name="defaults">
|
|
117
202
|
<!-- Making defType lucene to exclude file assets -->
|
|
@@ -122,6 +207,8 @@
|
|
|
122
207
|
<!-- dismax params -->
|
|
123
208
|
<str name="mm"> 2<-1 5<-2 6<90% </str>
|
|
124
209
|
<str name="q.alt">*:*</str>
|
|
210
|
+
<str name="qf">id^0.8 id_t^0.8 format text^0.3 journal_issn_t</str>
|
|
211
|
+
<str name="pf">id^0.9 id_t^0.9 text^0.5 journal_issn_t</str>
|
|
125
212
|
<str name="qf_dismax">id^0.8 id_t^0.8 format text^0.3</str>
|
|
126
213
|
<str name="pf_dismax">id^0.9 id_t^0.9 text^0.5</str>
|
|
127
214
|
<int name="ps">100</int>
|
|
@@ -1,14 +1,8 @@
|
|
|
1
1
|
Feature: Objects Without Models - Search Results
|
|
2
2
|
I want to see appropriate information in search results for objects without an (active)fedora model
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
And I am on the home page
|
|
7
|
-
And I fill in "q" with "test"
|
|
8
|
-
When I press "submit"
|
|
9
|
-
Then I should see a link to "the show document page for hydra:test_no_model"
|
|
10
|
-
|
|
11
|
-
# you can't see this object unless you are an editor
|
|
4
|
+
# Objects without a model, are not ever displayed because they don't have rightsMetadata
|
|
5
|
+
|
|
12
6
|
Scenario: html5 valid - unauthenticated
|
|
13
7
|
When I am on the home page
|
|
14
8
|
And I fill in "q" with "test"
|
|
@@ -60,8 +60,10 @@ describe CatalogController do
|
|
|
60
60
|
|
|
61
61
|
describe "access controls" do
|
|
62
62
|
before(:all) do
|
|
63
|
-
@public_only_results = Blacklight.solr.find Hash[:
|
|
64
|
-
@
|
|
63
|
+
@public_only_results = Blacklight.solr.find Hash[:fq=>"access_t:public"]
|
|
64
|
+
# @public_only_results = Blacklight.solr.find Hash[:phrases=>{:access_t=>"public"}]
|
|
65
|
+
# @private_only_results = Blacklight.solr.find Hash[:phrases=>{:access_t=>"private"}]
|
|
66
|
+
@private_only_results = Blacklight.solr.find Hash[:fq=>"access_t:private"]
|
|
65
67
|
end
|
|
66
68
|
|
|
67
69
|
it "should only return public documents if role does not have permissions" do
|
|
@@ -72,7 +74,8 @@ describe CatalogController do
|
|
|
72
74
|
it "should return all documents if role does have permissions" do
|
|
73
75
|
User.any_instance.stubs(:login).returns("BigWig")
|
|
74
76
|
mock_user = User.new
|
|
75
|
-
session[:superuser_mode] = true
|
|
77
|
+
# session[:superuser_mode] = true
|
|
78
|
+
mock_user.stubs(:is_being_superuser?).returns(true)
|
|
76
79
|
controller.stubs(:current_user).returns(mock_user)
|
|
77
80
|
get :index
|
|
78
81
|
assigns(:document_list).count.should > @public_only_results.docs.count
|
|
@@ -2,6 +2,83 @@
|
|
|
2
2
|
require File.expand_path( File.join( File.dirname(__FILE__),'..','spec_helper') )
|
|
3
3
|
|
|
4
4
|
describe Hydra::AccessControlsEnforcement do
|
|
5
|
+
|
|
6
|
+
describe "apply_gated_discovery" do
|
|
7
|
+
before(:each) do
|
|
8
|
+
@stub_user = User.new :email=>'archivist1@example.com'
|
|
9
|
+
@stub_user.stubs(:is_being_superuser?).returns false
|
|
10
|
+
@stub_user.stubs(:login).returns "fred"
|
|
11
|
+
RoleMapper.stubs(:roles).with(@stub_user.login).returns(["archivist","researcher"])
|
|
12
|
+
helper.stubs(:current_user).returns(@stub_user)
|
|
13
|
+
@solr_parameters = {}
|
|
14
|
+
@user_parameters = {}
|
|
15
|
+
end
|
|
16
|
+
it "should set query fields for the user id checking against the discover, access, read fields" do
|
|
17
|
+
helper.send(:apply_gated_discovery, @solr_parameters, @user_parameters)
|
|
18
|
+
["discover","edit","read"].each do |type|
|
|
19
|
+
@solr_parameters[:fq].first.should match(/#{type}_access_person_t\:#{@stub_user.login}/)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
it "should set query fields for all roles the user is a member of checking against the discover, access, read fields" do
|
|
23
|
+
helper.send(:apply_gated_discovery, @solr_parameters, @user_parameters)
|
|
24
|
+
["discover","edit","read"].each do |type|
|
|
25
|
+
@solr_parameters[:fq].first.should match(/#{type}_access_group_t\:archivist/)
|
|
26
|
+
@solr_parameters[:fq].first.should match(/#{type}_access_group_t\:researcher/)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
# it "should filter out any content whose embargo date is in the future" do
|
|
30
|
+
# helper.send(:apply_gated_discovery, @solr_parameters, @user_parameters)
|
|
31
|
+
# @solr_parameters[:fq].should include("-embargo_release_date_dt:[NOW TO *]")
|
|
32
|
+
# end
|
|
33
|
+
it "should allow content owners access to their embargoed content" do
|
|
34
|
+
pending
|
|
35
|
+
helper.send(:apply_gated_discovery, @solr_parameters, @user_parameters)
|
|
36
|
+
@solr_parameters[:fq].should include("(NOT embargo_release_date_dt:[NOW TO *]) OR depositor_t:#{@stub_user.login}")
|
|
37
|
+
|
|
38
|
+
# @solr_parameters[:fq].should include("embargo_release_date_dt:[NOW TO *] AND depositor_t:#{current_user.login}) AND NOT (NOT depositor_t:#{current_user.login} AND embargo_release_date_dt:[NOW TO *]")
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
describe "for superusers" do
|
|
42
|
+
it "should return superuser access level" do
|
|
43
|
+
stub_user = User.new
|
|
44
|
+
stub_user.stubs(:login).returns "suzie"
|
|
45
|
+
stub_user.stubs(:is_being_superuser?).returns true
|
|
46
|
+
RoleMapper.stubs(:roles).with(stub_user.login).returns(["archivist","researcher"])
|
|
47
|
+
helper.stubs(:current_user).returns(stub_user)
|
|
48
|
+
helper.send(:apply_gated_discovery, @solr_parameters, @user_parameters)
|
|
49
|
+
["discover","edit","read"].each do |type|
|
|
50
|
+
@solr_parameters[:fq].first.should match(/#{type}_access_person_t\:\[\* TO \*\]/)
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
it "should not return superuser access to non-superusers" do
|
|
54
|
+
stub_user = User.new
|
|
55
|
+
stub_user.stubs(:login).returns "suzie"
|
|
56
|
+
stub_user.stubs(:is_being_superuser?).returns false
|
|
57
|
+
RoleMapper.stubs(:roles).with(stub_user.login).returns(["archivist","researcher"])
|
|
58
|
+
helper.stubs(:current_user).returns(stub_user)
|
|
59
|
+
helper.send(:apply_gated_discovery, @solr_parameters, @user_parameters)
|
|
60
|
+
["discover","edit","read"].each do |type|
|
|
61
|
+
@solr_parameters[:fq].should_not include("#{type}_access_person_t\:\[\* TO \*\]")
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
describe "exclude_unwanted_models" do
|
|
69
|
+
before(:each) do
|
|
70
|
+
stub_user = User.new :email=>'archivist1@example.com'
|
|
71
|
+
stub_user.stubs(:is_being_superuser?).returns false
|
|
72
|
+
helper.stubs(:current_user).returns(stub_user)
|
|
73
|
+
@solr_parameters = {}
|
|
74
|
+
@user_parameters = {}
|
|
75
|
+
end
|
|
76
|
+
it "should set solr query parameters to filter out FileAssets" do
|
|
77
|
+
helper.send(:exclude_unwanted_models, @solr_parameters, @user_parameters)
|
|
78
|
+
@solr_parameters[:fq].should include("-has_model_s:\"info:fedora/afmodel:FileAsset\"")
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
5
82
|
describe "build_lucene_query" do
|
|
6
83
|
|
|
7
84
|
it "should return fields for all roles the user is a member of checking against the discover, access, read fields" do
|
|
@@ -5,7 +5,8 @@ require "nokogiri"
|
|
|
5
5
|
describe Hydra::RightsMetadata do
|
|
6
6
|
|
|
7
7
|
before(:each) do
|
|
8
|
-
|
|
8
|
+
# The way RubyDora loads objects prevents us from stubbing the fedora connection :(
|
|
9
|
+
# ActiveFedora::RubydoraConnection.stubs(:instance).returns(stub_everything())
|
|
9
10
|
obj = ActiveFedora::Base.new
|
|
10
11
|
@sample = Hydra::RightsMetadata.new(obj.inner_object, nil)
|
|
11
12
|
@sample.stubs(:content).returns('')
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
metadata
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: hydra-head
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
4
|
+
hash: 1923832029
|
|
5
5
|
prerelease: 6
|
|
6
6
|
segments:
|
|
7
7
|
- 3
|
|
8
8
|
- 1
|
|
9
9
|
- 0
|
|
10
10
|
- pre
|
|
11
|
-
-
|
|
12
|
-
version: 3.1.0.
|
|
11
|
+
- 2
|
|
12
|
+
version: 3.1.0.pre2
|
|
13
13
|
platform: ruby
|
|
14
14
|
authors:
|
|
15
15
|
- Matt Zumwalt, Bess Sadler, Julie Meloni, Naomi Dushay, Jessie Keck, John Scofield, Justin Coyne & many more. See https://github.com/projecthydra/hydra-head/contributors
|
|
@@ -17,7 +17,7 @@ autorequire:
|
|
|
17
17
|
bindir: bin
|
|
18
18
|
cert_chain: []
|
|
19
19
|
|
|
20
|
-
date: 2011-10
|
|
20
|
+
date: 2011-11-10 00:00:00 -08:00
|
|
21
21
|
default_executable:
|
|
22
22
|
dependencies:
|
|
23
23
|
- !ruby/object:Gem::Dependency
|
|
@@ -60,14 +60,12 @@ dependencies:
|
|
|
60
60
|
requirements:
|
|
61
61
|
- - ~>
|
|
62
62
|
- !ruby/object:Gem::Version
|
|
63
|
-
hash:
|
|
63
|
+
hash: 1
|
|
64
64
|
segments:
|
|
65
65
|
- 3
|
|
66
66
|
- 1
|
|
67
|
-
- 0
|
|
68
|
-
- rc
|
|
69
67
|
- 1
|
|
70
|
-
version: 3.1.
|
|
68
|
+
version: 3.1.1
|
|
71
69
|
type: :runtime
|
|
72
70
|
version_requirements: *id003
|
|
73
71
|
- !ruby/object:Gem::Dependency
|
|
@@ -745,6 +743,7 @@ files:
|
|
|
745
743
|
- README_RAKE_TASKS.textile
|
|
746
744
|
- README_SUBTREE.textile
|
|
747
745
|
- README_TERSE.textile
|
|
746
|
+
- RELEASE_NOTES.textile
|
|
748
747
|
- Rakefile
|
|
749
748
|
- TESTING.textile
|
|
750
749
|
- TESTING_PLUGIN.textile
|
|
@@ -1166,7 +1165,7 @@ files:
|
|
|
1166
1165
|
- vendor/cache/abstract-1.0.0.gem
|
|
1167
1166
|
- vendor/cache/actionmailer-3.0.10.gem
|
|
1168
1167
|
- vendor/cache/actionpack-3.0.10.gem
|
|
1169
|
-
- vendor/cache/active-fedora-3.1.
|
|
1168
|
+
- vendor/cache/active-fedora-3.1.1.gem
|
|
1170
1169
|
- vendor/cache/activemodel-3.0.10.gem
|
|
1171
1170
|
- vendor/cache/activerecord-3.0.10.gem
|
|
1172
1171
|
- vendor/cache/activeresource-3.0.10.gem
|
|
@@ -1183,23 +1182,23 @@ files:
|
|
|
1183
1182
|
- vendor/cache/crack-0.3.1.gem
|
|
1184
1183
|
- vendor/cache/cucumber-1.1.0.gem
|
|
1185
1184
|
- vendor/cache/cucumber-rails-1.1.1.gem
|
|
1186
|
-
- vendor/cache/curb-0.7.
|
|
1185
|
+
- vendor/cache/curb-0.7.16.gem
|
|
1187
1186
|
- vendor/cache/daemons-1.1.4.gem
|
|
1188
1187
|
- vendor/cache/database_cleaner-0.6.7.gem
|
|
1189
1188
|
- vendor/cache/diff-lcs-1.1.3.gem
|
|
1190
1189
|
- vendor/cache/equivalent-xml-0.2.8.gem
|
|
1191
1190
|
- vendor/cache/erubis-2.6.6.gem
|
|
1192
1191
|
- vendor/cache/facets-2.8.4.gem
|
|
1193
|
-
- vendor/cache/factory_girl-2.2.
|
|
1192
|
+
- vendor/cache/factory_girl-2.1.2.gem
|
|
1194
1193
|
- vendor/cache/fastercsv-1.5.4.gem
|
|
1195
|
-
- vendor/cache/ffi-1.0.
|
|
1196
|
-
- vendor/cache/gherkin-2.5.
|
|
1194
|
+
- vendor/cache/ffi-1.0.9.gem
|
|
1195
|
+
- vendor/cache/gherkin-2.5.2.gem
|
|
1197
1196
|
- vendor/cache/gyoku-0.4.4.gem
|
|
1198
1197
|
- vendor/cache/haml-3.1.3.gem
|
|
1199
1198
|
- vendor/cache/httparty-0.8.1.gem
|
|
1200
1199
|
- vendor/cache/httpi-0.9.5.gem
|
|
1201
1200
|
- vendor/cache/i18n-0.5.0.gem
|
|
1202
|
-
- vendor/cache/jettywrapper-1.0.
|
|
1201
|
+
- vendor/cache/jettywrapper-1.0.2.gem
|
|
1203
1202
|
- vendor/cache/json-1.6.1.gem
|
|
1204
1203
|
- vendor/cache/json_pure-1.6.1.gem
|
|
1205
1204
|
- vendor/cache/kaminari-0.12.4.gem
|
|
@@ -1218,7 +1217,7 @@ files:
|
|
|
1218
1217
|
- vendor/cache/nokogiri-1.5.0.gem
|
|
1219
1218
|
- vendor/cache/nori-1.0.2.gem
|
|
1220
1219
|
- vendor/cache/om-1.4.3.gem
|
|
1221
|
-
- vendor/cache/polyglot-0.3.
|
|
1220
|
+
- vendor/cache/polyglot-0.3.3.gem
|
|
1222
1221
|
- vendor/cache/rack-1.2.4.gem
|
|
1223
1222
|
- vendor/cache/rack-mount-0.6.14.gem
|
|
1224
1223
|
- vendor/cache/rack-test-0.5.7.gem
|
|
@@ -1228,18 +1227,18 @@ files:
|
|
|
1228
1227
|
- vendor/cache/rbx-require-relative-0.0.5.gem
|
|
1229
1228
|
- vendor/cache/rdf-0.3.4.1.gem
|
|
1230
1229
|
- vendor/cache/rdf-rdfxml-0.3.5.gem
|
|
1231
|
-
- vendor/cache/rdoc-3.
|
|
1230
|
+
- vendor/cache/rdoc-3.10.gem
|
|
1232
1231
|
- vendor/cache/rest-client-1.6.7.gem
|
|
1233
1232
|
- vendor/cache/rsolr-1.0.2.gem
|
|
1234
1233
|
- vendor/cache/rsolr-ext-1.0.3.gem
|
|
1235
|
-
- vendor/cache/rspec-2.
|
|
1236
|
-
- vendor/cache/rspec-core-2.
|
|
1237
|
-
- vendor/cache/rspec-expectations-2.
|
|
1238
|
-
- vendor/cache/rspec-mocks-2.
|
|
1239
|
-
- vendor/cache/rspec-rails-2.
|
|
1234
|
+
- vendor/cache/rspec-2.6.0.gem
|
|
1235
|
+
- vendor/cache/rspec-core-2.6.4.gem
|
|
1236
|
+
- vendor/cache/rspec-expectations-2.6.0.gem
|
|
1237
|
+
- vendor/cache/rspec-mocks-2.6.0.gem
|
|
1238
|
+
- vendor/cache/rspec-rails-2.6.1.gem
|
|
1240
1239
|
- vendor/cache/ruby-debug-0.10.4.gem
|
|
1241
1240
|
- vendor/cache/ruby-debug-base-0.10.4.gem
|
|
1242
|
-
- vendor/cache/rubydora-0.
|
|
1241
|
+
- vendor/cache/rubydora-0.2.3.gem
|
|
1243
1242
|
- vendor/cache/rubyzip-0.9.4.gem
|
|
1244
1243
|
- vendor/cache/sanitize-2.0.3.gem
|
|
1245
1244
|
- vendor/cache/savon-0.9.7.gem
|
|
@@ -1247,7 +1246,7 @@ files:
|
|
|
1247
1246
|
- vendor/cache/solr-ruby-0.0.8.gem
|
|
1248
1247
|
- vendor/cache/solrizer-1.1.2.gem
|
|
1249
1248
|
- vendor/cache/solrizer-fedora-1.1.3.gem
|
|
1250
|
-
- vendor/cache/stomp-1.1.
|
|
1249
|
+
- vendor/cache/stomp-1.1.10.gem
|
|
1251
1250
|
- vendor/cache/term-ansicolor-1.0.7.gem
|
|
1252
1251
|
- vendor/cache/thor-0.14.6.gem
|
|
1253
1252
|
- vendor/cache/treetop-1.4.10.gem
|
|
Binary file
|
|
Binary file
|
data/vendor/cache/ffi-1.0.10.gem
DELETED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
data/vendor/cache/rdoc-3.11.gem
DELETED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|