hydra-head 3.0.1 → 3.1.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. data/Gemfile.lock +54 -20
  2. data/HISTORY.textile +0 -7
  3. data/app/controllers/assets_controller.rb +1 -2
  4. data/app/controllers/contributors_controller.rb +2 -2
  5. data/app/controllers/downloads_controller.rb +1 -3
  6. data/app/controllers/file_assets_controller.rb +2 -4
  7. data/app/controllers/generic_content_objects_controller.rb +1 -2
  8. data/app/controllers/get_controller.rb +1 -3
  9. data/app/controllers/permissions_controller.rb +14 -28
  10. data/app/models/file_asset.rb +6 -2
  11. data/app/views/catalog/_edit_partials/_default.html.erb +5 -5
  12. data/app/views/contributors/_index.html.erb +1 -1
  13. data/app/views/generic_content_objects/_show_description.html.erb +3 -3
  14. data/app/views/mods_assets/_publication_form.html.erb +2 -2
  15. data/app/views/mods_assets/_show_contributors.html.erb +4 -4
  16. data/app/views/mods_assets/_show_description.html.erb +4 -4
  17. data/app/views/mods_assets/_show_publication.html.erb +2 -2
  18. data/app/views/permissions/_edit_person_permissions.html.erb +1 -1
  19. data/app/views/permissions/_index.html.erb +2 -2
  20. data/hydra-head.gemspec +3 -4
  21. data/lib/generators/hydra/head_generator.rb +2 -3
  22. data/lib/generators/hydra/templates/config/initializers/action_dispatch_http_upload_monkey_patch.rb +12 -0
  23. data/lib/generators/hydra/templates/config/initializers/blacklight_config.rb +0 -7
  24. data/lib/generators/hydra/templates/solr_conf/conf/schema.xml +1 -7
  25. data/lib/generators/hydra/templates/solr_conf/conf/solrconfig.xml +55 -117
  26. data/lib/hydra/access_controls_enforcement.rb +5 -47
  27. data/lib/hydra/catalog.rb +1 -1
  28. data/lib/hydra/common_mods_index_methods.rb +0 -1
  29. data/lib/hydra/file_assets_helper.rb +0 -1
  30. data/lib/hydra/generic_content.rb +7 -6
  31. data/lib/hydra/model_methods.rb +7 -6
  32. data/lib/hydra/rights_metadata.rb +2 -2
  33. data/lib/hydra-head/version.rb +1 -1
  34. data/lib/mediashelf/active_fedora_helper.rb +0 -10
  35. data/lib/railties/hydra-fixtures.rake +14 -18
  36. data/lib/railties/hyhead_rspec.rake +0 -10
  37. data/solr_conf/conf/schema.xml +0 -2
  38. data/solr_conf/conf/solrconfig.xml +29 -116
  39. data/tasks/hydra-head.rake +6 -6
  40. data/test_support/features/absent_model_search_result.feature +8 -2
  41. data/test_support/features/step_definitions/edit_metadata_steps.rb +1 -1
  42. data/test_support/fixtures/small_file.txt +1 -0
  43. data/test_support/spec/controllers/catalog_controller_spec.rb +16 -15
  44. data/test_support/spec/controllers/file_assets_controller_spec.rb +7 -14
  45. data/test_support/spec/controllers/permissions_controller_spec.rb +12 -4
  46. data/test_support/spec/helpers/access_controls_enforcement_spec.rb +0 -77
  47. data/test_support/spec/helpers/hydra_model_methods_spec.rb +9 -4
  48. data/test_support/spec/integration/file_asset_spec.rb +115 -102
  49. data/test_support/spec/lib/active_fedora_helper_spec.rb +1 -1
  50. data/test_support/spec/models/audio_asset_spec.rb +3 -3
  51. data/test_support/spec/models/file_asset_spec.rb +6 -5
  52. data/test_support/spec/models/generic_content_spec.rb +1 -2
  53. data/test_support/spec/models/generic_image_spec.rb +1 -1
  54. data/test_support/spec/models/hydra_rights_metadata_spec.rb +8 -3
  55. data/test_support/spec/models/image_asset_spec.rb +3 -3
  56. data/test_support/spec/models/mods_asset_spec.rb +3 -3
  57. data/test_support/spec/models/video_asset_spec.rb +3 -3
  58. data/vendor/cache/{active-fedora-3.0.7.gem → active-fedora-3.1.0.rc1.gem} +0 -0
  59. data/vendor/cache/akami-1.0.0.gem +0 -0
  60. data/vendor/cache/factory_girl-2.2.0.gem +0 -0
  61. data/vendor/cache/ffi-1.0.10.gem +0 -0
  62. data/vendor/cache/gherkin-2.5.4.gem +0 -0
  63. data/vendor/cache/gyoku-0.4.4.gem +0 -0
  64. data/vendor/cache/httpi-0.9.5.gem +0 -0
  65. data/vendor/cache/jettywrapper-1.0.1.gem +0 -0
  66. data/vendor/cache/nori-1.0.2.gem +0 -0
  67. data/vendor/cache/rdf-0.3.4.1.gem +0 -0
  68. data/vendor/cache/rdf-rdfxml-0.3.5.gem +0 -0
  69. data/vendor/cache/rdoc-3.11.gem +0 -0
  70. data/vendor/cache/rspec-2.7.0.gem +0 -0
  71. data/vendor/cache/rspec-core-2.7.1.gem +0 -0
  72. data/vendor/cache/rspec-expectations-2.7.0.gem +0 -0
  73. data/vendor/cache/rspec-mocks-2.7.0.gem +0 -0
  74. data/vendor/cache/rspec-rails-2.7.0.gem +0 -0
  75. data/vendor/cache/rubydora-0.1.9.gem +0 -0
  76. data/vendor/cache/savon-0.9.7.gem +0 -0
  77. data/vendor/cache/wasabi-2.0.0.gem +0 -0
  78. metadata +94 -93
  79. data/RELEASE_NOTES.textile +0 -8
  80. data/vendor/cache/factory_girl-2.1.2.gem +0 -0
  81. data/vendor/cache/ffi-1.0.9.gem +0 -0
  82. data/vendor/cache/gherkin-2.5.2.gem +0 -0
  83. data/vendor/cache/jettywrapper-0.0.10.gem +0 -0
  84. data/vendor/cache/rcov-0.9.11.gem +0 -0
  85. data/vendor/cache/rdoc-3.10.gem +0 -0
  86. data/vendor/cache/rspec-2.6.0.gem +0 -0
  87. data/vendor/cache/rspec-core-2.6.4.gem +0 -0
  88. data/vendor/cache/rspec-expectations-2.6.0.gem +0 -0
  89. data/vendor/cache/rspec-mocks-2.6.0.gem +0 -0
  90. data/vendor/cache/rspec-rails-2.6.1.gem +0 -0
@@ -82,121 +82,51 @@
82
82
  </lst>
83
83
  </requestHandler>
84
84
 
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&lt;-1 5&lt;-2 6&lt;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>
165
-
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>
85
+ <!-- For complete comments from the Solr project example solrconfig.xml:
86
+ http://svn.apache.org/repos/asf/lucene/dev/trunk/solr/example/solr/conf/solrconfig.xml
87
+ See also:
88
+ http://wiki.apache.org/solr/SolrConfigXml
89
+ -->
187
90
 
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
-
91
+ <requestHandler name="search" class="solr.SearchHandler" default="true">
92
+ <lst name="defaults">
93
+ <!-- Making defType lucene to exclude file assets -->
94
+ <str name="defType">lucene</str>
95
+ <!-- lucene params -->
96
+ <str name="df">has_model_s</str>
97
+ <str name="q.op">AND</str>
98
+ <!-- dismax params -->
99
+ <str name="mm"> 2&lt;-1 5&lt;-2 6&lt;90% </str>
100
+ <str name="q.alt">*:*</str>
101
+ <str name="qf_dismax">id^0.8 id_t^0.8 title_t^0.3 mods_t^0.2</str>
102
+ <str name="pf_dismax">id^0.9 id_t^0.9 title_t^0.5 mods_t^0.2</str>
103
+ <int name="ps">100</int>
104
+ <float name="tie">0.01</float>
105
+ <!-- general -->
106
+ <str name="facet">on</str>
107
+ <str name="facet.mincount">1</str>
108
+ <str name="echoParams">explicit</str>
109
+ <str name="fl">
110
+ id,title_t,date_t,year_facet,month_facet,has_model_s,has_collection_member_s,is_part_of_s,system_create_dt,
111
+ 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,
112
+ person_7_role_t,person_8_role_t,person_9_role_t,
113
+ 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,
114
+ 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,
115
+ 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,
116
+ 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,
117
+ status_t,subject_t,depositor_t,
118
+ journal_title_info_t,journal_issue_publication_date_t,
119
+ journal_issue_pages_end_t,journal_issue_volume_t,journal_title_info_main_title_t,journal_issue_pages_start_t,
120
+ journal_issue_start_page_t, journal_issue_end_page_t, abstract_t,
121
+ 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,
122
+ person_7_institution_t,person_8_institution_t,person_9_institution_t,
123
+ mods_gps_t, mods_region_t, mods_site_t, mods_ecosystem_t,
124
+ mods_timespan_start_t, mods_timespan_end_t, description_t, mods_title_info_main_title_t, mods_0_title_info_0_main_title_t, embargo_release_date_dt, note_t,
125
+ object_type_facet, department_facet, peer_reviewed_facet
126
+ </str>
127
+ </lst>
128
+ </requestHandler>
129
+
200
130
  <requestHandler name="public_search" class="solr.SearchHandler" >
201
131
  <lst name="defaults">
202
132
  <!-- Making defType lucene to exclude file assets -->
@@ -207,8 +137,6 @@
207
137
  <!-- dismax params -->
208
138
  <str name="mm"> 2&lt;-1 5&lt;-2 6&lt;90% </str>
209
139
  <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>
212
140
  <str name="qf_dismax">id^0.8 id_t^0.8 format text^0.3</str>
213
141
  <str name="pf_dismax">id^0.9 id_t^0.9 text^0.5</str>
214
142
  <int name="ps">100</int>
@@ -218,7 +146,17 @@
218
146
  <str name="facet.mincount">1</str>
219
147
  <str name="echoParams">explicit</str>
220
148
  <str name="fl">
221
- *,score
149
+ id,text,title_t,date_t,year_facet,month_facet,medium_t,series_facet,box_facet,folder_facet,has_model_s,has_collection_member_s,system_create_dt,
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
222
160
  </str>
223
161
  </lst>
224
162
  </requestHandler>
@@ -172,46 +172,13 @@ 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
- 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 }")
175
+ # solr_parameters[:q] ||= []
176
+ solr_parameters[:q] = build_lucene_query(params[:q])
177
+ # @extra_controller_params ||= {}
178
+ # @extra_controller_params.merge!(:q=>build_lucene_query(params[:q]))
179
+ logger.debug("Solr query: #{ solr_parameters[:q] }")
212
180
  end
213
181
 
214
-
215
182
  # proxy for {enforce_index_permissions}
216
183
  def enforce_search_permissions
217
184
  enforce_index_permissions
@@ -221,19 +188,10 @@ module Hydra::AccessControlsEnforcement
221
188
  def enforce_read_permissions
222
189
  enforce_show_permissions
223
190
  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
232
191
 
233
192
  # Build the lucene query that performs gated discovery based on Hydra rightsMetadata information in Solr
234
193
  # @param [String] user_query the user's original query request that will be wrapped in access controls
235
194
  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")
237
195
  q = ""
238
196
  # start query of with user supplied query term
239
197
  q << "_query_:\"{!dismax qf=$qf_dismax pf=$pf_dismax}#{user_query}\" AND " if user_query
data/lib/hydra/catalog.rb CHANGED
@@ -24,7 +24,7 @@ module Hydra::Catalog
24
24
 
25
25
  # Controller filters
26
26
  # Also see the generator (or generated CatalogController) to see more before_filters in action
27
- klass.before_filter :require_solr, :require_fedora, :check_scripts
27
+ klass.before_filter :require_solr, :check_scripts
28
28
  klass.before_filter :load_fedora_document, :only=>[:show,:edit]
29
29
 
30
30
  # View Helpers
@@ -32,7 +32,6 @@ module Hydra::CommonModsIndexMethods
32
32
  # An array of Solr::Field objects
33
33
  #
34
34
  def extract_person_organizations
35
- # self.find_by_terms(:person,:affiliation).map { |org| Solr::Field.new({:mods_organization_facet=>org.text}) }
36
35
  orgs = {}
37
36
  self.find_by_terms(:person,:affiliation).each do |org|
38
37
  ::Solrizer::Extractor.insert_solr_field_value(orgs, "mods_organization_facet", org.text)
@@ -7,7 +7,6 @@ module Hydra::FileAssetsHelper
7
7
  if params.has_key?(:Filedata)
8
8
  @file_assets = []
9
9
  params[:Filedata].each do |file|
10
- #@file_asset = create_asset_from_params
11
10
  @file_asset = create_asset_from_file(file)
12
11
  add_posted_blob_to_asset(@file_asset,file)
13
12
  @file_asset.save
@@ -91,11 +91,12 @@ module Hydra::GenericContent
91
91
 
92
92
  # augments add_file_datastream to also put file size (in bytes/KB/MB/GB/TB) in mods:physicaldescription/mods:extent
93
93
  def add_file_datastream(file, opts={})
94
- label = opts.has_key?(:label) ? opts[:label] : ""
95
- mimeType = opts.has_key?(:mimeType) ? opts[:mimeType] : ""
96
- ds = ActiveFedora::Datastream.new(:dsLabel => label, :controlGroup => 'M', :blob => file, :mimeType => mimeType)
97
- opts.has_key?(:dsid) ? ds.dsid=(opts[:dsid]) : nil
98
- add_datastream(ds)
94
+ # label = opts.has_key?(:label) ? opts[:label] : ""
95
+ # mimeType = opts.has_key?(:mimeType) ? opts[:mimeType] : ""
96
+ # ds = ActiveFedora::Datastream.new(:dsLabel => label, :controlGroup => 'M', :blob => file, :mimeType => mimeType)
97
+ # opts.has_key?(:dsid) ? ds.dsid=(opts[:dsid]) : nil
98
+ # add_datastream(ds)
99
+ super
99
100
  if file.respond_to?(:size)
100
101
  size = bits_to_human_readable(file.size)
101
102
  elsif file.kind_of?(File)
@@ -103,7 +104,7 @@ module Hydra::GenericContent
103
104
  else
104
105
  size = ""
105
106
  end
106
- datastreams_in_memory["descMetadata"].update_indexed_attributes( [:physical_description, :extent] => size )
107
+ descMetadata.update_indexed_attributes( [:physical_description, :extent] => size )
107
108
  end
108
109
 
109
110
  def mime_type file_name
@@ -5,8 +5,8 @@ module Hydra::ModelMethods
5
5
  # Most important behavior: if the asset has a rightsMetadata datastream, this method will add +depositor_id+ to its individual edit permissions.
6
6
  #
7
7
  def apply_depositor_metadata(depositor_id)
8
- prop_ds = self.datastreams_in_memory["properties"]
9
- rights_ds = self.datastreams_in_memory["rightsMetadata"]
8
+ prop_ds = self.datastreams["properties"]
9
+ rights_ds = self.datastreams["rightsMetadata"]
10
10
 
11
11
  if !prop_ds.nil? && prop_ds.respond_to?(:depositor_values)
12
12
  prop_ds.depositor_values = depositor_id unless prop_ds.nil?
@@ -19,7 +19,7 @@ module Hydra::ModelMethods
19
19
  # Set the collection type (e.g. hydrangea_article) for the asset
20
20
  #
21
21
  def set_collection_type(collection)
22
- prop_ds = self.datastreams_in_memory["properties"]
22
+ prop_ds = self.datastreams["properties"]
23
23
  if !prop_ds.nil? && prop_ds.respond_to?(:collection_values)
24
24
  prop_ds.collection_values = collection
25
25
  end
@@ -63,14 +63,14 @@ module Hydra::ModelMethods
63
63
 
64
64
  # Call insert_contributor on the descMetadata datastream
65
65
  def insert_contributor(type, opts={})
66
- ds = self.datastreams_in_memory["descMetadata"]
66
+ ds = self.datastreams["descMetadata"]
67
67
  node, index = ds.insert_contributor(type,opts)
68
68
  return node, index
69
69
  end
70
70
 
71
71
  # Call remove_contributor on the descMetadata datastream
72
72
  def remove_contributor(type, index)
73
- ds = self.datastreams_in_memory["descMetadata"]
73
+ ds = self.datastreams["descMetadata"]
74
74
  result = ds.remove_contributor(type,index)
75
75
  return result
76
76
  end
@@ -88,7 +88,8 @@ module Hydra::ModelMethods
88
88
  def destroyable_child_assets
89
89
  return [] unless self.file_objects
90
90
  self.file_objects.each.inject([]) do |file_assets, fo|
91
- if fo.relationships[:self].has_key?(:is_part_of) && fo.relationships[:self][:is_part_of].length == 1 && fo.relationships[:self][:is_part_of][0].match(/#{self.pid}$/)
91
+ parents = fo.ids_for_outbound(:is_part_of)
92
+ if parents.length == 1 && parents.first.match(/#{self.pid}$/)
92
93
  file_assets << fo
93
94
  end
94
95
  file_assets
@@ -39,7 +39,7 @@ class RightsMetadata < ActiveFedora::NokogiriDatastream
39
39
  t.embargo_release_date(:proxy => [:machine, :date])
40
40
  }
41
41
  end
42
-
42
+
43
43
  # Generates an empty Mods Article (used when you call ModsArticle.new without passing in existing xml)
44
44
  def self.xml_template
45
45
  builder = Nokogiri::XML::Builder.new do |xml|
@@ -86,7 +86,6 @@ class RightsMetadata < ActiveFedora::NokogiriDatastream
86
86
  # permissions({:person=>"person123"})
87
87
  # => {"person123"=>"read"}
88
88
  def permissions(selector, new_access_level=nil)
89
-
90
89
  type = selector.keys.first.to_sym
91
90
  actor = selector.values.first
92
91
  if new_access_level.nil?
@@ -178,6 +177,7 @@ class RightsMetadata < ActiveFedora::NokogiriDatastream
178
177
  private
179
178
  # Purge all access given group/person
180
179
  def remove_all_permissions(selector)
180
+ return unless ng_xml
181
181
  type = selector.keys.first.to_sym
182
182
  actor = selector.values.first
183
183
  xpath = self.class.terminology.xpath_for(:access, type, actor)
@@ -1,4 +1,4 @@
1
1
  module HydraHead
2
- VERSION = "3.0.1"
2
+ VERSION = "3.1.0.pre1"
3
3
  end
4
4
 
@@ -42,16 +42,6 @@ module MediaShelf
42
42
 
43
43
  private
44
44
 
45
- def require_fedora
46
- if ActiveFedora::VERSION < "3.1.0"
47
-
48
- Fedora::Repository.register(ActiveFedora.fedora_config[:url], session[:user])
49
- else
50
- ActiveSupport::Deprecation.warn("ActiveFedoraHelper.require_fedora has been deprecated and no longer has any effect.")
51
- end
52
- return true
53
- end
54
-
55
45
  def require_solr
56
46
  ActiveFedora::SolrService.register(ActiveFedora.solr_config[:url])
57
47
  end
@@ -16,16 +16,16 @@ namespace :hydra do
16
16
  raise "You must specify a valid pid. Example: rake hydra:refresh_fixture pid=demo:12"
17
17
  end
18
18
  begin
19
- Hydra::FixtureLoader.new('test_support/fixtures').reload(ENV["pid"])
19
+ ActiveFedora::FixtureLoader.new('test_support/fixtures').reload(ENV["pid"])
20
20
  rescue Errno::ECONNREFUSED => e
21
21
  puts "Can't connect to Fedora! Are you sure jetty is running?"
22
- rescue Fedora::ServerError => e
23
- logger.error("Received a Fedora error while deleting #{pid}")
22
+ rescue Exception => e
23
+ logger.error("Received a Fedora error while loading #{pid}\n#{e}")
24
24
  end
25
25
  end
26
26
 
27
27
  desc "Delete the object identified by pid. Example: rake hydra:delete pid=demo:12"
28
- task :delete => :environment do
28
+ task :delete => :init 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"])
@@ -35,15 +35,15 @@ namespace :hydra do
35
35
  raise "You must specify a valid pid. Example: rake hydra:delete pid=demo:12"
36
36
  else
37
37
  pid = ENV["pid"]
38
- puts "Deleting '#{pid}' from #{Fedora::Repository.instance.fedora_url}"
38
+ puts "Deleting '#{pid}' from #{ActiveFedora::RubydoraConnection.instance.options[:url]}"
39
39
  begin
40
- Hydra::FixtureLoader.delete(pid)
40
+ ActiveFedora::FixtureLoader.delete(pid)
41
41
  rescue Errno::ECONNREFUSED => e
42
42
  puts "Can't connect to Fedora! Are you sure jetty is running?"
43
- rescue Fedora::ServerError => e
44
- logger.error("Received a Fedora error while deleting #{pid}")
43
+ rescue Exception => e
44
+ logger.error("Received a Fedora error while deleting #{pid}\n#{e}")
45
45
  end
46
- logger.info "Deleted '#{pid}' from #{Fedora::Repository.instance.fedora_url}"
46
+ logger.info "Deleted '#{pid}' from #{ActiveFedora::RubydoraConnection.instance.options[:url]}"
47
47
  end
48
48
  end
49
49
 
@@ -100,16 +100,16 @@ namespace :hydra do
100
100
  end
101
101
 
102
102
  desc "Import the fixture located at the provided path. Example: rake hydra:import_fixture fixture=test_support/fixtures/demo_12.foxml.xml"
103
- task :import_fixture => [:init, :environment] do
103
+ task :import_fixture => [:init] do
104
104
 
105
105
  # If a destination url has been provided, attampt to export from the fedora repository there.
106
106
  if ENV["destination"]
107
107
  Fedora::Repository.register(ENV["destination"])
108
108
  end
109
109
  if !ENV["fixture"].nil?
110
- body = Hydra::FixtureLoader.import_to_fedora(ENV["fixture"])
110
+ body = ActiveFedora::FixtureLoader.import_to_fedora(ENV["fixture"])
111
111
  elsif !ENV["pid"].nil?
112
- body = Hydra::FixtureLoader.new('test_support/fixtures').import_and_index(ENV["pid"])
112
+ body = ActiveFedora::FixtureLoader.new('test_support/fixtures').import_and_index(ENV["pid"])
113
113
  else
114
114
  raise "You must specify a path to the fixture or provide its pid. Example: rake hydra:import_fixture fixture=test_support/fixtures/demo_12.foxml.xml"
115
115
  end
@@ -118,12 +118,8 @@ namespace :hydra do
118
118
  end
119
119
 
120
120
  desc "Init Hydra configuration"
121
- task :init do
122
- if !ENV["environment"].nil?
123
- Rails.env = ENV["environment"]
124
- end
125
- # If Fedora Repository connection is not already initialized, initialize it using ActiveFedora defaults
126
- ActiveFedora.init unless Thread.current[:repo]
121
+ task :init => [:environment] do
122
+ # We need to just start rails so that all the models are loaded
127
123
  end
128
124
 
129
125
  desc "Load hydra-head models"
@@ -57,21 +57,11 @@ begin
57
57
 
58
58
  desc "Run all specs"
59
59
  RSpec::Core::RakeTask.new(:run => spec_prereq) do |t|
60
- t.rcov = true
61
60
  # pattern directory name defaults to ./**/*_spec.rb, but has a more concise command line echo
62
61
  t.pattern = File.join(hyhead_spec, "/**/*_spec.rb")
63
62
  t.rspec_opts = "--colour"
64
63
  end
65
64
 
66
- desc "Run all specs with rcov"
67
- RSpec::Core::RakeTask.new(:rcov => spec_prereq) do |t|
68
- t.rcov = true
69
- # pattern directory name defaults to ./**/*_spec.rb, but has a more concise command line echo
70
- t.pattern = File.join(hyhead_spec, "/**/*_spec.rb")
71
- t.rspec_opts = "--colour"
72
- t.rcov_opts = '-o "' + HydraHead.root + '/coverage" --exclude /gems/,/Library/,/usr/,test_support,lib/tasks,.bundle,config,/lib/rspec/,/lib/rspec-'
73
- end
74
-
75
65
  # Blacklight. Solr wrapper. for now just for blacklight:spec, plan to
76
66
  # provide it for all variants eventually.
77
67
  # if you would like to see solr startup messages on STDERR
@@ -118,7 +118,5 @@ 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" />
123
121
 
124
122
  </schema>