Source code for users_api.management.commands.users_add

import csv
from typing import Any

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

from users_api.models import WdaeUser

from .import_base import ImportUsersBase


[docs] class Command(ImportUsersBase, BaseCommand): """Add users from a CSV file.""" help = ( "Add users from csv. " "Required column names for the csv file - Email." "Optional column names - Groups, Name, Password" )
[docs] def add_arguments(self, parser: CommandParser) -> None: parser.add_argument("file", type=str)
[docs] def handle(self, *_args: Any, **options: Any) -> None: try: with open(options["file"], "r") as csvfile: csv_reader = csv.DictReader(csvfile) users = list(csv_reader) for user in users: email = BaseUserManager.normalize_email(user["Email"]) if WdaeUser.objects.filter(email=email).exists(): print(f"User {email} already exists") else: self.handle_user(user) print( "\033[92m" "Successfully added the users from the file!" "\033[0m") except csv.Error as exc: raise CommandError( f'There was a problem while reading "{options["file"]}"', ) from exc except OSError as exc: raise CommandError(f'File "{options["file"]}" not found') from exc