Permalink
Browse files

Merge pull request #931 from catalanojuan/fix-admin-log-dependency-on…

…-user-id-field-20088

Fixed #20088 -- Changed get_admin_log not to depend on User id field
  • Loading branch information...
2 parents bc4111b + 054ce2a commit 7a3409fc645c3e9c839fef08f05ec3bbcd9fb9cb @ptone ptone committed Mar 19, 2013
Showing with 25 additions and 3 deletions.
  1. +2 −2 django/contrib/admin/templatetags/log.py
  2. +3 −0 tests/admin_changelist/models.py
  3. +20 −1 tests/admin_changelist/tests.py
View
4 django/contrib/admin/templatetags/log.py
@@ -16,8 +16,8 @@ def render(self, context):
else:
user_id = self.user
if not user_id.isdigit():
- user_id = context[self.user].id
- context[self.varname] = LogEntry.objects.filter(user__id__exact=user_id).select_related('content_type', 'user')[:int(self.limit)]
+ user_id = context[self.user].pk
+ context[self.varname] = LogEntry.objects.filter(user__pk__exact=user_id).select_related('content_type', 'user')[:int(self.limit)]
return ''
@register.tag
View
3 tests/admin_changelist/models.py
@@ -87,3 +87,6 @@ class OrderedObject(models.Model):
number = models.IntegerField(default=0, db_column='number_val')
objects = OrderedObjectManager()
+
+class CustomIdUser(models.Model):
+ uuid = models.AutoField(primary_key=True)
View
21 tests/admin_changelist/tests.py
@@ -20,7 +20,7 @@
SwallowAdmin, DynamicListFilterChildAdmin)
from .models import (Event, Child, Parent, Genre, Band, Musician, Group,
Quartet, Membership, ChordsMusician, ChordsBand, Invitation, Swallow,
- UnorderedObject, OrderedObject)
+ UnorderedObject, OrderedObject, CustomIdUser)
class ChangeListTests(TestCase):
@@ -563,3 +563,22 @@ def test_dynamic_list_filter(self):
request = self._mocked_authenticated_request('/child/', user_parents)
response = m.changelist_view(request)
self.assertEqual(response.context_data['cl'].list_filter, ('parent', 'name', 'age'))
+
+class AdminLogNodeTestCase(TestCase):
+
+ def test_get_admin_log_templatetag_custom_user(self):
+ """
+ Regression test for ticket #20088: admin log depends on User model
+ having id field as primary key.
+
+ The old implementation raised an AttributeError when trying to use
+ the id field.
+ """
+ context = Context({'user': CustomIdUser()})
+ template_string = '{% load log %}{% get_admin_log 10 as admin_log for_user user %}'
+
+ template = Template(template_string)
+
+ # Rendering should be u'' since this templatetag just logs,
+ # it doesn't render any string.
+ self.assertEquals(template.render(context), u'')

0 comments on commit 7a3409f

Please sign in to comment.