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

Old 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 :)

New 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 :)

--

-- 
Ticket URL: <https://code.djangoproject.com/ticket/34542#comment:1>
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/01070187ec217800-2ef32508-76d5-4617-a73b-89db4c64ed88-000000%40eu-central-1.amazonses.com.

Reply via email to