fix: fix first_name, last_name handling for User form
since those fields are now association proxies in the data model
This commit is contained in:
parent
48f96220b6
commit
6743fc4731
2 changed files with 12 additions and 25 deletions
|
|
@ -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"):
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue