cirandas.net

commit e9aa568f2d873fa9bbfaddf9abba79ef5a75e417

Author: Braulio Bhavamitra <braulio@prout.io>

solr: fix searches

 plugins/solr/lib/ext/article.rb | 4 ++--
 plugins/solr/lib/ext/products_plugin/product.rb | 4 ++--
 plugins/solr/lib/ext/profile.rb | 4 ++--
 plugins/solr/lib/solr_plugin/base.rb | 9 ++++++---
 plugins/solr/lib/solr_plugin/search_helper.rb | 6 +++---
 plugins/solr/test/unit/article_test.rb | 4 ++--
 plugins/solr/test/unit/product_test.rb | 4 ++--
 plugins/solr/test/unit/profile_test.rb | 4 ++--
 plugins/solr/test/unit/solr_plugin/plugin_test.rb | 2 +-


diff --git a/plugins/solr/lib/ext/article.rb b/plugins/solr/lib/ext/article.rb
index 516e3cbc6955071530ee34237ca6307a9fba80ba..c75aa084a3285e6da1c1044af819420f8f01e1b6 100644
--- a/plugins/solr/lib/ext/article.rb
+++ b/plugins/solr/lib/ext/article.rb
@@ -58,7 +58,7 @@   def solr_f_category
     self.categories.collect(&:name)
   end
 
-  def solr_public
+  def solr_is_public
     self.public?
   end
 
@@ -89,7 +89,7 @@       {name: {type: :text, boost: 2.0}},
       {slug: :text}, {body: :text},
       {abstract: :text}, {filename: :text},
       # filtered fields
-      {solr_public: :boolean}, {published: :boolean},
+      {solr_is_public: :boolean}, {published: :boolean},
       {environment_id: :integer},
       {profile_id: :integer}, :language,
       {solr_category_filter: :integer},




diff --git a/plugins/solr/lib/ext/products_plugin/product.rb b/plugins/solr/lib/ext/products_plugin/product.rb
index fd290c982ae038f3ddff6199cc613868ab827a49..3aa2bb070d8d3219f4af2da199f57af6633bdf46 100644
--- a/plugins/solr/lib/ext/products_plugin/product.rb
+++ b/plugins/solr/lib/ext/products_plugin/product.rb
@@ -78,7 +78,7 @@     def solr_category_filter
       enterprise.categories_including_virtual_ids << product_category_id
     end
 
-    def solr_public
+    def solr_is_public
       # environment.products only consider enterprises
       self.public? and self.profile.enterprise?
     end
@@ -132,7 +132,7 @@         {name: {type: :text, boost: 2.0}},
         {solr_supplier: {type: :text}},
         {description: :text}, {category_full_name: :text},
         # filtered fields
-        {solr_public: :boolean},
+        {solr_is_public: :boolean},
         {environment_id: :integer}, {profile_id: :integer},
         {enabled: :boolean}, {solr_category_filter: :integer},
         {available: :boolean}, {archived: :boolean}, {highlighted: :boolean},




diff --git a/plugins/solr/lib/ext/profile.rb b/plugins/solr/lib/ext/profile.rb
index 2863c74deaa0ccb2e4ce3a6f28dd34dc940f7d1a..60e000605008abc939598396ed62516ca9904f3a 100644
--- a/plugins/solr/lib/ext/profile.rb
+++ b/plugins/solr/lib/ext/profile.rb
@@ -116,7 +116,7 @@   def solr_f_enabled
     self.enabled
   end
 
-  def solr_public
+  def solr_is_public
     self.public?
   end
 
@@ -167,7 +167,7 @@       # searched fields
       {name: {type: :text, boost: 2.0}}, {nickname: :text}, {display_name: :text},
       {identifier: :text}, {contact_email: :text},
       # filtered fields
-      {solr_public: :boolean}, {environment_id: :integer},
+      {solr_is_public: :boolean}, {environment_id: :integer},
       {solr_category_filter: :integer},
       # scopes
       {no_templates: :boolean},




diff --git a/plugins/solr/lib/solr_plugin/base.rb b/plugins/solr/lib/solr_plugin/base.rb
index 6320121882723ca58c35bbda5d2b9bddd9e38279..255de877d2d1fc107f293c33a387b15ff53d438f 100644
--- a/plugins/solr/lib/solr_plugin/base.rb
+++ b/plugins/solr/lib/solr_plugin/base.rb
@@ -151,8 +151,9 @@     solr_fields = klass.configuration[:solr_fields].keys rescue []
     scopes_applied = scope.scopes_applied.dup rescue [] #rescue association and class direct filtering
 
     scope.scope_attributes.each do |attr, value|
-      next if attr == 'type'
-      raise "Non-indexed attribute '#{attr}' speficied in scope_attributes" unless solr_fields.include? attr.to_sym
+      next if attr.to_sym == :type
+
+      raise "#{klass.name}: non-indexed attribute '#{attr}' speficied in scope_attributes" unless solr_fields.include? attr.to_sym
 
       # if the filter is present here, then prefer it
       scopes_applied.reject!{ |name| name == attr.to_sym }
@@ -162,6 +163,8 @@     end
 
     scopes_applied.each do |name|
       #next if name.to_s == options[:filter].to_s
+      # not yet supported as it involves ordering
+      next if name.to_s.in? klass::SEARCH_FILTERS[:order]
 
       has_value = name === Hash
       if has_value
@@ -180,7 +183,7 @@         else
           filter_queries << klass.send("solr_filter_#{name}", *args)
         end
       else
-        raise "Undeclared solr field for scope '#{name}'" if related_field.nil?
+        raise "#{klass.name}: undeclared solr field for scope '#{name}'" if related_field.nil?
         if related_field
           filter_queries << "#{related_field}:true"
         end




diff --git a/plugins/solr/lib/solr_plugin/search_helper.rb b/plugins/solr/lib/solr_plugin/search_helper.rb
index 120126e8d14ab712c914e6eeaefd1f641d664d6a..53d4e1c68e2509ffe2dca5f88e4f3f99eb534aaf 100644
--- a/plugins/solr/lib/solr_plugin/search_helper.rb
+++ b/plugins/solr/lib/solr_plugin/search_helper.rb
@@ -70,13 +70,13 @@
   def solr_filters_queries asset, environment
     case asset
     when :products
-      ['solr_public:true', 'enabled:true']
+      ['solr_is_public:true', 'enabled:true']
     when :catalog, :events, :categories, :product_categories
       []
     when :profiles, :people, :organizations, :communities, :enterprises
-      ['solr_public:true', 'environment_id:%s' % environment.id]
+      ['solr_is_public:true', 'environment_id:%s' % environment.id]
     else
-      ['solr_public:true']
+      ['solr_is_public:true']
     end
   end
 




diff --git a/plugins/solr/test/unit/article_test.rb b/plugins/solr/test/unit/article_test.rb
index 5b68f0e9df5476e903b2cdaabe7035f7fd94e5bc..bd784b3d19f20f52946ea038d97f607bd125ffe1 100644
--- a/plugins/solr/test/unit/article_test.rb
+++ b/plugins/solr/test/unit/article_test.rb
@@ -43,8 +43,8 @@     assert_includes Article.find_by_contents('mosquitos')[:results].docs, a
     assert_includes Article.find_by_contents('beer')[:results].docs, a
     assert_includes Article.find_by_contents('not_a_virus.exe')[:results].docs, a
     # filters
-    assert_includes Article.find_by_contents('bananas', {}, {:filter_queries => ["solr_public:true"]})[:results].docs, a
-    assert_not_includes Article.find_by_contents('bananas', {}, {:filter_queries => ["solr_public:false"]})[:results].docs, a
+    assert_includes Article.find_by_contents('bananas', {}, {:filter_queries => ["solr_is_public:true"]})[:results].docs, a
+    assert_not_includes Article.find_by_contents('bananas', {}, {:filter_queries => ["solr_is_public:false"]})[:results].docs, a
     assert_includes Article.find_by_contents('bananas', {}, {:filter_queries => ["environment_id:\"#{Environment.default.id}\""]})[:results].docs, a
     assert_includes Article.find_by_contents('bananas', {}, {:filter_queries => ["profile_id:\"#{person.id}\""]})[:results].docs, a
     # includes




diff --git a/plugins/solr/test/unit/product_test.rb b/plugins/solr/test/unit/product_test.rb
index 0ad05cc6a9a9060bfccd0e8dc09b7117fcb49162..a0cf92d9cdd30e3ce19530440a4d4a345ba3de7a 100644
--- a/plugins/solr/test/unit/product_test.rb
+++ b/plugins/solr/test/unit/product_test.rb
@@ -57,8 +57,8 @@     assert_includes Product.find_by_contents('bananas')[:results].docs, p
     assert_includes Product.find_by_contents('mosquitos')[:results].docs, p
     assert_includes Product.find_by_contents('homemade')[:results].docs, p
     # filters
-    assert_includes Product.find_by_contents('bananas', {}, { :filter_queries => ["solr_public:true"]})[:results].docs, p
-    assert_not_includes Product.find_by_contents('bananas', {}, { :filter_queries => ["solr_public:false"]})[:results].docs, p
+    assert_includes Product.find_by_contents('bananas', {}, { :filter_queries => ["solr_is_public:true"]})[:results].docs, p
+    assert_not_includes Product.find_by_contents('bananas', {}, { :filter_queries => ["solr_is_public:false"]})[:results].docs, p
     assert_includes Product.find_by_contents('bananas', {}, { :filter_queries => ["environment_id:\"#{Environment.default.id}\""]})[:results].docs, p
     # includes
     assert_includes Product.find_by_contents("homemade")[:results].docs, p




diff --git a/plugins/solr/test/unit/profile_test.rb b/plugins/solr/test/unit/profile_test.rb
index bdb601a0b011f0210068f32e90af7ec14609c8dc..ad8fd131973e39330f70ea17cee9d49990b43639 100644
--- a/plugins/solr/test/unit/profile_test.rb
+++ b/plugins/solr/test/unit/profile_test.rb
@@ -41,8 +41,8 @@     # fields
     assert_includes Profile.find_by_contents('Hiro')[:results].docs, p
     assert_includes Profile.find_by_contents('Protagonist')[:results].docs, p
     # filters
-    assert_includes Profile.find_by_contents('Hiro', {}, { :filter_queries => ["solr_public:true"]})[:results].docs, p
-    assert_not_includes Profile.find_by_contents('Hiro', {}, { :filter_queries => ["solr_public:false"]})[:results].docs, p
+    assert_includes Profile.find_by_contents('Hiro', {}, { :filter_queries => ["solr_is_public:true"]})[:results].docs, p
+    assert_not_includes Profile.find_by_contents('Hiro', {}, { :filter_queries => ["solr_is_public:false"]})[:results].docs, p
     assert_includes Profile.find_by_contents('Hiro', {}, { :filter_queries => ["environment_id:\"#{Environment.default.id}\""]})[:results].docs, p
     # includes
     assert_includes Profile.find_by_contents("Inglewood")[:results].docs, p




diff --git a/plugins/solr/test/unit/solr_plugin/plugin_test.rb b/plugins/solr/test/unit/solr_plugin/plugin_test.rb
index 8b82ddcc5e2d48e47ecf76d5dd582b884517a171..0733198c016e1523848ad1310710fe2356a3ccc0 100644
--- a/plugins/solr/test/unit/solr_plugin/plugin_test.rb
+++ b/plugins/solr/test/unit/solr_plugin/plugin_test.rb
@@ -10,7 +10,7 @@
   should 'convert scopes to solr filters' do
     person = create_user('test').person
     result = plugin.send :scopes_to_solr_filters, person.files.public.published
-    assert_equal result, ["profile_id:#{person.id}", "published:'true'", "solr_public:true"]
+    assert_equal result, ["profile_id:#{person.id}", "published:'true'", "solr_is_public:true"]
   end
 
 end