[Git][noosfero/noosfero][master] 3 commits: Fix method to return the roles for a profile and environment

Leandro Nunes gitlab at mg.gitlab.com
Mon Jun 19 17:00:05 BRT 2017


Leandro Nunes pushed to branch master at Noosfero / noosfero


Commits:
7b6b0956 by Josafá Souza Jr at 2017-06-19T15:49:49-03:00
Fix method to return the roles for a profile and environment

- - - - -
abc7f320 by Leandro Nunes at 2017-06-19T19:28:16+00:00
removind byebug form profile_test.rb
- - - - -
b5d61912 by Leandro Nunes at 2017-06-19T19:59:51+00:00
Merge branch 'fix_get_roles' into 'master'

Fix method to return the roles for a profile and environment

See merge request !1246
- - - - -


4 changed files:

- app/api/v1/roles.rb
- app/controllers/my_profile/profile_members_controller.rb
- app/models/profile.rb
- test/unit/profile_test.rb


Changes:

=====================================
app/api/v1/roles.rb
=====================================
--- a/app/api/v1/roles.rb
+++ b/app/api/v1/roles.rb
@@ -13,7 +13,7 @@ module Api
             get do
               profile = environment.profiles.find(params[:profile_id])
               return forbidden! unless profile.kind_of?(Organization)
-              roles = Profile::Roles.organization_roles(profile.environment.id, profile.id)
+              roles = Profile::Roles.organization_member_and_custom_roles(profile.environment.id, profile.id)
               person_roles = []
               if params[:person_id].present?
                 person = environment.people.find(params[:person_id])


=====================================
app/controllers/my_profile/profile_members_controller.rb
=====================================
--- a/app/controllers/my_profile/profile_members_controller.rb
+++ b/app/controllers/my_profile/profile_members_controller.rb
@@ -3,7 +3,7 @@ class ProfileMembersController < MyProfileController
 
   def index
     @filters = params[:filters] || {:roles => []}
-    all_roles = Profile::Roles.organization_member_roles(environment.id) | Profile::Roles.organization_custom_roles(environment.id, profile.id)
+    all_roles = Profile::Roles.organization_member_and_custom_roles(environment.id, profile.id)
     @filters[:roles] = all_roles unless @filters[:roles].present?
     @data = {}
     field = 'name'


=====================================
app/models/profile.rb
=====================================
--- a/app/models/profile.rb
+++ b/app/models/profile.rb
@@ -64,6 +64,10 @@ class Profile < ApplicationRecord
     def self.organization_roles(env_id, profile_id)
       all_roles(env_id).where("profile_id = ?  or key like 'profile_%'", profile_id)
     end
+    def self.organization_member_and_custom_roles(env_id, profile_id) 
+      self.organization_member_roles(env_id) | self.organization_custom_roles(env_id, profile_id)
+    end
+
     def self.all_roles(env_id)
       Role.where(environment_id: env_id)
     end


=====================================
test/unit/profile_test.rb
=====================================
--- a/test/unit/profile_test.rb
+++ b/test/unit/profile_test.rb
@@ -1956,6 +1956,15 @@ class ProfileTest < ActiveSupport::TestCase
     assert_equal roles[2..3], Profile::Roles.organization_member_roles(env.id)
   end
 
+  should 'get organization member and custom roles' do
+    env = fast_create(Environment)
+    env.roles.delete_all
+    profile = fast_create(Organization)
+    roles = %w(profile_foo profile_bar).map{ |r| create(Role, :name => r, :key => r, :environment_id => env.id, :permissions => ["some"]) }
+    roles << create(Role, name: 'test', key: 'something_else', environment_id: env.id, profile_id: profile.id)
+    assert_equal roles[0..2], Profile::Roles.organization_member_and_custom_roles(env.id, profile.id)
+  end
+
   should 'get organization roles' do
     env = fast_create(Environment)
     env.roles.delete_all



View it on GitLab: https://gitlab.com/noosfero/noosfero/compare/8c633fd040cc777cb5b6b3e2a3f139eebbd28c7b...b5d61912b6ceb97c6cee4b7d242f55cba46158a8

---
View it on GitLab: https://gitlab.com/noosfero/noosfero/compare/8c633fd040cc777cb5b6b3e2a3f139eebbd28c7b...b5d61912b6ceb97c6cee4b7d242f55cba46158a8
You're receiving this email because of your account on gitlab.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.softwarelivre.org/pipermail/noosfero-dev/attachments/20170619/a8991c71/attachment-0001.html>


More information about the Noosfero-dev mailing list