コード例 #1
0
ファイル: unit.py プロジェクト: clarkperkins/stackdio
    def test_users_with_model_perms_attach_perms(self):
        for perm in CloudAccount.model_permissions:
            users = shortcuts.get_users_with_model_perms(
                CloudAccount,
                attach_perms=True,
                with_group_users=False,
                with_superusers=False,
            )

            self.assertIsInstance(users, dict)
            self.assertEqual(len(users), 0)

            assign_perm('cloud.%s_cloudaccount' % perm, self.user)

            users = shortcuts.get_users_with_model_perms(
                CloudAccount,
                attach_perms=True,
                with_group_users=False,
                with_superusers=False,
            )

            self.assertIsInstance(users, dict)
            self.assertEqual(len(users), 1)
            self.assertTrue(self.user in users)
            self.assertEqual(users[self.user], ['%s_cloudaccount' % perm])

            remove_perm('cloud.%s_cloudaccount' % perm, self.user)
コード例 #2
0
ファイル: unit.py プロジェクト: clarkperkins/stackdio
    def test_users_with_model_perms_wrong_model(self):
        for perm in CloudAccount.model_permissions:
            users = shortcuts.get_users_with_model_perms(
                CloudAccount,
                attach_perms=False,
                with_group_users=False,
                with_superusers=False,
            )

            self.assertEqual(users.count(), 0)

            assign_perm('cloud.%s_cloudimage' % perm, self.user)

            users = shortcuts.get_users_with_model_perms(
                CloudAccount,
                attach_perms=False,
                with_group_users=False,
                with_superusers=False,
            )

            self.assertEqual(users.count(), 0)

            # Make sure assigning the group permissions doesn't show up here
            assign_perm('cloud.%s_cloudimage' % perm, self.group)

            users = shortcuts.get_users_with_model_perms(
                CloudAccount,
                attach_perms=False,
                with_group_users=False,
                with_superusers=False,
            )

            self.assertEqual(users.count(), 0)
コード例 #3
0
    def test_users_with_model_perms_wrong_model(self):
        for perm in CloudAccount.model_permissions:
            users = shortcuts.get_users_with_model_perms(
                CloudAccount,
                attach_perms=False,
                with_group_users=False,
                with_superusers=False,
            )

            self.assertEqual(users.count(), 0)

            assign_perm('cloud.%s_cloudimage' % perm, self.user)

            users = shortcuts.get_users_with_model_perms(
                CloudAccount,
                attach_perms=False,
                with_group_users=False,
                with_superusers=False,
            )

            self.assertEqual(users.count(), 0)

            # Make sure assigning the group permissions doesn't show up here
            assign_perm('cloud.%s_cloudimage' % perm, self.group)

            users = shortcuts.get_users_with_model_perms(
                CloudAccount,
                attach_perms=False,
                with_group_users=False,
                with_superusers=False,
            )

            self.assertEqual(users.count(), 0)
コード例 #4
0
    def test_users_with_model_perms_attach_perms(self):
        for perm in CloudAccount.model_permissions:
            users = shortcuts.get_users_with_model_perms(
                CloudAccount,
                attach_perms=True,
                with_group_users=False,
                with_superusers=False,
            )

            self.assertIsInstance(users, dict)
            self.assertEqual(len(users), 0)

            assign_perm('cloud.%s_cloudaccount' % perm, self.user)

            users = shortcuts.get_users_with_model_perms(
                CloudAccount,
                attach_perms=True,
                with_group_users=False,
                with_superusers=False,
            )

            self.assertIsInstance(users, dict)
            self.assertEqual(len(users), 1)
            self.assertTrue(self.user in users)
            self.assertEqual(users[self.user], ['%s_cloudaccount' % perm])

            remove_perm('cloud.%s_cloudaccount' % perm, self.user)
コード例 #5
0
ファイル: viewsets.py プロジェクト: stackdio/stackdio
    def get_queryset(self):  # pylint: disable=method-hidden
        model_cls = self.get_model_cls()
        model_name = model_cls._meta.model_name
        model_perms = self.get_model_permissions()

        # Grab the perms for either the users or groups
        perm_map_func = self.switch_user_group(
            lambda: get_users_with_model_perms(model_cls, attach_perms=True,
                                               with_group_users=False),
            lambda: get_groups_with_model_perms(model_cls, attach_perms=True),
        )

        # Do this as a function so we don't fetch both the user AND group permissions on each
        # request
        perm_map = perm_map_func()

        ret = []
        sorted_perms = sorted(perm_map.items(), key=lambda x: getattr(x[0], self.lookup_field))
        for auth_obj, perms in sorted_perms:
            new_perms = [self._transform_perm(model_name)(perm) for perm in perms]

            ret.append({
                self.get_user_or_group(): auth_obj,
                'permissions': _filter_perms(model_perms, new_perms),
            })
        return ret
コード例 #6
0
ファイル: unit.py プロジェクト: clarkperkins/stackdio
    def test_users_with_model_perms_with_superusers(self):
        users = shortcuts.get_users_with_model_perms(
            CloudAccount,
            attach_perms=False,
            with_group_users=False,
            with_superusers=True,
        )

        self.assertEqual(users.count(), 1)
        self.assertEqual(users.first(), self.admin)
コード例 #7
0
    def test_users_with_model_perms_with_superusers(self):
        users = shortcuts.get_users_with_model_perms(
            CloudAccount,
            attach_perms=False,
            with_group_users=False,
            with_superusers=True,
        )

        self.assertEqual(users.count(), 1)
        self.assertEqual(users.first(), self.admin)
コード例 #8
0
ファイル: unit.py プロジェクト: clarkperkins/stackdio
    def test_users_with_model_perms_with_groups(self):
        for perm in CloudAccount.model_permissions:
            users = shortcuts.get_users_with_model_perms(
                CloudAccount,
                attach_perms=False,
                with_group_users=True,
                with_superusers=False,
            )

            self.assertEqual(users.count(), 0)

            assign_perm('cloud.%s_cloudaccount' % perm, self.group)

            users = shortcuts.get_users_with_model_perms(
                CloudAccount,
                attach_perms=False,
                with_group_users=True,
                with_superusers=False,
            )

            self.assertEqual(users.count(), 1)
            self.assertEqual(users.first(), self.user)

            remove_perm('cloud.%s_cloudaccount' % perm, self.group)
コード例 #9
0
    def test_users_with_model_perms_with_groups(self):
        for perm in CloudAccount.model_permissions:
            users = shortcuts.get_users_with_model_perms(
                CloudAccount,
                attach_perms=False,
                with_group_users=True,
                with_superusers=False,
            )

            self.assertEqual(users.count(), 0)

            assign_perm('cloud.%s_cloudaccount' % perm, self.group)

            users = shortcuts.get_users_with_model_perms(
                CloudAccount,
                attach_perms=False,
                with_group_users=True,
                with_superusers=False,
            )

            self.assertEqual(users.count(), 1)
            self.assertEqual(users.first(), self.user)

            remove_perm('cloud.%s_cloudaccount' % perm, self.group)