diff --git a/src/wuttaweb/views/users.py b/src/wuttaweb/views/users.py index 69096f7..9333b37 100644 --- a/src/wuttaweb/views/users.py +++ b/src/wuttaweb/views/users.py @@ -198,30 +198,13 @@ class UserView(MasterView): # pylint: disable=abstract-method user = super().objectify(form) # maybe update person name - if "first_name" in form or "last_name" in form: + if "first_name" in form and "last_name" in form: first_name = data.get("first_name") last_name = data.get("last_name") - if self.creating and (first_name or last_name): - user.person = auth.make_person( - first_name=first_name, last_name=last_name - ) - elif self.editing: - if first_name or last_name: - if user.person: - person = user.person - if "first_name" in form: - person.first_name = first_name - if "last_name" in form: - person.last_name = last_name - person.full_name = self.app.make_full_name( - person.first_name, person.last_name - ) - else: - user.person = auth.make_person( - first_name=first_name, last_name=last_name - ) - elif user.person: - user.person = None + if first_name or last_name: + user.person.full_name = self.app.make_full_name(first_name, last_name) + else: + user.person = None # maybe set user password if "set_password" in form and data.get("set_password"): diff --git a/tests/views/test_users.py b/tests/views/test_users.py index c345b97..2fe08aa 100644 --- a/tests/views/test_users.py +++ b/tests/views/test_users.py @@ -202,12 +202,14 @@ class TestUserView(WebTestCase): # form can update user password self.assertTrue(auth.check_user_password(barney, "testpass")) + self.assertFalse(auth.check_user_password(barney, "testpass2")) form = view.make_model_form(model_instance=barney) form.validated = {"username": "barney", "set_password": "testpass2"} with patch.object(view, "Session", return_value=self.session): user = view.objectify(form) self.assertIs(user, barney) self.assertTrue(auth.check_user_password(barney, "testpass2")) + self.assertFalse(auth.check_user_password(barney, "testpass")) # form can update user roles form = view.make_model_form(model_instance=barney) @@ -248,10 +250,12 @@ class TestUserView(WebTestCase): # nb. re-attach the person barney.person = self.session.query(model.Person).one() - # person name is updated - self.assertEqual(barney.person.first_name, "Barney") - self.assertEqual(barney.person.last_name, "Rubble") + # nb. first/last name was blanked out in last edit + self.assertEqual(barney.person.first_name, "") + self.assertEqual(barney.person.last_name, "") self.assertEqual(barney.person.full_name, "Barney Rubble") + + # person name is updated form = view.make_model_form(model_instance=barney) form.validated = { "username": "barney",