diff options
| author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2019-11-28 11:46:08 +0100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2019-11-29 11:10:59 +0100 |
| commit | 9a17ae50c61a3a0ea6c552ce4e3eab27f796d094 (patch) | |
| tree | 868005d98c068d630158c536f0b049bee0a81a43 /django/contrib/auth/migrations/0011_update_proxy_permissions.py | |
| parent | 019a1b9274c645db82593bc5898a279d134b464b (diff) | |
[2.2.x] Fixed #31021 -- Fixed proxy model permissions data migration crash with a multiple databases setup.
Regression in 98296f86b340c8c9c968375d59f1d3a3479e60c2.
Backport of e8fcdaad5c428878d0a5d6ba820d957013f75595 from master
Diffstat (limited to 'django/contrib/auth/migrations/0011_update_proxy_permissions.py')
| -rw-r--r-- | django/contrib/auth/migrations/0011_update_proxy_permissions.py | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/django/contrib/auth/migrations/0011_update_proxy_permissions.py b/django/contrib/auth/migrations/0011_update_proxy_permissions.py index c3f617f438..7409ea1254 100644 --- a/django/contrib/auth/migrations/0011_update_proxy_permissions.py +++ b/django/contrib/auth/migrations/0011_update_proxy_permissions.py @@ -23,6 +23,7 @@ def update_proxy_model_permissions(apps, schema_editor, reverse=False): style = color_style() Permission = apps.get_model('auth', 'Permission') ContentType = apps.get_model('contenttypes', 'ContentType') + alias = schema_editor.connection.alias for Model in apps.get_models(): opts = Model._meta if not opts.proxy: @@ -34,13 +35,14 @@ def update_proxy_model_permissions(apps, schema_editor, reverse=False): permissions_query = Q(codename__in=proxy_default_permissions_codenames) for codename, name in opts.permissions: permissions_query = permissions_query | Q(codename=codename, name=name) - concrete_content_type = ContentType.objects.get_for_model(Model, for_concrete_model=True) - proxy_content_type = ContentType.objects.get_for_model(Model, for_concrete_model=False) + content_type_manager = ContentType.objects.db_manager(alias) + concrete_content_type = content_type_manager.get_for_model(Model, for_concrete_model=True) + proxy_content_type = content_type_manager.get_for_model(Model, for_concrete_model=False) old_content_type = proxy_content_type if reverse else concrete_content_type new_content_type = concrete_content_type if reverse else proxy_content_type try: - with transaction.atomic(): - Permission.objects.filter( + with transaction.atomic(using=alias): + Permission.objects.using(alias).filter( permissions_query, content_type=old_content_type, ).update(content_type=new_content_type) |
