Source code for users_api.management.commands.users_group_remove

from typing import Any

from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group
from django.core.management.base import (
    BaseCommand,
    CommandError,
    CommandParser,
)


[docs] class Command(BaseCommand): """Remove user from group(s)""" help = "Remove user from group(s)"
[docs] def add_arguments(self, parser: CommandParser) -> None: parser.add_argument("email", type=str) parser.add_argument("groups", type=str)
[docs] def handle(self, *args: Any, **options: Any) -> None: # noqa:ARG002 try: UserModel = get_user_model() # pylint: disable=invalid-name user = UserModel.objects.get(email=options["email"]) groups: set[str] = set(options["groups"].split(":")) group_objects: list[Group] = [] for group_name in groups: print(f"Collecting group '{group_name}'...") group_objects.append(Group.objects.get(name=group_name)) for group in group_objects: group.user_set.remove(user) print("\033[92m" + "Successfully removed group(s)." + "\033[0m") except UserModel.DoesNotExist as exc: raise CommandError("User not found") from exc except Group.DoesNotExist as exc: raise CommandError("Group not found") from exc