From: Martin A. <opt...@gm...> - 2006-03-25 10:38:46
|
On Sat, 25 Mar 2006 10:18:20 -0000, Martin Aspeli <opt...@gm...> wrote: > On Mon, 20 Feb 2006 05:12:59 -0000, Alexander Limi > <li...@pl...> wrote: > >> Hi, >> >> I just made a change to Plone that makes it show the full name of the >> person logged in instead of just the username. > > Yep, I can confirm that this happens on current Plone svn and CMFMember > 1.1beta from the plone.org/products/cmfmember tarball. Specifically, the problem is this: - global_personalbar.pt does this: <li class="portalUser" tal:define="author python:mtool.getMemberInfo(user.getId())" tal:condition="not: isAnon"><a id="user-name" tal:attributes="href string:${portal_url}/author/${user/getId}"> <span class="visualCaseSensitive" tal:content="python:author and author['fullname'] or user.getId()"> John </span> </a></li> - That calls mtool.getMemberInfo() with the anonymous user when you're not logged. The isAnon condition makes sure it doesn't actually render the personal bar, but it still calls getMemberInfo() since it evaluates the tal:define first. (perhaps that should be changed in the template, but it shouldn't raise an exception if the base tool doesn't) - In getMemberInfo() in CMFMember, this fails because the Anonymous User member isn't a memberdata object: for fieldname in memberinfo.keys(): memberinfo[fieldname] = member.getField(fieldname).getAccessor(member)() I wonder what the right behaviour is, though. In the base tool, it just does this and it seems to work: memberinfo = { 'fullname' : member.getProperty('fullname'), 'description' : member.getProperty('description'), 'location' : member.getProperty('location'), 'language' : member.getProperty('language'), 'home_page' : member.getProperty('home_page'), } I don't quite know what getProperty() is supposed to do on the anonymous user in plain CMF. I assume there is some crazy wrapping going on with self.getAuthenticatedMember(). Martin -- (muted) |