Opened 6 years ago
Closed 6 years ago
#29616 closed Cleanup/optimization (fixed)
Do not ask password in createsuperuser command if used custom user model without password field
Reported by: | Semyon Pupkov | Owned by: | Josh Schneier |
---|---|---|---|
Component: | contrib.auth | Version: | 2.1 |
Severity: | Normal | Keywords: | users |
Cc: | Triage Stage: | Ready for checkin | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
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@… should not ask password if settings.AUTH_USER_MODEL does not have a password
command ./manage.py createsuperuser --email=me@… --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
Change History (4)
comment:1 by , 6 years ago
Triage Stage: | Unreviewed → Accepted |
---|---|
Type: | New feature → Cleanup/optimization |
comment:2 by , 6 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:3 by , 6 years ago
Has patch: | set |
---|---|
Triage Stage: | Accepted → Ready for checkin |
Note:
See TracTickets
for help on using tickets.
PR