diff --git a/CHANGES.txt b/CHANGES.txt index 4d11c6e3..de11cfde 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -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) diff --git a/Products/PlonePAS/plugins/ufactory.py b/Products/PlonePAS/plugins/ufactory.py index 10dbdfaf..2a27bdf0 100644 --- a/Products/PlonePAS/plugins/ufactory.py +++ b/Products/PlonePAS/plugins/ufactory.py @@ -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 @@ -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) diff --git a/Products/PlonePAS/tests/test_basic_ops.py b/Products/PlonePAS/tests/test_basic_ops.py index 46813ae9..865e3c7a 100644 --- a/Products/PlonePAS/tests/test_basic_ops.py +++ b/Products/PlonePAS/tests/test_basic_ops.py @@ -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')