Commit 0a5ba712f9d3c1d52eee5e56b35e9868c967166e

Authored by Thiago Ribeiro
2 parents 12f620db 105ef252
Exists in master and in 79 other branches add_sisp_to_chef, add_super_archives_plugin, api_for_colab, automates_core_packing, backup_not_prod, changes_in_buttons_on_content_panel, colab_automated_login, colab_spb_plugin_recipe, colab_widgets_settings, design_validation, dev_env_minimal, disable_email_dev, fix_breadcrumbs_position, fix_categories_software_link, fix_edit_institution, fix_edit_software_with_another_license, fix_get_license_info, fix_gitlab_assets_permission, fix_list_style_inside_article, fix_list_style_on_folder_elements, fix_members_pagination, fix_merge_request_url, fix_models_translations, fix_no_license, fix_software_api, fix_software_block_migration, fix_software_communities_translations, fix_software_communities_unit_test, fix_style_create_institution_admin_panel, fix_superarchives_imports, fix_sym_links_noosfero, focus_search_field_theme, gov-user-refactoring, gov-user-refactoring-rails4, header_fix, institution_modal_on_rating, kalibro-conf-refactoring, kalibro-processor-package, lxc_settings, margin_fix, mezuro_cookbook, prezento, refactor_download_block, refactor_software_communities, refactor_software_for_sisp, register_page, release-process, release-process-v2, remove-unused-images, remove_broken_theme, remove_secondary_email_from_user, remove_sisp_buttons, removing_super_archives_email, review_message, scope2method, signals_user_noosfero, sisp_catalog_header, sisp_colab_config, sisp_dev, sisp_dev_master, sisp_simple_version, software_as_organization, software_catalog_style_fix, software_communities_html_refactor, software_infos_api, spb_minimal_env, spb_to_rails4, spec_refactor, stable-4.1, stable-4.2, stable-4.x, temp_soft_comm_refactoring, theme_header, theme_javascript_refactory, thread_dropdown, thread_page, update_search_by_categories, update_software_api, update_softwares_boxes

Merge branch 'fix_communities_search' into 'master'

Fix communities search

See merge request !2
lib/ext/communities_block.rb
@@ -4,16 +4,9 @@ class CommunitiesBlock @@ -4,16 +4,9 @@ class CommunitiesBlock
4 4
5 def profile_list 5 def profile_list
6 result = get_visible_profiles 6 result = get_visible_profiles
  7 + valid_communities_string = Community.get_valid_communities_string
7 8
8 - list_without_institution = []  
9 -  
10 - result.each do |profile|  
11 - if profile.class == Community && !profile.institution?  
12 - list_without_institution << profile  
13 - end  
14 - end  
15 -  
16 - result = list_without_institution 9 + result.each{|community| @scope.delete(community) unless eval(valid_communities_string)}
17 10
18 result.slice(0..get_limit-1) 11 result.slice(0..get_limit-1)
19 end 12 end
@@ -26,24 +19,23 @@ class CommunitiesBlock @@ -26,24 +19,23 @@ class CommunitiesBlock
26 19
27 def get_visible_profiles 20 def get_visible_profiles
28 visible_profiles = profiles.visible.includes( 21 visible_profiles = profiles.visible.includes(
29 - [:image,:domains,:preferred_domain,:environment] 22 + [:image,:domains,:preferred_domain,:environment]
30 ) 23 )
31 if !prioritize_profiles_with_image 24 if !prioritize_profiles_with_image
32 return visible_profiles.all( 25 return visible_profiles.all(
33 - :limit => get_limit,  
34 - :order => 'profiles.updated_at DESC' 26 + :limit => get_limit,
  27 + :order => 'profiles.updated_at DESC'
35 ).sort_by {rand} 28 ).sort_by {rand}
36 elsif profiles.visible.with_image.count >= get_limit 29 elsif profiles.visible.with_image.count >= get_limit
37 return visible_profiles.with_image.all( 30 return visible_profiles.with_image.all(
38 - :limit => get_limit * 5,  
39 - :order => 'profiles.updated_at DESC' 31 + :limit => get_limit * 5,
  32 + :order => 'profiles.updated_at DESC'
40 ).sort_by {rand} 33 ).sort_by {rand}
41 else 34 else
42 return visible_profiles.with_image.sort_by {rand} + 35 return visible_profiles.with_image.sort_by {rand} +
43 - visible_profiles.without_image.all(  
44 - :limit => get_limit * 5, :order => 'profiles.updated_at DESC'  
45 - ).sort_by {rand} 36 + visible_profiles.without_image.all(
  37 + :limit => get_limit * 5, :order => 'profiles.updated_at DESC'
  38 + ).sort_by {rand}
46 end 39 end
47 end 40 end
48 -  
49 end 41 end
lib/ext/community.rb
@@ -3,8 +3,20 @@ require_dependency &#39;community&#39; @@ -3,8 +3,20 @@ require_dependency &#39;community&#39;
3 class Community 3 class Community
4 has_one :institution, :dependent=>:destroy 4 has_one :institution, :dependent=>:destroy
5 5
6 -  
7 def institution? 6 def institution?
8 return !institution.nil? 7 return !institution.nil?
9 end 8 end
  9 +
  10 + def remove_of_community_search_institution?
  11 + return institution?
  12 + end
  13 +
  14 + def self.get_valid_communities_string
  15 + remove_of_communities_methods = Community.instance_methods.select{|m| m =~ /remove_of_community_search/}
  16 + valid_communities_string = ""
  17 + remove_of_communities_methods.each do |method|
  18 + valid_communities_string += "!community.send('#{method}') && "
  19 + end
  20 + valid_communities_string[0..-5]
  21 + end
10 end 22 end
lib/ext/search_controller.rb
@@ -3,12 +3,12 @@ require_dependency &#39;search_controller&#39; @@ -3,12 +3,12 @@ require_dependency &#39;search_controller&#39;
3 class SearchController 3 class SearchController
4 4
5 def communities 5 def communities
6 - results = filter_communities_list do |community|  
7 - !community.institution?  
8 - end  
9 - results = results.paginate(:per_page => 24, :page => params[:page])  
10 - @searches[@asset] = {:results => results}  
11 - @search = results 6 + valid_communities_string = Community.get_valid_communities_string
  7 +
  8 + @scope = visible_profiles(Community)
  9 + @scope.each{|community| @scope.delete(community) unless eval(valid_communities_string)}
  10 +
  11 + full_text_search
12 end 12 end
13 13
14 def institutions 14 def institutions