Opened 19 months ago
Last modified 16 months ago
#34542 closed Bug
Required fields not enforced when interactively using createsuperuser — at Initial Version
Reported by: | Lantizia | Owned by: | nobody |
---|---|---|---|
Component: | contrib.auth | Version: | dev |
Severity: | Normal | Keywords: | auth createsuperuser superuser email |
Cc: | Triage Stage: | Ready for checkin | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | yes | UI/UX: | no |
Description
Disclaimer: I really don't know much about Django... so I might be completely wrong on this.
I've only encountered Django once before (installing mailman3), but this time I was trying to install NetBox and I noticed this sentence in their documentation...
"Specifying an email address for the user is not required" (search for that line in the URL below for better context)
https://docs.netbox.dev/en/stable/installation/3-netbox/
According to this line... https://github.com/django/django/blob/main/django/contrib/auth/models.py#L378
The 'email' field is marked required.
However this section of the code (which is when createsuperuser is called interactively)... https://github.com/django/django/blob/main/django/contrib/auth/management/commands/createsuperuser.py#L143
It doesn't look like it's written in a way which can enforce that, as a result when you run it this way... it lets you to enter nothing for the email field.
However this section of the code (which is when createsuperuser is called non-interactively)... https://github.com/django/django/blob/main/django/contrib/auth/management/commands/createsuperuser.py#L219
Seems to enforce required fields... and it definitely seems to be doing that as I've tried the following ways of not providing a value for the email field in the following ways...
a) don't set the email field either through an argument or an environment variable... it'll still complain it is needed
b) set the email field via a variable as just 'DJANGO_SUPERUSER_EMAIL=' (i.e. setting the variable to null)... it still complains it is needed
c) set the email field via an argument of '--email ""' (i.e. double quotes) or '--email (i.e. double single quotes) or even '--email \ ' (i.e. passing a single space)... it still complains it is needed
So it seems to be that... as least non-interactively it is doing what it is supposed to... and making the 'required' field of 'email' non-optional. But interactively it is failing to do this.
If that is right then the NetBox documentation is wrong (and I can let them know about that) as it would only be accidental that you're capable of not setting an email address for the superuser when using createsuperuser interactively.
Hope this makes sense :)