Skip to content

User Utilities

user_utils

get_user_permissions(user)

Return all permissions for a user, including group-inherited ones.

Parameters:

Name Type Description Default
user

Django User instance.

required

Returns:

Name Type Description
QuerySet

Combined user and group permissions.

get_permissions_strings(user)

Return permission strings in 'app_label.codename' format for a user.

Parameters:

Name Type Description Default
user

Django User instance.

required

Returns:

Type Description

list[str]: Unique permission strings.

get_current_user_permissions()

Return all permissions for the currently authenticated user.

Returns:

Name Type Description
QuerySet

Combined user and group permissions.

get_current_user_permissions_strings()

Return permission strings for the currently authenticated user.

Returns:

Type Description

list[str]: Permission strings in 'app_label.codename' format.

user_has_perms(user, perms, exclude_superuser=False)

Check if a user has at least one of the given permissions.

Parameters:

Name Type Description Default
user

Django User instance.

required
perms

List of permission strings (e.g. ['app.add_model', 'app.change_model']).

required
exclude_superuser

If True, do not auto-grant for superusers; check actual permissions instead. Defaults to False.

False

Returns:

Name Type Description
bool

True if the user has at least one of the listed permissions.

current_user_has_perms(perms, exclude_superuser=False)

Check if the current user has at least one of the given permissions.

Parameters:

Name Type Description Default
perms

List of permission strings.

required
exclude_superuser

If True, check actual permissions even for superusers.

False

Returns:

Name Type Description
bool

True if the current user has at least one permission.

get_users_for_perms(perms, user_filter=None)

Return all users who have at least one of the given permissions.

Includes users who have the permission directly or via group membership.

Parameters:

Name Type Description Default
perms

List of permission strings (e.g. ['app.view_model']).

required
user_filter

Optional dict of ORM filter kwargs to apply to user querysets.

None

Returns:

Type Description

list[User]: Users with matching permissions.

is_superuser(user)

Check if a user is an active staff superuser.

Parameters:

Name Type Description Default
user

Django User instance.

required

Returns:

Name Type Description
bool

True if user is active, staff, and superuser.

user_passes_test(test_func, login_url=None, redirect_field_name=REDIRECT_FIELD_NAME, raise_exception=False)

View decorator that checks the user against a test function.

Redirects to the login page if the test fails, or raises PermissionDenied if raise_exception is True.

Parameters:

Name Type Description Default
test_func

Callable that takes a User and returns True if access is allowed.

required
login_url

URL to redirect to on failure. Defaults to settings.LOGIN_URL.

None
redirect_field_name

Query parameter name for the redirect URL.

REDIRECT_FIELD_NAME
raise_exception

If True, raise PermissionDenied instead of redirecting.

False

Returns:

Name Type Description
Callable

Decorated view function.

Example
@user_passes_test(lambda u: u.is_staff)
def staff_view(request):
    ...