Commit 95cc44e0e00a6fd77f3f8c1e3c919c7256491d4b

Authored by Rodrigo Souto
1 parent be66917b

person: fix by_role and members_of scopes

Also define all roles as default set for profile_members_controller.
app/controllers/my_profile/profile_members_controller.rb
... ... @@ -3,14 +3,15 @@ class ProfileMembersController < MyProfileController
3 3  
4 4 def index
5 5 @filters = params[:filters] || {:roles => []}
6   - @filters[:roles] = [] unless @filters[:roles]
  6 + all_roles = Profile::Roles.organization_member_roles(environment.id) | Profile::Roles.organization_custom_roles(environment.id, profile.id)
  7 + @filters[:roles] = all_roles unless @filters[:roles].present?
7 8 @data = {}
8 9 field = 'name'
9 10 field = 'email' if @filters[:name] =~ /\@/
10 11  
11 12 @data[:members] = profile.members_by(field,@filters[:name]).by_role(@filters[:roles])
12 13 session[:members_filtered] = @data[:members].map{|m|m.id} if request.post?
13   - @data[:roles] = Profile::Roles.organization_member_roles(environment.id) | Profile::Roles.organization_custom_roles(environment.id, profile.id)
  14 + @data[:roles] = all_roles
14 15  
15 16 end
16 17  
... ...
app/models/person.rb
... ... @@ -22,7 +22,7 @@ class Person < Profile
22 22 joins << :user if User.attribute_names.include? field
23 23  
24 24 conditions = resources.map {|resource| "role_assignments.resource_type = '#{resource.class.base_class.name}' AND role_assignments.resource_id = #{resource.id || -1}"}.join(' OR ')
25   - select('DISTINCT profiles.*').joins(joins).where([conditions])
  25 + distinct.select('profiles.*').joins(joins).where([conditions])
26 26 }
27 27  
28 28 scope :not_members_of, -> resources {
... ... @@ -52,15 +52,6 @@ class Person &lt; Profile
52 52 ( ( friendships.person_id = ? ) OR (profiles.public_profile = ?)) AND (profiles.visible = ?) )', 'environment_administrator', Profile.name, person.id, person.id, true, true]
53 53 ).uniq
54 54 }
55   - scope :by_role, lambda { |roles|
56   -
57   - roles = [roles] unless roles.kind_of?(Array)
58   -
59   - if roles.length > 0
60   - {:select => 'DISTINCT profiles.*', :joins => :role_assignments, :conditions => ['role_assignments.role_id IN (?)', roles] }
61   - end
62   - }
63   -
64 55  
65 56 def has_permission_with_admin?(permission, resource)
66 57 return true if resource.blank? || resource.admins.include?(self)
... ...