Users
Getting logged in user, manipulating user database
Getting logged in user
Getting the current logged in user and his/her username
from Products.CMFCore.utils import getToolByName
mt = getToolByName(self, 'portal_membership')
if mt.isAnonymousUser(): # the user has not logged in
pass
else:
member = mt.getAuthenticatedMember()
username = member.getUserName()
Delete users
Plone 2.5 way:try:
self.portal.acl_users.source_users.doDeleteUser("hr")
except KeyError:
# User does not exist
pass
Get member fullname
mt = getToolByName(self, 'portal_membership')
member = mt.getAuthenticatedMember()
fullname" : member.getProperty('fullname')
Get member email address
mt = getToolByName(self, 'portal_membership')
member = mt.getAuthenticatedMember()
fullname" : member.getProperty('fullname')
Manipulating user database
Manipulating users depends a bit what kind of user backend you have- Zope internal user database
- CMFMember or other product which presents users as site content
- External user database through PlonePAS (e.g. LDAP Windows user accounts)
def createMember(self, id, pw, email, roles=('Member',)):
pr = self.portal.portal_registration
member = pr.addMember(id, pw, roles, properties={ 'username': id, 'email' : email })
return memberCMFMember example:def createREAgent(self, id):
md = self.portal.portal_memberdata
tmp_id = id + '_tmp_id'
md.invokeFactory(type_name='REAgent', id=tmp_id)
return md._getOb(tmp_id)
Setting a member property on all members
This example shows how to change the editor for all users.
Below code is used from an external method, it was placed as 'switchToKupu.py' inside a product's 'Extensions/' directory. This was used to move users from Epoz to Kupu:
def switchToKupu(self):
out = []
# Collect members
pm = self.portal_membership
for memberId in pm.listMemberIds():
member = pm.getMemberById(memberId)
editor = member.getProperty('wysiwyg_editor', None)
if editor == 'Kupu':
out.append('%s: Kupu already selected, leaving alone' % memberId)
else:
member.setMemberProperties({'wysiwyg_editor': 'Kupu'})
out.append('%s: Kupu has been set' % memberId)
return "\n".join(out)
get email
mt = getToolByName(self, 'portal_membership')
if mt.isAnonymousUser():
return ''
else:
member = mt.getAuthenticatedMember()
return member.getProperty('email')
Thanks for getting me started!
/Per