diff --git a/canaille/models.py b/canaille/models.py index 201082d6..d2c7c416 100644 --- a/canaille/models.py +++ b/canaille/models.py @@ -129,6 +129,10 @@ class User(LDAPObject): password.encode("utf-8"), ) + def reload(self): + super().reload() + self._groups = None + @property def groups(self): if self._groups is None: diff --git a/tests/oidc/test_client_admin.py b/tests/oidc/test_client_admin.py index 5894bbc7..471ed175 100644 --- a/tests/oidc/test_client_admin.py +++ b/tests/oidc/test_client_admin.py @@ -171,7 +171,7 @@ def test_client_edit(testclient, client, logged_admin, other_client): ) not in res.flashes assert ("success", "The client has been edited.") in res.flashes - client = Client.get(client.id) + client.reload() data["audience"] = [client, other_client] for k, v in data.items(): client_value = getattr(client, k) @@ -246,7 +246,7 @@ def test_client_edit_preauth(testclient, client, logged_admin, other_client): res = res.forms["clientaddform"].submit(name="action", value="edit") assert ("success", "The client has been edited.") in res.flashes - client = Client.get(client.id) + client.reload() assert client.preconsent res = testclient.get("/admin/client/edit/" + client.client_id) @@ -254,7 +254,7 @@ def test_client_edit_preauth(testclient, client, logged_admin, other_client): res = res.forms["clientaddform"].submit(name="action", value="edit") assert ("success", "The client has been edited.") in res.flashes - client = Client.get(client.id) + client.reload() assert not client.preconsent diff --git a/tests/test_groups.py b/tests/test_groups.py index f2d29b84..94bbe48c 100644 --- a/tests/test_groups.py +++ b/tests/test_groups.py @@ -65,7 +65,7 @@ def test_group_deletion(testclient, slapd_server, slapd_connection): assert user.groups == [group] group.delete() - user = User.get(id=user.id) + user.reload() assert not user.groups user.delete() @@ -93,15 +93,15 @@ def test_set_groups(app, user, foo_group, bar_group): user.load_groups() user.groups = [foo_group, bar_group] - bar_group = Group.get(bar_group.id) + bar_group.reload() assert user in bar_group.members assert user.groups[1] == bar_group user.load_groups() user.groups = [foo_group] - foo_group = Group.get(foo_group.id) - bar_group = Group.get(bar_group.id) + foo_group.reload() + bar_group.reload() assert user in foo_group.members assert user not in bar_group.members @@ -123,7 +123,7 @@ def test_set_groups_with_leading_space_in_user_id_attribute(app, foo_group): user.load_groups() user.groups = [] - foo_group = Group.get(foo_group.id) + foo_group.reload() assert user.id not in foo_group.members user.delete() @@ -227,7 +227,7 @@ def test_edition_failed(testclient, logged_moderator, foo_group): form["display_name"] = "" res = form.submit(name="action", value="edit") res.mustcontain("Group edition failed.") - foo_group = Group.get(foo_group.id) + foo_group.reload() assert foo_group.display_name == "foo" diff --git a/tests/test_i18n.py b/tests/test_i18n.py index ef588c5f..a2ac1319 100644 --- a/tests/test_i18n.py +++ b/tests/test_i18n.py @@ -16,7 +16,7 @@ def test_preferred_language(slapd_server, testclient, logged_user): res = res.form.submit(name="action", value="edit") assert res.flashes == [("success", "Le profil a été mis à jour avec succès.")] res = res.follow() - logged_user = User.get(id=logged_user.id) + logged_user.reload() assert logged_user.preferred_language == "fr" assert res.form["preferred_language"].value == "fr" assert res.pyquery("html")[0].attrib["lang"] == "fr" @@ -27,7 +27,7 @@ def test_preferred_language(slapd_server, testclient, logged_user): res = res.form.submit(name="action", value="edit") assert res.flashes == [("success", "Profile updated successfuly.")] res = res.follow() - logged_user = User.get(id=logged_user.id) + logged_user.reload() assert logged_user.preferred_language == "en" assert res.form["preferred_language"].value == "en" assert res.pyquery("html")[0].attrib["lang"] == "en" @@ -38,7 +38,7 @@ def test_preferred_language(slapd_server, testclient, logged_user): res = res.form.submit(name="action", value="edit") assert res.flashes == [("success", "Profile updated successfuly.")] res = res.follow() - logged_user = User.get(id=logged_user.id) + logged_user.reload() assert logged_user.preferred_language is None assert res.form["preferred_language"].value == "auto" assert res.pyquery("html")[0].attrib["lang"] == "en" diff --git a/tests/test_profile_edition.py b/tests/test_profile_edition.py index 7035ffd5..5a693075 100644 --- a/tests/test_profile_edition.py +++ b/tests/test_profile_edition.py @@ -127,7 +127,7 @@ def test_edition( ], res.text res = res.follow() - logged_user = User.get(id=logged_user.id) + logged_user.reload() assert logged_user.given_name == ["given_name"] assert logged_user.family_name == ["family_name"] @@ -192,8 +192,8 @@ def test_field_permissions_none(testclient, slapd_server, logged_user): "csrf_token": res.form["csrf_token"].value, }, ) - user = User.get(id=logged_user.id) - assert user.phone_number == ["555-666-777"] + logged_user.reload() + assert logged_user.phone_number == ["555-666-777"] def test_field_permissions_read(testclient, slapd_server, logged_user): @@ -217,8 +217,8 @@ def test_field_permissions_read(testclient, slapd_server, logged_user): "csrf_token": res.form["csrf_token"].value, }, ) - user = User.get(id=logged_user.id) - assert user.phone_number == ["555-666-777"] + logged_user.reload() + assert logged_user.phone_number == ["555-666-777"] def test_field_permissions_write(testclient, slapd_server, logged_user): @@ -242,8 +242,8 @@ def test_field_permissions_write(testclient, slapd_server, logged_user): "csrf_token": res.form["csrf_token"].value, }, ) - user = User.get(id=logged_user.id) - assert user.phone_number == ["000-000-000"] + logged_user.reload() + assert logged_user.phone_number == ["000-000-000"] def test_simple_user_cannot_edit_other(testclient, logged_user): diff --git a/tests/test_profile_photo.py b/tests/test_profile_photo.py index 20f923d0..b7111be9 100644 --- a/tests/test_profile_photo.py +++ b/tests/test_profile_photo.py @@ -7,7 +7,7 @@ from webtest import Upload def test_photo(testclient, user, jpeg_photo): user.photo = [jpeg_photo] user.save() - user = User.get(id=user.id) + user.reload() res = testclient.get("/profile/user/photo") assert res.body == jpeg_photo @@ -61,7 +61,7 @@ def test_photo_on_profile_edition( assert ("success", "Profile updated successfuly.") in res.flashes res = res.follow() - logged_user = User.get(id=logged_user.id) + logged_user.reload() assert [jpeg_photo] == logged_user.photo @@ -72,7 +72,7 @@ def test_photo_on_profile_edition( assert ("success", "Profile updated successfuly.") in res.flashes res = res.follow() - logged_user = User.get(id=logged_user.id) + logged_user.reload() assert [jpeg_photo] == logged_user.photo @@ -83,9 +83,9 @@ def test_photo_on_profile_edition( assert ("success", "Profile updated successfuly.") in res.flashes res = res.follow() - logged_user = User.get(id=logged_user.id) + logged_user.reload() - assert [] == logged_user.photo + assert logged_user.photo == [] # Photo deletion AND upload, this should never happen res = testclient.get("/profile/user", status=200) @@ -95,7 +95,7 @@ def test_photo_on_profile_edition( assert ("success", "Profile updated successfuly.") in res.flashes res = res.follow() - logged_user = User.get(id=logged_user.id) + logged_user.reload() assert [] == logged_user.photo diff --git a/tests/test_profile_settings.py b/tests/test_profile_settings.py index 07ef1718..149864e8 100644 --- a/tests/test_profile_settings.py +++ b/tests/test_profile_settings.py @@ -27,7 +27,7 @@ def test_edition( assert res.flashes == [("success", "Profile updated successfuly.")] res = res.follow() - logged_user = User.get(id=logged_user.id) + logged_user.reload() logged_user.load_groups() assert logged_user.user_name == ["user"] @@ -73,7 +73,7 @@ def test_edition_without_groups( assert res.flashes == [("success", "Profile updated successfuly.")] res = res.follow() - logged_user = User.get(id=logged_user.id) + logged_user.reload() assert logged_user.user_name == ["user"] assert logged_user.check_password("correct horse battery staple")