﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
29616	Do not ask password in createsuperuser command if used custom user model without password field	Semyon Pupkov	Josh Schneier	"In a case when user model customized as:

{{{
from django.contrib.auth.base_user import AbstractBaseUser

class UserManager(BaseUserManager):
    def _create_user(self, portal_user_id, email, **extra_fields):
        del extra_fields['password'] <<-- trick to fix errror

        email = self.normalize_email(email)
        user = self.model(portal_user_id=portal_user_id, email=email, **extra_fields)
        user.save(using=self._db)
        return user

    def create_superuser(self, portal_user_id, email=None, **extra_fields):
        return self._create_user(portal_user_id, email, **extra_fields)


class User(AbstractBaseUser):
    password = None
    last_login = None
    
    objects = UserManager()
    ...
}}}

command ./manage.py createsuperuser --email=me@me.com should not ask password if settings.AUTH_USER_MODEL does not have a password
command  ./manage.py createsuperuser --email=me@me.com --noinput should not pass a password to create_superuser method

Traceback
{{{
Traceback (most recent call last):
  File ""./manage.py"", line 15, in <module>
    execute_from_command_line(sys.argv)
  File ""/app/.venv/lib/python3.7/site-packages/django/core/management/__init__.py"", line 371, in execute_from_command_line
    utility.execute()
  File ""/app/.venv/lib/python3.7/site-packages/django/core/management/__init__.py"", line 365, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File ""/app/.venv/lib/python3.7/site-packages/django/core/management/base.py"", line 288, in run_from_argv
    self.execute(*args, **cmd_options)
  File ""/app/.venv/lib/python3.7/site-packages/django/contrib/auth/management/commands/createsuperuser.py"", line 59, in execute
    return super().execute(*args, **options)
  File ""/app/.venv/lib/python3.7/site-packages/django/core/management/base.py"", line 335, in execute
    output = self.handle(*args, **options)
  File ""/app/.venv/lib/python3.7/site-packages/django/contrib/auth/management/commands/createsuperuser.py"", line 179, in handle
    self.UserModel._default_manager.db_manager(database).create_superuser(**user_data)
  File ""/app/trc/users/models.py"", line 17, in create_superuser
    return self._create_user(portal_user_id, email, **extra_fields)
  File ""/app/trc/users/models.py"", line 12, in _create_user
    user = self.model(portal_user_id=portal_user_id, email=email, **extra_fields)
  File ""/app/.venv/lib/python3.7/site-packages/django/db/models/base.py"", line 495, in __init__
    raise TypeError(""'%s' is an invalid keyword argument for this function"" % kwarg)
TypeError: 'password' is an invalid keyword argument for this function
}}}"	Cleanup/optimization	closed	contrib.auth	2.1	Normal	fixed	users		Ready for checkin	1	0	0	0	0	0
