#34542: Required fields allowed to be blank are not accepted non-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:

> 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 as required, but is also marked in a way to
> allow it to be empty.
>
> This is the section of the code that deals with validating required
> fields when createsuperuser is called **interactively**...
> [https://github.com/django/django/blob/main/django/contrib/auth/management/commands/createsuperuser.py#L143]
>
> This is the section of the code that deals with validating required
> fields when createsuperuser is called **non-interactively**...
> [https://github.com/django/django/blob/main/django/contrib/auth/management/commands/createsuperuser.py#L219]
>
> Although required fields are enforced, the **non-interactive** code
> doesn't allow for those to be blank, where blank required fields are
> permitted.  I've tried to set a field like 'email' to blank **non-
> interactively** but nothing works, for example...
>
> a) just don't set the email field either through an argument or an
> environment variable... it'll 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
>
> Hope this makes sense :)

New description:

 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 these lines...
 [https://github.com/django/django/blob/main/django/contrib/auth/models.py#L378]
 and
 [https://github.com/django/django/blob/main/django/contrib/auth/models.py#L358]

 The 'email' field is marked as required, but is also marked in a way to
 allow it to be empty.

 This section of the code validates required fields when createsuperuser is
 called **interactively**...
 
[https://github.com/django/django/blob/main/django/contrib/auth/management/commands/createsuperuser.py#L143]

 This section of the code validates required fields when createsuperuser is
 called **non-interactively**...
 
[https://github.com/django/django/blob/main/django/contrib/auth/management/commands/createsuperuser.py#L219]

 Although required fields are enforced, the **non-interactive** code
 doesn't allow for those to be blank, where blank required fields are
 permitted.  I've tried to set a field like 'email' to blank **non-
 interactively** but nothing works, for example...

 a) just don't set the email field either through an argument or an
 environment variable... it'll 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

 Hope this makes sense :)

--

-- 
Ticket URL: <https://code.djangoproject.com/ticket/34542#comment:6>
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 django-updates+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/01070187ff06e578-f936e69f-ec70-40d6-aa41-bb20efa8908f-000000%40eu-central-1.amazonses.com.

Reply via email to