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 | 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 < 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) | ... | ... |