Commit 5e74d6cf authored by Alejandro Gómez's avatar Alejandro Gómez Committed by Tim Graham
Browse files

[1.7.x] Fixed #21084 -- Used proxy model's content type for admin log entries.

Backport of 7a7f6fcc from master
parent 38679254
Loading
Loading
Loading
Loading
+33 −1
Original line number Diff line number Diff line
@@ -54,7 +54,7 @@ from .models import (Article, BarAccount, CustomArticle, EmptyModel, FooAccount,
    Report, MainPrepopulated, RelatedPrepopulated, UnorderedObject,
    Simple, UndeletableObject, UnchangeableObject, Choice, ShortMessage,
    Telegram, Pizza, Topping, FilteredManager, City, Restaurant, Worker,
    ParentWithDependentChildren, Character, FieldOverridePost)
    ParentWithDependentChildren, Character, FieldOverridePost, Color2)
from .admin import site, site2, CityAdmin


@@ -669,6 +669,38 @@ class AdminViewBasicTest(AdminViewBasicTestCase):
        with self.assertRaises(NoReverseMatch):
            reverse('admin:app_list', args=('admin_views2',))

    def test_proxy_model_content_type_is_used_for_log_entries(self):
        """
        Log entries for proxy models should have the proxy model's content
        type.

        Regression test for #21084.
        """
        color2_content_type = ContentType.objects.get_for_model(Color2, for_concrete_model=False)

        # add
        color2_add_url = reverse('admin:admin_views_color2_add')
        self.client.post(color2_add_url, {'value': 'orange'})

        color2_addition_log = LogEntry.objects.all()[0]
        self.assertEqual(color2_content_type, color2_addition_log.content_type)

        # change
        color_id = color2_addition_log.object_id
        color2_change_url = reverse('admin:admin_views_color2_change', args=(color_id))

        self.client.post(color2_change_url, {'value': 'blue'})

        color2_change_log = LogEntry.objects.all()[0]
        self.assertEqual(color2_content_type, color2_change_log.content_type)

        # delete
        color2_delete_url = reverse('admin:admin_views_color2_delete', args=(color_id))
        self.client.post(color2_delete_url)

        color2_delete_log = LogEntry.objects.all()[0]
        self.assertEqual(color2_content_type, color2_delete_log.content_type)


@override_settings(TEMPLATE_DIRS=ADMIN_VIEW_TEMPLATES_DIR)
class AdminCustomTemplateTests(AdminViewBasicTestCase):