Commit 95cc44e0e00a6fd77f3f8c1e3c919c7256491d4b
1 parent
be66917b
Exists in
web_steps_improvements
and in
9 other branches
person: fix by_role and members_of scopes
Also define all roles as default set for profile_members_controller.
Showing
2 changed files
with
4 additions
and
12 deletions
Show diff stats
app/controllers/my_profile/profile_members_controller.rb
@@ -3,14 +3,15 @@ class ProfileMembersController < MyProfileController | @@ -3,14 +3,15 @@ class ProfileMembersController < MyProfileController | ||
3 | 3 | ||
4 | def index | 4 | def index |
5 | @filters = params[:filters] || {:roles => []} | 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 | @data = {} | 8 | @data = {} |
8 | field = 'name' | 9 | field = 'name' |
9 | field = 'email' if @filters[:name] =~ /\@/ | 10 | field = 'email' if @filters[:name] =~ /\@/ |
10 | 11 | ||
11 | @data[:members] = profile.members_by(field,@filters[:name]).by_role(@filters[:roles]) | 12 | @data[:members] = profile.members_by(field,@filters[:name]).by_role(@filters[:roles]) |
12 | session[:members_filtered] = @data[:members].map{|m|m.id} if request.post? | 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 | end | 16 | end |
16 | 17 |
app/models/person.rb
@@ -22,7 +22,7 @@ class Person < Profile | @@ -22,7 +22,7 @@ class Person < Profile | ||
22 | joins << :user if User.attribute_names.include? field | 22 | joins << :user if User.attribute_names.include? field |
23 | 23 | ||
24 | conditions = resources.map {|resource| "role_assignments.resource_type = '#{resource.class.base_class.name}' AND role_assignments.resource_id = #{resource.id || -1}"}.join(' OR ') | 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 | scope :not_members_of, -> resources { | 28 | scope :not_members_of, -> resources { |
@@ -52,15 +52,6 @@ class Person < Profile | @@ -52,15 +52,6 @@ class Person < Profile | ||
52 | ( ( friendships.person_id = ? ) OR (profiles.public_profile = ?)) AND (profiles.visible = ?) )', 'environment_administrator', Profile.name, person.id, person.id, true, true] | 52 | ( ( friendships.person_id = ? ) OR (profiles.public_profile = ?)) AND (profiles.visible = ?) )', 'environment_administrator', Profile.name, person.id, person.id, true, true] |
53 | ).uniq | 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 | def has_permission_with_admin?(permission, resource) | 56 | def has_permission_with_admin?(permission, resource) |
66 | return true if resource.blank? || resource.admins.include?(self) | 57 | return true if resource.blank? || resource.admins.include?(self) |