#29506: Misleading migrate "App 'apps.somethings' does not have migrations." 
error
message with nested apps
-------------------------------------+-------------------------------------
     Reporter:  oliver               |                    Owner:  nobody
         Type:  Bug                  |                   Status:  new
    Component:  Core (Management     |                  Version:  master
  commands)                          |
     Severity:  Normal               |               Resolution:
     Keywords:                       |             Triage Stage:
                                     |  Unreviewed
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------
Description changed by oliver:

Old description:

> If you have a couple of nested apps, or apps that are not available
> directly in the top-level namespace and you use migrate command, and pass
> the full dotted path to this command, the error message is somewhat
> misleading:
>
> {{{
> CommandError: App 'apps.somethings' does not have migrations.
> }}}
>
> In this case,  the somethings app have migrations, but migrate command
> expecting just app_label.
>
> And there is the other misleading error message.
> If you use migrate command and pass nonexistent app in your
> INSTALLED_APP, the error message is somewhat misleading:
>
> {{{
> CommandError: App 'nonexistent_app' does not have migrations.
> }}}
> In this case, the nonexistent_app does not exist, but the error message
> make user think that nonexistent app just don't have migrations.
>
> Currently, makemigrations command check for existence and validity of
> app. As follows
>
> {{{
> # Make sure the app they asked for exists
>         app_labels = set(app_labels)
>         bad_app_labels = set()
>         for app_label in app_labels:
>             try:
>                 apps.get_app_config(app_label)
>             except LookupError:
>                 bad_app_labels.add(app_label)
>         if bad_app_labels:
>             for app_label in bad_app_labels:
>                 if '.' in app_label:
>                     self.stderr.write(
>                         "'%s' is not a valid app label. Did you mean
> '%s'?" % (
>                             app_label,
>                             app_label.split('.')[-1],
>                         )
>                     )
>                 else:
>                     self.stderr.write("App '%s' could not be found. Is it
> in INSTALLED_APPS?" % app_label)
>             sys.exit(2)
> }}}
>
> How about checking that in migrate command?
>
> == This ticket is very similar to
> https://code.djangoproject.com/ticket/29469.
> But it is about migrate not makemigrations.
> Please read this ticket.

New description:

 If you have a couple of nested apps, or apps that are not available
 directly in the top-level namespace and you use migrate command, and pass
 the full dotted path to this command, the error message is somewhat
 misleading:

 {{{
 CommandError: App 'apps.somethings' does not have migrations.
 }}}

 In this case,  the somethings app have migrations, but migrate command
 expecting just app_label.

 And there is the other misleading error message.
 If you use migrate command and pass nonexistent app in your INSTALLED_APP,
 the error message is somewhat misleading:

 {{{
 CommandError: App 'nonexistent_app' does not have migrations.
 }}}
 In this case, the nonexistent_app does not exist, but the error message
 make user think that nonexistent app just don't have migrations.

 Currently, makemigrations command check for existence and validity of app.
 As follows

 {{{
        # Make sure the app they asked for exists
         app_labels = set(app_labels)
         bad_app_labels = set()
         for app_label in app_labels:
             try:
                 apps.get_app_config(app_label)
             except LookupError:
                 bad_app_labels.add(app_label)
         if bad_app_labels:
             for app_label in bad_app_labels:
                 if '.' in app_label:
                     self.stderr.write(
                         "'%s' is not a valid app label. Did you mean
 '%s'?" % (
                             app_label,
                             app_label.split('.')[-1],
                         )
                     )
                 else:
                     self.stderr.write("App '%s' could not be found. Is it
 in INSTALLED_APPS?" % app_label)
             sys.exit(2)
 }}}

 How about checking that in migrate command?

 == This ticket is very similar to
 https://code.djangoproject.com/ticket/29469.
 But it is about migrate not makemigrations.
 Please read this ticket.

--

-- 
Ticket URL: <https://code.djangoproject.com/ticket/29506#comment:2>
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 post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/068.57c1c0de7f6edf7501a8230cdfb2a983%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to