#34542: Required fields not enforced when interactively using createsuperuser
-------------------------------------+-------------------------------------
               Reporter:  Lantizia   |          Owner:  nobody
                   Type:  Bug        |         Status:  new
              Component:             |        Version:  dev
  contrib.auth                       |       Keywords:  auth
               Severity:  Normal     |  createsuperuser superuser email
           Triage Stage:             |      Has patch:  0
  Unreviewed                         |
    Needs documentation:  0          |    Needs tests:  0
Patch needs improvement:  0          |  Easy pickings:  1
                  UI/UX:  0          |
-------------------------------------+-------------------------------------
 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 :)

-- 
Ticket URL: <https://code.djangoproject.com/ticket/34542>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/01070187ec20d2aa-42ff2647-5667-4b1c-986b-fd8f439b851e-000000%40eu-central-1.amazonses.com.

Reply via email to