mirror of
https://github.com/django/django.git
synced 2025-10-31 09:41:08 +00:00
Fixed #34462 -- Made admin log actions in bulk.
This also deprecates ModelAdmin.log_deletion() and LogEntryManager.log_action().
This commit is contained in:
committed by
Mariusz Felisiak
parent
45e0c5892f
commit
40b3975e7d
@@ -4,9 +4,11 @@ from django.contrib.admin.helpers import ACTION_CHECKBOX_NAME
|
||||
from django.contrib.admin.views.main import IS_POPUP_VAR
|
||||
from django.contrib.auth.models import Permission, User
|
||||
from django.core import mail
|
||||
from django.db import connection
|
||||
from django.template.loader import render_to_string
|
||||
from django.template.response import TemplateResponse
|
||||
from django.test import TestCase, override_settings
|
||||
from django.test.utils import CaptureQueriesContext
|
||||
from django.urls import reverse
|
||||
|
||||
from .admin import SubscriberAdmin
|
||||
@@ -74,8 +76,21 @@ class AdminActionsTest(TestCase):
|
||||
self.assertContains(confirmation, "<li>Subscribers: 2</li>")
|
||||
self.assertContains(confirmation, "<li>External subscribers: 1</li>")
|
||||
self.assertContains(confirmation, ACTION_CHECKBOX_NAME, count=2)
|
||||
self.client.post(
|
||||
reverse("admin:admin_views_subscriber_changelist"), delete_confirmation_data
|
||||
with CaptureQueriesContext(connection) as ctx:
|
||||
self.client.post(
|
||||
reverse("admin:admin_views_subscriber_changelist"),
|
||||
delete_confirmation_data,
|
||||
)
|
||||
# Log entries are inserted in bulk.
|
||||
self.assertEqual(
|
||||
len(
|
||||
[
|
||||
q["sql"]
|
||||
for q in ctx.captured_queries
|
||||
if q["sql"].startswith("INSERT")
|
||||
]
|
||||
),
|
||||
1,
|
||||
)
|
||||
self.assertEqual(Subscriber.objects.count(), 0)
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
from django.contrib.admin.models import CHANGE, LogEntry
|
||||
from django.contrib.admin.tests import AdminSeleniumTestCase
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.core.paginator import Paginator
|
||||
from django.test import TestCase, override_settings
|
||||
from django.urls import reverse
|
||||
@@ -61,15 +60,13 @@ class SeleniumTests(AdminSeleniumTestCase):
|
||||
password="secret",
|
||||
email="super@example.com",
|
||||
)
|
||||
content_type_pk = ContentType.objects.get_for_model(User).pk
|
||||
for i in range(1, 1101):
|
||||
LogEntry.objects.log_action(
|
||||
LogEntry.objects.log_actions(
|
||||
self.superuser.pk,
|
||||
content_type_pk,
|
||||
self.superuser.pk,
|
||||
repr(self.superuser),
|
||||
[self.superuser],
|
||||
CHANGE,
|
||||
change_message=f"Changed something {i}",
|
||||
single_object=True,
|
||||
)
|
||||
self.admin_login(
|
||||
username="super",
|
||||
|
||||
@@ -3808,33 +3808,27 @@ class AdminViewStringPrimaryKeyTest(TestCase):
|
||||
r"""-_.!~*'() ;/?:@&=+$, <>#%" {}|\^[]`"""
|
||||
)
|
||||
cls.m1 = ModelWithStringPrimaryKey.objects.create(string_pk=cls.pk)
|
||||
content_type_pk = ContentType.objects.get_for_model(
|
||||
ModelWithStringPrimaryKey
|
||||
).pk
|
||||
user_pk = cls.superuser.pk
|
||||
LogEntry.objects.log_action(
|
||||
LogEntry.objects.log_actions(
|
||||
user_pk,
|
||||
content_type_pk,
|
||||
cls.pk,
|
||||
cls.pk,
|
||||
[cls.m1],
|
||||
2,
|
||||
change_message="Changed something",
|
||||
single_object=True,
|
||||
)
|
||||
LogEntry.objects.log_action(
|
||||
LogEntry.objects.log_actions(
|
||||
user_pk,
|
||||
content_type_pk,
|
||||
cls.pk,
|
||||
cls.pk,
|
||||
[cls.m1],
|
||||
1,
|
||||
change_message="Added something",
|
||||
single_object=True,
|
||||
)
|
||||
LogEntry.objects.log_action(
|
||||
LogEntry.objects.log_actions(
|
||||
user_pk,
|
||||
content_type_pk,
|
||||
cls.pk,
|
||||
cls.pk,
|
||||
[cls.m1],
|
||||
3,
|
||||
change_message="Deleted something",
|
||||
single_object=True,
|
||||
)
|
||||
|
||||
def setUp(self):
|
||||
|
||||
Reference in New Issue
Block a user