summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Hobley <karlhobley10@gmail.com>2015-03-16 21:55:44 +0000
committerTim Graham <timograham@gmail.com>2015-03-20 18:25:06 -0400
commitaea02ddfb7c610db9a7cb291b113d6e561d8eba9 (patch)
treec14c443387345ccf346360f169b143120ba67264
parenta3e75f6bede9eab2933295780d8643509cea09f1 (diff)
Fixed #24490 -- Set LogEntry.change_message when adding an object.
-rw-r--r--django/contrib/admin/options.py19
-rw-r--r--tests/admin_views/tests.py13
2 files changed, 23 insertions, 9 deletions
diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py
index 873ca08fa7..24ba84c7bd 100644
--- a/django/contrib/admin/options.py
+++ b/django/contrib/admin/options.py
@@ -696,7 +696,7 @@ class ModelAdmin(BaseModelAdmin):
def get_paginator(self, request, queryset, per_page, orphans=0, allow_empty_first_page=True):
return self.paginator(queryset, per_page, orphans, allow_empty_first_page)
- def log_addition(self, request, object):
+ def log_addition(self, request, object, message):
"""
Log that an object has been successfully added.
@@ -708,7 +708,8 @@ class ModelAdmin(BaseModelAdmin):
content_type_id=get_content_type_for_model(object).pk,
object_id=object.pk,
object_repr=force_text(object),
- action_flag=ADDITION
+ action_flag=ADDITION,
+ change_message=message,
)
def log_change(self, request, object, message):
@@ -724,7 +725,7 @@ class ModelAdmin(BaseModelAdmin):
object_id=object.pk,
object_repr=force_text(object),
action_flag=CHANGE,
- change_message=message
+ change_message=message,
)
def log_deletion(self, request, object, object_repr):
@@ -740,7 +741,7 @@ class ModelAdmin(BaseModelAdmin):
content_type_id=get_content_type_for_model(object).pk,
object_id=object.pk,
object_repr=object_repr,
- action_flag=DELETION
+ action_flag=DELETION,
)
def action_checkbox(self, obj):
@@ -920,12 +921,14 @@ class ModelAdmin(BaseModelAdmin):
return urlencode({'_changelist_filters': preserved_filters})
return ''
- def construct_change_message(self, request, form, formsets):
+ def construct_change_message(self, request, form, formsets, add=False):
"""
Construct a change message from a changed object.
"""
change_message = []
- if form.changed_data:
+ if add:
+ change_message.append(_('Added.'))
+ elif form.changed_data:
change_message.append(_('Changed %s.') % get_text_list(form.changed_data, _('and')))
if formsets:
@@ -1373,11 +1376,11 @@ class ModelAdmin(BaseModelAdmin):
if all_valid(formsets) and form_validated:
self.save_model(request, new_object, form, not add)
self.save_related(request, form, formsets, not add)
+ change_message = self.construct_change_message(request, form, formsets, add)
if add:
- self.log_addition(request, new_object)
+ self.log_addition(request, new_object, change_message)
return self.response_add(request, new_object)
else:
- change_message = self.construct_change_message(request, form, formsets)
self.log_change(request, new_object, change_message)
return self.response_change(request, new_object)
else:
diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py
index 429f9d7b6c..7c299a4774 100644
--- a/tests/admin_views/tests.py
+++ b/tests/admin_views/tests.py
@@ -8,7 +8,7 @@ import unittest
from django.contrib.admin import ModelAdmin
from django.contrib.admin.helpers import ACTION_CHECKBOX_NAME
-from django.contrib.admin.models import DELETION, LogEntry
+from django.contrib.admin.models import ADDITION, DELETION, LogEntry
from django.contrib.admin.options import TO_FIELD_VAR
from django.contrib.admin.templatetags.admin_static import static
from django.contrib.admin.templatetags.admin_urls import add_preserved_filters
@@ -1542,6 +1542,17 @@ class AdminViewPermissionsTest(TestCase):
self.assertEqual(mail.outbox[0].subject, 'Greetings from a created object')
self.client.get(reverse('admin:logout'))
+ # Check that the addition was logged correctly
+ addition_log = LogEntry.objects.all()[0]
+ new_article = Article.objects.last()
+ article_ct = ContentType.objects.get_for_model(Article)
+ self.assertEqual(addition_log.user_id, self.u2.pk)
+ self.assertEqual(addition_log.content_type_id, article_ct.pk)
+ self.assertEqual(addition_log.object_id, str(new_article.pk))
+ self.assertEqual(addition_log.object_repr, "Døm ikke")
+ self.assertEqual(addition_log.action_flag, ADDITION)
+ self.assertEqual(addition_log.change_message, "Added.")
+
# Super can add too, but is redirected to the change list view
self.client.get(self.index_url)
self.client.post(login_url, self.super_login)