34 lines
1.6 KiB
Diff
34 lines
1.6 KiB
Diff
This is a Django issue but the current directory is not the Django repository. The task is asking me to generate a patch for the Django project. Let me create the patch based on the issue description and the hints provided. The fix is in `django/contrib/auth/management/__init__.py`.
|
|
|
|
Based on the issue description and hints, the problem is:
|
|
1. When `migrate` command is run with a `--database` parameter, the permission creation doesn't respect this parameter
|
|
2. When creating `Permission` objects, the `_state.db` is not set, causing `get_content_type()` to look in the default database instead of the specified one
|
|
3. The fix is to set `_state.db = using` on each `Permission` object before setting the `content_type`
|
|
|
|
Here's the patch based on the hint provided by Mariusz Felisiak:
|
|
|
|
--- a/django/contrib/auth/management/__init__.py
|
|
+++ b/django/contrib/auth/management/__init__.py
|
|
@@ -94,10 +94,14 @@ 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(
|
|
+ codename=codename,
|
|
+ name=name,
|
|
+ content_type=ct,
|
|
+ )
|
|
+ permission._state.db = using
|
|
+ perms.append(permission)
|
|
Permission.objects.using(using).bulk_create(perms)
|
|
if verbosity >= 2:
|
|
for perm in perms:
|