def test_non_existing_permission(self): self.assertFalse( check_single_permission(self.user, 'not.exist', self.group) ) self.assertFalse( check_single_permission(self.user, 'not.exist') )
def test_single_permission_helper_on_object(self): self.assertFalse( check_single_permission(self.user, self.permission_key, self.group) ) self.user.permissions.add(self.permission, obj=self.group) self.assertTrue( check_single_permission(self.user, self.permission_key, self.group) )
def test_single_permission_helper_global(self): self.assertFalse( check_single_permission(self.user, self.permission_key, self.group) ) self.user.permissions.add(self.permission) self.assertTrue( check_single_permission(self.user, self.permission_key, self.group) )
def test_single_permission_helper_on_object(self): self.assertFalse( check_single_permission(self.user, self.permission_key, self.group) ) self.user.permissions.add(self.permission, TEST_REASON, obj=self.group, responsible=self.responsible_user) self.assertTrue( check_single_permission(self.user, self.permission_key, self.group) ) self.assertEqual(self.HistoryOwnerToPermission.objects.count(), 1)
def test_single_permission_global(self): self.assertFalse( check_single_permission(self.user, self.permission_key)) self.user.permissions.add(self.permission, TEST_REASON, obj=self.group) self.assertFalse( check_single_permission(self.user, self.permission_key)) self.user.permissions.add(self.permission, TEST_REASON) self.assertTrue(check_single_permission(self.user, self.permission_key)) self.assertEqual(self.HistoryOwnerToPermission.objects.count(), 2)
def has_perm(self, user_obj, perm, obj=None): if not user_obj.is_active or user_obj.is_anonymous: return False disable_cache = getattr(settings, 'DISABLE_GENERIC_PERMISSION_CACHE', False) cache_field_name = get_cache_field_name(obj) + '_dict' if not hasattr(user_obj, cache_field_name) or disable_cache: setattr(user_obj, cache_field_name, {}) perm_dict = getattr(user_obj, cache_field_name) if perm not in perm_dict or disable_cache: check_result = check_single_permission(user_obj, perm, obj) perm_dict[perm] = check_result return perm_dict[perm]
def has_perm(self, user_obj, perm, obj=None): if not user_obj.is_active or user_obj.is_anonymous: return False disable_cache = getattr(settings, 'DISABLE_GENERIC_PERMISSION_CACHE', False) cache_field_name = get_cache_field_name(obj) + '_dict' if not hasattr(user_obj, cache_field_name) or disable_cache: setattr(user_obj, cache_field_name, {}) perm_dict = getattr(user_obj, cache_field_name) # Check cached all permissions set. # It is not empty if has_perm() is called after get_all_permissions() if not disable_cache and not obj: all_perms_cache_field_name = get_cache_field_name() all_perms_set = getattr(user_obj, all_perms_cache_field_name, None) if all_perms_set is not None: perm_dict[perm] = perm in all_perms_set if perm not in perm_dict or disable_cache: check_result = check_single_permission(user_obj, perm, obj) perm_dict[perm] = check_result return perm_dict[perm]