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,29 +198,12 @@ class UserView(MasterView): # pylint: disable=abstract-method
|
||||||
user = super().objectify(form)
|
user = super().objectify(form)
|
||||||
|
|
||||||
# maybe update person name
|
# 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")
|
first_name = data.get("first_name")
|
||||||
last_name = data.get("last_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 first_name or last_name:
|
||||||
if user.person:
|
user.person.full_name = self.app.make_full_name(first_name, last_name)
|
||||||
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:
|
else:
|
||||||
user.person = auth.make_person(
|
|
||||||
first_name=first_name, last_name=last_name
|
|
||||||
)
|
|
||||||
elif user.person:
|
|
||||||
user.person = None
|
user.person = None
|
||||||
|
|
||||||
# maybe set user password
|
# maybe set user password
|
||||||
|
|
|
||||||
|
|
@ -202,12 +202,14 @@ class TestUserView(WebTestCase):
|
||||||
|
|
||||||
# form can update user password
|
# form can update user password
|
||||||
self.assertTrue(auth.check_user_password(barney, "testpass"))
|
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 = view.make_model_form(model_instance=barney)
|
||||||
form.validated = {"username": "barney", "set_password": "testpass2"}
|
form.validated = {"username": "barney", "set_password": "testpass2"}
|
||||||
with patch.object(view, "Session", return_value=self.session):
|
with patch.object(view, "Session", return_value=self.session):
|
||||||
user = view.objectify(form)
|
user = view.objectify(form)
|
||||||
self.assertIs(user, barney)
|
self.assertIs(user, barney)
|
||||||
self.assertTrue(auth.check_user_password(barney, "testpass2"))
|
self.assertTrue(auth.check_user_password(barney, "testpass2"))
|
||||||
|
self.assertFalse(auth.check_user_password(barney, "testpass"))
|
||||||
|
|
||||||
# form can update user roles
|
# form can update user roles
|
||||||
form = view.make_model_form(model_instance=barney)
|
form = view.make_model_form(model_instance=barney)
|
||||||
|
|
@ -248,10 +250,12 @@ class TestUserView(WebTestCase):
|
||||||
# nb. re-attach the person
|
# nb. re-attach the person
|
||||||
barney.person = self.session.query(model.Person).one()
|
barney.person = self.session.query(model.Person).one()
|
||||||
|
|
||||||
# person name is updated
|
# nb. first/last name was blanked out in last edit
|
||||||
self.assertEqual(barney.person.first_name, "Barney")
|
self.assertEqual(barney.person.first_name, "")
|
||||||
self.assertEqual(barney.person.last_name, "Rubble")
|
self.assertEqual(barney.person.last_name, "")
|
||||||
self.assertEqual(barney.person.full_name, "Barney Rubble")
|
self.assertEqual(barney.person.full_name, "Barney Rubble")
|
||||||
|
|
||||||
|
# person name is updated
|
||||||
form = view.make_model_form(model_instance=barney)
|
form = view.make_model_form(model_instance=barney)
|
||||||
form.validated = {
|
form.validated = {
|
||||||
"username": "barney",
|
"username": "barney",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue