From 957db004be9f7fb65c5cd2e1f86b5ddd498836d5 Mon Sep 17 00:00:00 2001 From: Leandro Nunes dos Santos Date: Tue, 2 Aug 2016 09:08:12 -0300 Subject: [PATCH] refactoring visible for person query --- app/models/organization.rb | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/app/models/organization.rb b/app/models/organization.rb index 8e66431..d3baf66 100644 --- a/app/models/organization.rb +++ b/app/models/organization.rb @@ -20,33 +20,28 @@ class Organization < Profile # visible. # 4) The user is not a member of the organization but the organization is # visible, public and enabled. - def self.listed_for_person(person) + scope :listed_for_person, lambda { |person| + joins('LEFT JOIN "role_assignments" ON ("role_assignments"."resource_id" = "profiles"."id" AND "role_assignments"."resource_type" = \'Profile\') OR ( "role_assignments"."resource_id" = "profiles"."environment_id" AND "role_assignments"."resource_type" = \'Environment\' )') .joins('LEFT JOIN "roles" ON "role_assignments"."role_id" = "roles"."id"') .where( - ['( (roles.key = ? OR roles.key = ?) AND role_assignments.accessor_type = ? AND role_assignments.accessor_id = ? ) - OR - ( ( ( role_assignments.accessor_type = ? AND role_assignments.accessor_id = ? ) OR - ( profiles.enabled = ? ) ) AND - ( profiles.visible = ? ) )', - 'profile_admin', 'environment_administrator', Profile.name, person.id, - Profile.name, person.id, true, true] - ).uniq - end - - def self.visible_for_person(person) - listed_for_person(person).where( - ['( (roles.key = ? OR roles.key = ?) AND role_assignments.accessor_type = ? AND role_assignments.accessor_id = ? ) - OR + ['( (roles.key = ? OR roles.key = ?) AND role_assignments.accessor_type = ? AND role_assignments.accessor_id = ? ) OR ( + ( ( role_assignments.accessor_type = ? AND role_assignments.accessor_id = ? ) OR ( profiles.enabled = ?)) AND (profiles.visible = ?) )', + 'profile_admin', 'environment_administrator', Profile.name, person.id, Profile.name, person.id, true, true] + ).uniq + } + + scope :visible_for_person, lambda { |person| + listed_for_person(person).where( [' ( ( role_assignments.accessor_type = ? AND role_assignments.accessor_id = ? ) OR - ( profiles.enabled = ? AND profiles.public_profile = ? ) )', - 'profile_admin', 'environment_administrator', Profile.name, person.id, + ( profiles.enabled = ? AND profiles.public_profile = ? ) )', Profile.name, person.id, true, true] ) - end + } + settings_items :closed, :type => :boolean, :default => false def closed? -- libgit2 0.21.2