hydra-batch-edit 1.1.1 → 2.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/.rubocop.yml +21 -0
- data/.rubocop_todo.yml +278 -0
- data/.travis.yml +1 -5
- data/Gemfile +35 -0
- data/README.textile +8 -18
- data/Rakefile +17 -48
- data/app/assets/javascripts/{batch_edit.js.coffee → batch_edit/batch_edit.js.coffee} +0 -0
- data/app/assets/stylesheets/{batch_edit.css.scss → batch_edit/batch_edit.scss} +0 -0
- data/app/controllers/concerns/hydra/batch_edit_behavior.rb +2 -2
- data/hydra-batch-edit.gemspec +8 -5
- data/lib/generators/hydra_batch_edit/install_generator.rb +17 -0
- data/lib/generators/hydra_batch_edit/templates/batch_edit.js +1 -0
- data/lib/generators/hydra_batch_edit/templates/batch_edit.scss +1 -0
- data/lib/hydra-batch-edit.rb +1 -1
- data/lib/hydra/batch_edit.rb +0 -1
- data/lib/hydra/batch_edit/version.rb +1 -1
- data/spec/controllers/batch_edits_controller_spec.rb +43 -43
- data/spec/helpers/batch_edit_helper_spec.rb +3 -3
- data/spec/routing/batch_edit_routes_spec.rb +10 -10
- data/spec/spec_helper.rb +7 -4
- data/spec/support/config/initializers/hydra_config.rb +0 -28
- data/spec/{support → test_app_templates}/app/models/sample.rb +0 -0
- data/spec/{support → test_app_templates}/app/models/solr_document.rb +0 -0
- data/spec/{support → test_app_templates}/db/migrate/20111101221803_create_searches.rb +0 -0
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +24 -0
- metadata +81 -38
- data/gemfiles/rails3.gemfile +0 -6
- data/gemfiles/rails4.gemfile +0 -6
- data/lib/hydra/batch_edit/search_service.rb +0 -62
- data/spec/lib/search_service_spec.rb +0 -41
data/gemfiles/rails3.gemfile
DELETED
data/gemfiles/rails4.gemfile
DELETED
@@ -1,62 +0,0 @@
|
|
1
|
-
module Hydra
|
2
|
-
module BatchEdit
|
3
|
-
class SearchService
|
4
|
-
include Blacklight::Configurable
|
5
|
-
include Blacklight::SolrHelper
|
6
|
-
|
7
|
-
def initialize(session, user_key)
|
8
|
-
@session = session
|
9
|
-
@user_key = user_key
|
10
|
-
self.class.copy_blacklight_config_from(::CatalogController)
|
11
|
-
end
|
12
|
-
|
13
|
-
def blacklight_solr
|
14
|
-
Blacklight.solr
|
15
|
-
end
|
16
|
-
|
17
|
-
solr_search_params_logic << :apply_gated_search
|
18
|
-
|
19
|
-
def last_search_documents
|
20
|
-
return [] if @session[:history].blank?
|
21
|
-
last_search_id = @session[:history].first
|
22
|
-
search = Search.find(last_search_id)
|
23
|
-
_, document_list = get_search_results(search.query_params, :fl=>'id', :rows=>1000)
|
24
|
-
document_list
|
25
|
-
end
|
26
|
-
|
27
|
-
# filter that sets up access-controlled lucene query in order to provide gated search behavior
|
28
|
-
# @param solr_parameters the current solr parameters
|
29
|
-
# @param user_parameters the current user-submitted parameters
|
30
|
-
def apply_gated_search(solr_parameters, user_parameters)
|
31
|
-
solr_parameters[:fq] ||= []
|
32
|
-
|
33
|
-
# Grant access to public content
|
34
|
-
user_access_filters = []
|
35
|
-
user_access_filters << "#{solr_access_control_suffix(:group)}:public"
|
36
|
-
|
37
|
-
# Grant access based on user id & role
|
38
|
-
unless @user_key.blank?
|
39
|
-
# for roles
|
40
|
-
::RoleMapper.roles(@user_key).each do |role|
|
41
|
-
user_access_filters << "#{solr_access_control_suffix(:group)}:#{escape_slashes(role)}"
|
42
|
-
end
|
43
|
-
# for individual person access
|
44
|
-
user_access_filters << "#{solr_access_control_suffix(:individual)}:#{escape_slashes(@user_key)}"
|
45
|
-
end
|
46
|
-
solr_parameters[:fq] << user_access_filters.join(' OR ')
|
47
|
-
solr_parameters
|
48
|
-
end
|
49
|
-
|
50
|
-
def escape_slashes(value)
|
51
|
-
value.gsub('/', '\/')
|
52
|
-
end
|
53
|
-
|
54
|
-
# @param [Symbol] key The permission type to return. Must be `:group` or `:individual`
|
55
|
-
def solr_access_control_suffix(key)
|
56
|
-
raise ArgumentError, "you must provide :group or :individual" unless [:group, :individual].include?(key)
|
57
|
-
Hydra.config[:permissions][:edit][key]
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
@@ -1,41 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Hydra::BatchEdit::SearchService do
|
4
|
-
before do
|
5
|
-
@login = 'vanessa'
|
6
|
-
@session = {:history => [17, 14, 12, 9]}
|
7
|
-
@service = Hydra::BatchEdit::SearchService.new(@session, @login)
|
8
|
-
end
|
9
|
-
|
10
|
-
it "should get the documents for the first history entry" do
|
11
|
-
Search.should_receive(:find).with(17).and_return(Search.new(:query_params=>{:q=>"World Peace"}))
|
12
|
-
@service.should_receive(:get_search_results).and_return([:one, [:doc1, :doc2]])
|
13
|
-
@service.last_search_documents.should == [:doc1, :doc2]
|
14
|
-
end
|
15
|
-
|
16
|
-
describe 'apply_gated_search' do
|
17
|
-
before(:each) do
|
18
|
-
RoleMapper.stub(:roles).with(@login).and_return(['umg/test.group.1'])
|
19
|
-
params = @service.apply_gated_search({}, {})
|
20
|
-
@group_query = params[:fq].first.split(' OR ')[1]
|
21
|
-
end
|
22
|
-
it "should escape slashes in groups" do
|
23
|
-
@group_query.should == 'edit_access_group_ssim:umg\/test.group.1'
|
24
|
-
end
|
25
|
-
it "should allow overriding Solr's access control suffix" do
|
26
|
-
module Hydra
|
27
|
-
module BatchEdit
|
28
|
-
class SearchService
|
29
|
-
def solr_access_control_suffix(key)
|
30
|
-
"edit_#{key}_customfield"
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
@service = Hydra::BatchEdit::SearchService.new({}, '')
|
36
|
-
params = @service.apply_gated_search({}, {})
|
37
|
-
@public_query = params[:fq].first.split(' OR ')[0]
|
38
|
-
@public_query.should == 'edit_group_customfield:public'
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|