Skip to content

Commit

Permalink
Fix PloneUser.setProperties method when properties is provided as an …
Browse files Browse the repository at this point in the history
…argument
  • Loading branch information
davidjb committed Feb 26, 2014
1 parent 5ab593c commit 18b3cdb
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 3 deletions.
5 changes: 4 additions & 1 deletion CHANGES.txt
Expand Up @@ -4,7 +4,10 @@ Changelog
4.1.3 (unreleased)
------------------

- Nothing changed yet.
- Allow ``properties`` to be passed to ``PloneUser.setProperties``.
This was previously ignored as ``setProperties`` solely utilised
keyword arguments.
[davidjb]


4.1.2 (2014-01-27)
Expand Down
10 changes: 8 additions & 2 deletions Products/PlonePAS/plugins/ufactory.py
Expand Up @@ -200,6 +200,12 @@ def allowed(self, object, object_roles=None):
return None

def setProperties(self, properties=None, **kw):
""" Set properties on a given user.
Accepts either keyword arguments or a mapping for the ``properties``
argument. The ``properties`` argument will take precedence over
keyword arguments if both are provided; no merging will occur.
"""
if properties is None:
properties = kw

Expand All @@ -208,10 +214,10 @@ def setProperties(self, properties=None, **kw):
continue

update = {}
for (key, value) in kw.items():
for (key, value) in properties.items():
if sheet.hasProperty(key):
update[key] = value
del kw[key]
del properties[key]

if update:
sheet.setProperties(self, update)
Expand Down
10 changes: 10 additions & 0 deletions Products/PlonePAS/tests/test_basic_ops.py
Expand Up @@ -141,3 +141,13 @@ def test_setpw(self):
break
self.assertTrue(result)

def test_setProperties(self):
self.createUser()
user = self.acl_users.getUser('created_user')
user.setProperties(fullname='Test User', email='test@example.org')
self.assertEqual(user.getProperty('fullname'), 'Test User')
self.assertEqual(user.getProperty('email'), 'test@example.org')

user.setProperties(properties={'fullname': 'Test User2', 'email': 'test2@example.org'})
self.assertEqual(user.getProperty('fullname'), 'Test User2')
self.assertEqual(user.getProperty('email'), 'test2@example.org')

0 comments on commit 18b3cdb

Please sign in to comment.