#34165: migrate management command does not respect database parameter when 
adding
Permissions.
------------------------------+------------------------------------
     Reporter:  Vasanth       |                    Owner:  nobody
         Type:  Bug           |                   Status:  new
    Component:  contrib.auth  |                  Version:  4.1
     Severity:  Normal        |               Resolution:
     Keywords:                |             Triage Stage:  Accepted
    Has patch:  0             |      Needs documentation:  0
  Needs tests:  0             |  Patch needs improvement:  0
Easy pickings:  0             |                    UI/UX:  0
------------------------------+------------------------------------

Comment (by David Wobrock):

 Replying to [comment:3 Mariusz Felisiak]:
 > Thanks for this report, it's related with adding missing permissions. I
 was able to fix this by setting `_state.db`, however I'm not convinced
 that it's the best solution:
 > {{{#!diff
 > diff --git a/django/contrib/auth/management/__init__.py
 b/django/contrib/auth/management/__init__.py
 > index 0b5a982617..27fe0df1d7 100644
 > --- a/django/contrib/auth/management/__init__.py
 > +++ b/django/contrib/auth/management/__init__.py
 > @@ -94,12 +94,15 @@ def create_permissions(
 >          )
 >          .values_list("content_type", "codename")
 >      )
 > -
 > -    perms = [
 > -        Permission(codename=codename, name=name, content_type=ct)
 > -        for ct, (codename, name) in searched_perms
 > -        if (ct.pk, codename) not in all_perms
 > -    ]
 > +    perms = []
 > +    for ct, (codename, name) in searched_perms:
 > +        if (ct.pk, codename) not in all_perms:
 > +            permission = Permission()
 > +            permission._state.db = using
 > +            permission.codename = codename
 > +            permission.name = name
 > +            permission.content_type = ct
 > +            perms.append(permission)
 >      Permission.objects.using(using).bulk_create(perms)
 >      if verbosity >= 2:
 >          for perm in perms:
 >
 > }}}
 >
 > Partly related to #29843.

 I think `bulk_create` already sets the `_state.db` to the value passed in
 `.using()`, right?
 Or is it in `bulk_create` that we require `_state.db` to be set earlier?
 In which case, we could perhaps change something inside of this method.


 Replying to [comment:5 Vasanth]:
 > After diving a bit deeper it turned out that the issue was with one of
 the libraries in my project which was not adapted for multi-DB. I've made
 a PR with changes on the django-admin-interface which resolved my issue.

 So would it be relevant to close the issue or is the bug really related to
 Django itself?

-- 
Ticket URL: <https://code.djangoproject.com/ticket/34165#comment:8>
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/0107018529b69282-aa5076be-10e7-4a6f-94c8-56e0b04029e0-000000%40eu-central-1.amazonses.com.

Reply via email to