From aa8a1ea934601a303628df021b74ec31045eef2c Mon Sep 17 00:00:00 2001 From: Hanno Schlichting Date: Fri, 22 Oct 2010 10:14:07 +0000 Subject: [PATCH] Fixed handling of non-ascii member data, like fullname and email. svn path=/plone.app.discussion/trunk/; revision=40789 --- CHANGES.txt | 6 ++++++ plone/app/discussion/browser/comments.py | 5 +++++ plone/app/discussion/comment.py | 2 +- plone/app/discussion/testing.py | 2 +- .../discussion/tests/functional_test_comments.txt | 14 +++++++------- setup.py | 2 +- 6 files changed, 21 insertions(+), 10 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index fed8a50..4ea5e54 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,6 +1,12 @@ Changelog ========= +1.0b11 (unreleased) +------------------- + +- Fixed handling of non-ascii member data, like fullname and email. + [hannosch] + 1.0b10 (2010-10-15) ------------------- diff --git a/plone/app/discussion/browser/comments.py b/plone/app/discussion/browser/comments.py index 767cc31..8a85457 100644 --- a/plone/app/discussion/browser/comments.py +++ b/plone/app/discussion/browser/comments.py @@ -172,6 +172,11 @@ class CommentForm(extensible.ExtensibleForm, form.Form): fullname = member.getProperty('fullname') if not fullname or fullname == '': fullname = member.getUserName() + # memberdata is stored as utf-8 encoded strings + elif isinstance(fullname, str): + fullname = unicode(fullname, 'utf-8') + if email and isinstance(email, str): + email = unicode(email, 'utf-8') comment.creator = fullname comment.author_username = username comment.author_name = fullname diff --git a/plone/app/discussion/comment.py b/plone/app/discussion/comment.py index 3d43266..08ae949 100644 --- a/plone/app/discussion/comment.py +++ b/plone/app/discussion/comment.py @@ -123,7 +123,7 @@ class Comment(CatalogAware, WorkflowAware, DynamicType, Traversable, else: creator = self.creator creator = creator - + # Fetch the content object (the parent of the comment is the # conversation, the parent of the conversation is the content object). content = aq_base(self.__parent__.__parent__) diff --git a/plone/app/discussion/testing.py b/plone/app/discussion/testing.py index 07fc690..076bf82 100644 --- a/plone/app/discussion/testing.py +++ b/plone/app/discussion/testing.py @@ -49,7 +49,7 @@ class PloneAppDiscussion(PloneSandboxLayer): ) mtool = getToolByName(portal, 'portal_membership', None) mtool.addMember('jim', 'Jim', ['Member'], []) - mtool.getMemberById('jim').setMemberProperties({"fullname": 'Jim Fulton'}) + mtool.getMemberById('jim').setMemberProperties({"fullname": 'Jim Fult\xc3\xb8rn'}) acl_users.userFolderAddUser( self.MANAGER_USER_NAME, diff --git a/plone/app/discussion/tests/functional_test_comments.txt b/plone/app/discussion/tests/functional_test_comments.txt index cefb046..1421afc 100644 --- a/plone/app/discussion/tests/functional_test_comments.txt +++ b/plone/app/discussion/tests/functional_test_comments.txt @@ -30,13 +30,13 @@ We also keep another testbrowser handy for testing how tiles are rendered if you're not logged in:: >>> unprivileged_browser = Browser(app) - -Add a test user - + +Make sure we have a test user from the layer and it uses fancy characters: + >>> from Products.CMFCore.utils import getToolByName - >>> mtool = getToolByName(portal, 'portal_membership', None) - >>> mtool.addMember('jim', 'Jim', ['Member'], []) - >>> mtool.getMemberById('jim').setMemberProperties({"fullname": 'Jim Fulton'}) + >>> mtool = getToolByName(portal, 'portal_membership', None) + >>> mtool.getMemberById('jim').getProperty('fullname') + 'Jim Fult\xc3\xb8rn' Create a public page with comments allowed. @@ -118,7 +118,7 @@ Post a comment as user jim. Check if the comment has been added properly. >>> browser.contents - '...Jim Fulton...says:...' + '...Jim Fult\xc3\xb8rn...says:...' >>> "Comment from Jim" in browser.contents True diff --git a/setup.py b/setup.py index 1aa94d4..963de26 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,6 @@ from setuptools import setup, find_packages -version = '1.0b10' +version = '1.0b11' setup(name='plone.app.discussion', version=version,