From ae72e25b354f6cc185eeb42a81ac79b83c5a636c Mon Sep 17 00:00:00 2001 From: Jacob Kaplan-Moss Date: Sat, 30 Aug 2008 21:30:02 +0000 Subject: [PATCH] Fixed #8716: correctly handle name and email in comments from authenticated users. git-svn-id: http://code.djangoproject.com/svn/django/trunk@8751 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/contrib/comments/views/comments.py | 4 ++-- .../comment_tests/fixtures/comment_tests.json | 5 ++++- .../comment_tests/tests/comment_view_tests.py | 16 ++++++++++++++++ 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/django/contrib/comments/views/comments.py b/django/contrib/comments/views/comments.py index e2b544545e..e583d9d3ed 100644 --- a/django/contrib/comments/views/comments.py +++ b/django/contrib/comments/views/comments.py @@ -36,9 +36,9 @@ def post_comment(request, next=None): # Fill out some initial data fields from an authenticated user, if present data = request.POST.copy() if request.user.is_authenticated(): - if "name" not in data: + if not data.get('name', ''): data["name"] = request.user.get_full_name() - if "email" not in data: + if not data.get('email', ''): data["email"] = request.user.email # Look up the object we're trying to comment about diff --git a/tests/regressiontests/comment_tests/fixtures/comment_tests.json b/tests/regressiontests/comment_tests/fixtures/comment_tests.json index b10326930e..6731876e22 100644 --- a/tests/regressiontests/comment_tests/fixtures/comment_tests.json +++ b/tests/regressiontests/comment_tests/fixtures/comment_tests.json @@ -37,7 +37,10 @@ "pk" : 100, "fields" : { "username" : "normaluser", - "password" : "34ea4aaaf24efcbb4b30d27302f8657f" + "password" : "34ea4aaaf24efcbb4b30d27302f8657f", + "first_name": "Joe", + "last_name": "Normal", + "email": "joe.normal@example.com" } } ] diff --git a/tests/regressiontests/comment_tests/tests/comment_view_tests.py b/tests/regressiontests/comment_tests/tests/comment_view_tests.py index ac7a1d4a5e..bd9fb4144d 100644 --- a/tests/regressiontests/comment_tests/tests/comment_view_tests.py +++ b/tests/regressiontests/comment_tests/tests/comment_view_tests.py @@ -1,4 +1,5 @@ from django.conf import settings +from django.contrib.auth.models import User from django.contrib.comments import signals from django.contrib.comments.models import Comment from regressiontests.comment_tests.models import Article @@ -84,6 +85,21 @@ class CommentViewTests(CommentTestCase): c = Comment.objects.all()[0] self.assertEqual(c.ip_address, "1.2.3.4") self.assertEqual(c.comment, "This is my comment") + + def testPostAsAuthenticatedUser(self): + a = Article.objects.get(pk=1) + data = self.getValidData(a) + data['name'] = data['email'] = '' + self.client.login(username="normaluser", password="normaluser") + self.response = self.client.post("/post/", data, REMOTE_ADDR="1.2.3.4") + self.assertEqual(self.response.status_code, 302) + self.assertEqual(Comment.objects.count(), 1) + c = Comment.objects.all()[0] + self.assertEqual(c.ip_address, "1.2.3.4") + u = User.objects.get(username='normaluser') + self.assertEqual(c.user, u) + self.assertEqual(c.user_name, u.get_full_name()) + self.assertEqual(c.user_email, u.email) def testPreventDuplicateComments(self): """Prevent posting the exact same comment twice"""