소스 검색

HUE-8530 [organization] Add org filtering to Group manager

Romain 5 년 전
부모
커밋
bf3cba6daf
2개의 변경된 파일22개의 추가작업 그리고 8개의 파일을 삭제
  1. 17 8
      apps/useradmin/src/useradmin/models2.py
  2. 5 0
      apps/useradmin/src/useradmin/models2_tests.py

+ 17 - 8
apps/useradmin/src/useradmin/models2.py

@@ -76,6 +76,11 @@ class Organization(models.Model):
 
 class OrganizationGroupManager(models.Manager):
 
+  def get_queryset(self):
+    """Make sure to restrict to only organization's groups"""
+    queryset = super(OrganizationGroupManager, self).get_queryset()
+    return _fitered_queryset(queryset)
+
   def natural_key(self):
     return (self.organization, self.name,)
 
@@ -109,14 +114,7 @@ class UserManager(BaseUserManager):
   def get_queryset(self):
     """Make sure to restrict to only organization's user"""
     queryset = super(UserManager, self).get_queryset()
-    request = CrequestMiddleware.get_request()
-
-    if request and hasattr(request, 'user') and type(request.user._wrapped) is not object:  # Avoid infinite recursion
-      queryset = queryset.filter(
-        organization=request.user.organization
-      )
-
-    return queryset
+    return _fitered_queryset(queryset)
 
   def _create_user(self, email, password, **extra_fields):
     """Create and save a User with the given email and password."""
@@ -190,3 +188,14 @@ class OrganizationUser(AbstractUser):
   @username.setter
   def username(self, value):
     pass
+
+
+def _fitered_queryset(queryset):
+  request = CrequestMiddleware.get_request()
+
+  if request and hasattr(request, 'user') and type(request.user._wrapped) is not object:  # Avoid infinite recursion
+    queryset = queryset.filter(
+      organization=request.user.organization
+    )
+
+  return queryset

+ 5 - 0
apps/useradmin/src/useradmin/models2_tests.py

@@ -85,3 +85,8 @@ class TestOrganizationSingleUser(unittest.TestCase):
 
     assert_equal(0, data['status'])
     assert_equal([self.user1.email], [user['username'] for user in data['users']])
+
+  def test_get_groups(self):
+    # View
+    response = self.client1.get('/useradmin/groups/')
+    assert_equal(list(self.user1.groups.all()), list(response.context[0]['groups']))